1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <title>Compiler Control</title>
7 <title>CMSIS-CORE: Compiler Control</title>
8 <link href="tabs.css" rel="stylesheet" type="text/css"/>
9 <link href="cmsis.css" rel="stylesheet" type="text/css" />
10 <script type="text/javascript" src="jquery.js"></script>
11 <script type="text/javascript" src="dynsections.js"></script>
12 <script type="text/javascript" src="printComponentTabs.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtree.js"></script>
16 <script type="text/javascript">
17 $(document).ready(initResizable);
18 $(window).load(resizeHeight);
20 <link href="search/search.css" rel="stylesheet" type="text/css"/>
21 <script type="text/javascript" src="search/search.js"></script>
22 <script type="text/javascript">
23 $(document).ready(function() { searchBox.OnSelectItem(0); });
27 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
29 <table cellspacing="0" cellpadding="0">
31 <tr style="height: 46px;">
32 <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
33 <td style="padding-left: 0.5em;">
34 <div id="projectname">CMSIS-CORE
35  <span id="projectnumber">Version 5.0.0 - Beta</span>
37 <div id="projectbrief">CMSIS-CORE support for Cortex-M processor-based devices</div>
43 <!-- end header part -->
44 <div id="CMSISnav" class="tabs1">
46 <script type="text/javascript">
48 writeComponentTabs.call(this);
53 <!-- Generated by Doxygen 1.8.6 -->
54 <script type="text/javascript">
55 var searchBox = new SearchBox("searchBox", "search",false,'Search');
57 <div id="navrow1" class="tabs">
59 <li><a href="index.html"><span>Main Page</span></a></li>
60 <li><a href="pages.html"><span>Usage and Description</span></a></li>
61 <li><a href="modules.html"><span>Reference</span></a></li>
63 <div id="MSearchBox" class="MSearchBoxInactive">
65 <img id="MSearchSelect" src="search/mag_sel.png"
66 onmouseover="return searchBox.OnSearchSelectShow()"
67 onmouseout="return searchBox.OnSearchSelectHide()"
69 <input type="text" id="MSearchField" value="Search" accesskey="S"
70 onfocus="searchBox.OnSearchFieldFocus(true)"
71 onblur="searchBox.OnSearchFieldFocus(false)"
72 onkeyup="searchBox.OnSearchFieldChange(event)"/>
73 </span><span class="right">
74 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
81 <div id="side-nav" class="ui-resizable side-nav-resizable">
83 <div id="nav-tree-contents">
84 <div id="nav-sync" class="sync"></div>
87 <div id="splitbar" style="-moz-user-select:none;"
88 class="ui-resizable-handle">
91 <script type="text/javascript">
92 $(document).ready(function(){initNavTree('group__compiler__conntrol__gr.html','');});
94 <div id="doc-content">
95 <!-- window showing the filter options -->
96 <div id="MSearchSelectWindow"
97 onmouseover="return searchBox.OnSearchSelectShow()"
98 onmouseout="return searchBox.OnSearchSelectHide()"
99 onkeydown="return searchBox.OnSearchSelectKey(event)">
100 <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Pages</a></div>
102 <!-- iframe showing the search results (closed by default) -->
103 <div id="MSearchResultsWindow">
104 <iframe src="javascript:void(0)" frameborder="0"
105 name="MSearchResults" id="MSearchResults">
110 <div class="summary">
111 <a href="#define-members">Macros</a> </div>
112 <div class="headertitle">
113 <div class="title">Compiler Control</div> </div>
115 <div class="contents">
117 <p>Compiler specific #defines in CMSIS-Core.
118 <a href="#details">More...</a></p>
119 <table class="memberdecls">
120 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
121 Macros</h2></td></tr>
122 <tr class="memitem:ga1378040bcf22428955c6e3ce9c2053cd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#ga1378040bcf22428955c6e3ce9c2053cd">__ASM</a></td></tr>
123 <tr class="memdesc:ga1378040bcf22428955c6e3ce9c2053cd"><td class="mdescLeft"> </td><td class="mdescRight">Keyword passing information from the compiler to the assembler. <a href="#ga1378040bcf22428955c6e3ce9c2053cd">More...</a><br/></td></tr>
124 <tr class="separator:ga1378040bcf22428955c6e3ce9c2053cd"><td class="memSeparator" colspan="2"> </td></tr>
125 <tr class="memitem:gade2d8d7118f8ff49547f60aa0c3382bb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#gade2d8d7118f8ff49547f60aa0c3382bb">__INLINE</a></td></tr>
126 <tr class="memdesc:gade2d8d7118f8ff49547f60aa0c3382bb"><td class="mdescLeft"> </td><td class="mdescRight">Keyword suggesting to the compiler that it compiles a C or C++ function inline. <a href="#gade2d8d7118f8ff49547f60aa0c3382bb">More...</a><br/></td></tr>
127 <tr class="separator:gade2d8d7118f8ff49547f60aa0c3382bb"><td class="memSeparator" colspan="2"> </td></tr>
128 <tr class="memitem:gaba87361bfad2ae52cfe2f40c1a1dbf9c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a></td></tr>
129 <tr class="memdesc:gaba87361bfad2ae52cfe2f40c1a1dbf9c"><td class="mdescLeft"> </td><td class="mdescRight">Keyword suggesting to the compiler that it compiles a C or C++ function statically inline. <a href="#gaba87361bfad2ae52cfe2f40c1a1dbf9c">More...</a><br/></td></tr>
130 <tr class="separator:gaba87361bfad2ae52cfe2f40c1a1dbf9c"><td class="memSeparator" colspan="2"> </td></tr>
131 <tr class="memitem:ga153a4a31b276a9758959580538720a51"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#ga153a4a31b276a9758959580538720a51">__NO_RETURN</a></td></tr>
132 <tr class="memdesc:ga153a4a31b276a9758959580538720a51"><td class="mdescLeft"> </td><td class="mdescRight">Informs the compiler that the function does not return. <a href="#ga153a4a31b276a9758959580538720a51">More...</a><br/></td></tr>
133 <tr class="separator:ga153a4a31b276a9758959580538720a51"><td class="memSeparator" colspan="2"> </td></tr>
134 <tr class="memitem:ga3e40e4c553fc11588f7a4c2a19e789e0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#ga3e40e4c553fc11588f7a4c2a19e789e0">__USED</a></td></tr>
135 <tr class="memdesc:ga3e40e4c553fc11588f7a4c2a19e789e0"><td class="mdescLeft"> </td><td class="mdescRight">Informs the compiler that a static variable is to be retained in the object file. <a href="#ga3e40e4c553fc11588f7a4c2a19e789e0">More...</a><br/></td></tr>
136 <tr class="separator:ga3e40e4c553fc11588f7a4c2a19e789e0"><td class="memSeparator" colspan="2"> </td></tr>
137 <tr class="memitem:gac607bf387b29162be6a9b77fc7999539"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#gac607bf387b29162be6a9b77fc7999539">__WEAK</a></td></tr>
138 <tr class="memdesc:gac607bf387b29162be6a9b77fc7999539"><td class="mdescLeft"> </td><td class="mdescRight">Keyword instructing the compiler to export a function or variable weakly. <a href="#gac607bf387b29162be6a9b77fc7999539">More...</a><br/></td></tr>
139 <tr class="separator:gac607bf387b29162be6a9b77fc7999539"><td class="memSeparator" colspan="2"> </td></tr>
140 <tr class="memitem:ga27fd2ec6767ca1ab66d36b5cc0103268"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#ga27fd2ec6767ca1ab66d36b5cc0103268">__UNALIGNED_UINT32</a></td></tr>
141 <tr class="memdesc:ga27fd2ec6767ca1ab66d36b5cc0103268"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to unaligned uint32_t variable. <a href="#ga27fd2ec6767ca1ab66d36b5cc0103268">More...</a><br/></td></tr>
142 <tr class="separator:ga27fd2ec6767ca1ab66d36b5cc0103268"><td class="memSeparator" colspan="2"> </td></tr>
143 <tr class="memitem:ga0c58caa5a273e2c21924509a45f8b849"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#ga0c58caa5a273e2c21924509a45f8b849">__ALIGNED</a></td></tr>
144 <tr class="memdesc:ga0c58caa5a273e2c21924509a45f8b849"><td class="mdescLeft"> </td><td class="mdescRight">Alignment of a variable. <a href="#ga0c58caa5a273e2c21924509a45f8b849">More...</a><br/></td></tr>
145 <tr class="separator:ga0c58caa5a273e2c21924509a45f8b849"><td class="memSeparator" colspan="2"> </td></tr>
146 <tr class="memitem:gabe8996d3d985ee1529475443cc635bf1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__conntrol__gr.html#gabe8996d3d985ee1529475443cc635bf1">__PACKED</a></td></tr>
147 <tr class="memdesc:gabe8996d3d985ee1529475443cc635bf1"><td class="mdescLeft"> </td><td class="mdescRight">Smallest possible alignment. <a href="#gabe8996d3d985ee1529475443cc635bf1">More...</a><br/></td></tr>
148 <tr class="separator:gabe8996d3d985ee1529475443cc635bf1"><td class="memSeparator" colspan="2"> </td></tr>
150 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
151 <p>CMSIS-Core provides a set of compiler control #defines that produce a consistent behavior, no matter which compiler is used to build the application code. </p>
152 <h2 class="groupheader">Macro Definition Documentation</h2>
153 <a class="anchor" id="ga0c58caa5a273e2c21924509a45f8b849"></a>
154 <div class="memitem">
155 <div class="memproto">
156 <table class="memname">
158 <td class="memname">#define __ALIGNED</td>
161 </div><div class="memdoc">
162 <p>Specifies a minimum alignment for a variable or structure field, measured in bytes.</p>
163 <p><b> Code Example:</b> </p>
164 <div class="fragment"><div class="line">uint32_t val32 <a class="code" href="group__compiler__conntrol__gr.html#ga0c58caa5a273e2c21924509a45f8b849">__ALIGNED</a>(4);</div>
165 </div><!-- fragment -->
168 <a class="anchor" id="ga1378040bcf22428955c6e3ce9c2053cd"></a>
169 <div class="memitem">
170 <div class="memproto">
171 <table class="memname">
173 <td class="memname">#define __ASM</td>
176 </div><div class="memdoc">
177 <p>The <b>__ASM</b> keyword can declare or define an embedded assembly function or incorporate inline assembly into a function (shown in the code example below).</p>
178 <p><b>Code Example:</b> </p>
179 <div class="fragment"><div class="line"><span class="comment">// Reverse bit order of value</span></div>
180 <div class="line"> </div>
181 <div class="line">__attribute__( ( always_inline ) ) <a class="code" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> uint32_t <a class="code" href="group__intrinsic__CPU__gr.html#gad6f9f297f6b91a995ee199fbc796b863">__RBIT</a>(uint32_t value)</div>
182 <div class="line">{</div>
183 <div class="line"> uint32_t result;</div>
184 <div class="line"> </div>
185 <div class="line"> <a class="code" href="group__compiler__conntrol__gr.html#ga1378040bcf22428955c6e3ce9c2053cd">__ASM</a> <span class="keyword">volatile</span> (<span class="stringliteral">"rbit %0, %1"</span> : <span class="stringliteral">"=r"</span> (result) : <span class="stringliteral">"r"</span> (value) );</div>
186 <div class="line"> <span class="keywordflow">return</span>(result);</div>
187 <div class="line">}</div>
188 </div><!-- fragment -->
191 <a class="anchor" id="gade2d8d7118f8ff49547f60aa0c3382bb"></a>
192 <div class="memitem">
193 <div class="memproto">
194 <table class="memname">
196 <td class="memname">#define __INLINE</td>
199 </div><div class="memdoc">
200 <p>Inline functions offer a trade-off between code size and performance. By default, the compiler decides for itself whether to inline code or not.</p>
201 <p>In most circumstances, the decision to inline a particular function is best left to the compiler. However, you can give the compiler a hint that a function is required to be inlined by using <b>__INLINE</b>. Still, the compiler can decide not to inline the function.</p>
202 <p><b> Code Example:</b> </p>
203 <div class="fragment"><div class="line"><span class="keyword">const</span> uint32_t led_mask[] = {1UL << 4, 1UL << 5, 1UL << 6, 1UL << 7};</div>
204 <div class="line"> </div>
205 <div class="line"><span class="comment">/*------------------------------------------------------------------------------</span></div>
206 <div class="line"><span class="comment"> Switch on LEDs</span></div>
207 <div class="line"><span class="comment"> *------------------------------------------------------------------------------*/</span></div>
208 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#gade2d8d7118f8ff49547f60aa0c3382bb">__INLINE</a> <span class="keyword">static</span> <span class="keywordtype">void</span> LED_On (uint32_t led) {</div>
209 <div class="line"> </div>
210 <div class="line"> PTD->PCOR = led_mask[led];</div>
211 <div class="line">}</div>
212 </div><!-- fragment -->
215 <a class="anchor" id="ga153a4a31b276a9758959580538720a51"></a>
216 <div class="memitem">
217 <div class="memproto">
218 <table class="memname">
220 <td class="memname">#define __NO_RETURN</td>
223 </div><div class="memdoc">
224 <p>The compiler can perform optimizations by removing code that is never reached. If the function reaches an explicit or implicit return, <b>__NO_RETURN</b> is ignored and the compiler generates a warning.</p>
225 <p><b> Code Example:</b> </p>
226 <div class="fragment"><div class="line"><span class="comment">// OS idle demon (running when no other thread is ready to run).</span></div>
227 <div class="line"> </div>
228 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#ga153a4a31b276a9758959580538720a51">__NO_RETURN</a> <span class="keywordtype">void</span> os_idle_demon (<span class="keywordtype">void</span>);</div>
229 </div><!-- fragment -->
232 <a class="anchor" id="gabe8996d3d985ee1529475443cc635bf1"></a>
233 <div class="memitem">
234 <div class="memproto">
235 <table class="memname">
237 <td class="memname">#define __PACKED</td>
240 </div><div class="memdoc">
241 <p>Specifies that a type must have the smallest possible alignment.</p>
242 <p><b> Code Example:</b> </p>
243 <div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="group__compiler__conntrol__gr.html#gabe8996d3d985ee1529475443cc635bf1">__PACKED</a> {</div>
244 <div class="line"> uint8_t len;</div>
245 <div class="line"> uint8_t type;</div>
246 <div class="line"> uint16_t langid;</div>
247 <div class="line">} desc_langid;</div>
248 </div><!-- fragment -->
251 <a class="anchor" id="gaba87361bfad2ae52cfe2f40c1a1dbf9c"></a>
252 <div class="memitem">
253 <div class="memproto">
254 <table class="memname">
256 <td class="memname">#define __STATIC_INLINE</td>
259 </div><div class="memdoc">
260 <p>As for <a class="el" href="group__compiler__conntrol__gr.html#gade2d8d7118f8ff49547f60aa0c3382bb">__INLINE</a>, the compiler may choose to inline the function. In addition, the compiler will add a locally scoped version of the function in the resulting object file. As you can have one static version of the function per object file, you may end up with multiple definitions of the same function. This will require more space.</p>
261 <p><b> Code Example:</b> </p>
262 <div class="fragment"><div class="line"><span class="comment">// Set Priority Grouping</span></div>
263 <div class="line"> </div>
264 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> <span class="keywordtype">void</span> <a class="code" href="group__NVIC__gr.html#gad78f447e891789b4d8f2e5b21eeda354">NVIC_SetPriorityGrouping</a>(uint32_t PriorityGroup)</div>
265 <div class="line">{</div>
266 <div class="line"> uint32_t reg_value;</div>
267 <div class="line"> uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); <span class="comment">/* only values 0..7 are used */</span></div>
268 <div class="line"> </div>
269 <div class="line"> reg_value = SCB->AIRCR; <span class="comment">/* read old register configuration */</span></div>
270 <div class="line"> reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk); <span class="comment">/* clear bits to change */</span></div>
271 <div class="line"> reg_value = (reg_value |</div>
272 <div class="line"> ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |</div>
273 <div class="line"> (PriorityGroupTmp << 8)); <span class="comment">/* Insert write key and priority group */</span></div>
274 <div class="line"> SCB->AIRCR = reg_value;</div>
275 <div class="line">}</div>
276 </div><!-- fragment -->
279 <a class="anchor" id="ga27fd2ec6767ca1ab66d36b5cc0103268"></a>
280 <div class="memitem">
281 <div class="memproto">
282 <table class="memname">
284 <td class="memname">#define __UNALIGNED_UINT32</td>
287 </div><div class="memdoc">
288 <p>Defines a pointer to a uint32_t from an address that does not need to be aligned. This can then be used in read/write operations. The compiler will generate the appropriate access (aligned or non-aligned) depending on the underlying ARM processor core and compiler settings.</p>
289 <p><b> Code Example:</b> </p>
290 <div class="fragment"><div class="line">uint32_t val32;</div>
291 <div class="line"> </div>
292 <div class="line"><span class="keywordtype">void</span> test (uint8_t *ptr) {</div>
293 <div class="line"> <a class="code" href="group__compiler__conntrol__gr.html#ga27fd2ec6767ca1ab66d36b5cc0103268">__UNALIGNED_UINT32</a>(ptr) = val32;</div>
294 <div class="line">}</div>
295 </div><!-- fragment -->
298 <a class="anchor" id="ga3e40e4c553fc11588f7a4c2a19e789e0"></a>
299 <div class="memitem">
300 <div class="memproto">
301 <table class="memname">
303 <td class="memname">#define __USED</td>
306 </div><div class="memdoc">
307 <p>Data marked with <b>__USED</b> is tagged in the object file to avoid removal by linker unused section removal. Static variables marked as used are emitted to a single section, in the order they are declared.</p>
308 <p><b> Code Example:</b> </p>
309 <div class="fragment"><div class="line"><span class="comment">/* Export following defines to debugger. */</span></div>
310 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#ga3e40e4c553fc11588f7a4c2a19e789e0">__USED</a> uint32_t <span class="keyword">const</span> CMSIS_RTOS_API_Version = osCMSIS;</div>
311 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#ga3e40e4c553fc11588f7a4c2a19e789e0">__USED</a> uint32_t <span class="keyword">const</span> CMSIS_RTOS_RTX_Version = osCMSIS_RTX;</div>
312 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#ga3e40e4c553fc11588f7a4c2a19e789e0">__USED</a> uint32_t <span class="keyword">const</span> os_clockrate = OS_TICK;</div>
313 <div class="line"><a class="code" href="group__compiler__conntrol__gr.html#ga3e40e4c553fc11588f7a4c2a19e789e0">__USED</a> uint32_t <span class="keyword">const</span> os_timernum = 0;</div>
314 </div><!-- fragment -->
317 <a class="anchor" id="gac607bf387b29162be6a9b77fc7999539"></a>
318 <div class="memitem">
319 <div class="memproto">
320 <table class="memname">
322 <td class="memname">#define __WEAK</td>
325 </div><div class="memdoc">
326 <p>Functions defined with <b>__WEAK</b> export their symbols weakly. A weakly defined function behaves like a normally defined function unless a non-weakly defined function of the same name is linked into the same image. If both a non-weakly defined function and a weakly defined function exist in the same image then all calls to the function resolve to call the non-weak function.</p>
327 <p>Functions declared with <b>__WEAK</b> and then defined without <b>__WEAK</b> behave as non-weak functions.</p>
328 <p><b> Code Example:</b> </p>
329 <div class="fragment"><div class="line"><a class="code" href="group__compiler__conntrol__gr.html#gac607bf387b29162be6a9b77fc7999539">__WEAK</a> <span class="keywordtype">void</span> <a class="code" href="group__system__init__gr.html#ga93f514700ccf00d08dbdcff7f1224eb2">SystemInit</a>(<span class="keywordtype">void</span>)</div>
330 <div class="line">{</div>
331 <div class="line"> SystemCoreSetup();</div>
332 <div class="line"> SystemCoreClockSetup(); </div>
333 <div class="line">}</div>
334 </div><!-- fragment -->
337 </div><!-- contents -->
338 </div><!-- doc-content -->
339 <!-- start footer part -->
340 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
342 <li class="footer">Generated on Tue Sep 13 2016 16:45:26 for CMSIS-CORE by ARM Ltd. All rights reserved.
344 <a href="http://www.doxygen.org/index.html">
345 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6