]> begriffs open source - cmsis/blob - CMSIS/Documentation/Core/html/system_c_pg.html
adding documentation for section 'Core'
[cmsis] / CMSIS / Documentation / Core / html / system_c_pg.html
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">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <title>System Configuration Files system_&lt;device&gt;.c and system_&lt;device&gt;.h</title>
7 <title>CMSIS-CORE: System Configuration Files system_&lt;device&gt;.c and system_&lt;device&gt;.h</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);
19 </script>
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); });
24 </script>
25 </head>
26 <body>
27 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
28 <div id="titlearea">
29 <table cellspacing="0" cellpadding="0">
30  <tbody>
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    &#160;<span id="projectnumber">Version 5.0.0 - Beta</span>
36    </div>
37    <div id="projectbrief">CMSIS-CORE support for Cortex-M processor-based devices</div>
38   </td>
39  </tr>
40  </tbody>
41 </table>
42 </div>
43 <!-- end header part -->
44 <div id="CMSISnav" class="tabs1">
45     <ul class="tablist">
46       <script type="text/javascript">
47                 <!--
48                 writeComponentTabs.call(this);
49                 //-->
50       </script>
51           </ul>
52 </div>
53 <!-- Generated by Doxygen 1.8.6 -->
54 <script type="text/javascript">
55 var searchBox = new SearchBox("searchBox", "search",false,'Search');
56 </script>
57   <div id="navrow1" class="tabs">
58     <ul class="tablist">
59       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
60       <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
61       <li><a href="modules.html"><span>Reference</span></a></li>
62       <li>
63         <div id="MSearchBox" class="MSearchBoxInactive">
64         <span class="left">
65           <img id="MSearchSelect" src="search/mag_sel.png"
66                onmouseover="return searchBox.OnSearchSelectShow()"
67                onmouseout="return searchBox.OnSearchSelectHide()"
68                alt=""/>
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>
75           </span>
76         </div>
77       </li>
78     </ul>
79   </div>
80 </div><!-- top -->
81 <div id="side-nav" class="ui-resizable side-nav-resizable">
82   <div id="nav-tree">
83     <div id="nav-tree-contents">
84       <div id="nav-sync" class="sync"></div>
85     </div>
86   </div>
87   <div id="splitbar" style="-moz-user-select:none;" 
88        class="ui-resizable-handle">
89   </div>
90 </div>
91 <script type="text/javascript">
92 $(document).ready(function(){initNavTree('system_c_pg.html','');});
93 </script>
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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
101
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">
106 </iframe>
107 </div>
108
109 <div class="header">
110   <div class="headertitle">
111 <div class="title">System Configuration Files system_&lt;device&gt;.c and system_&lt;device&gt;.h </div>  </div>
112 </div><!--header-->
113 <div class="contents">
114 <div class="textblock"><p>The <a class="el" href="system_c_pg.html">System Configuration Files system_&lt;device&gt;.c and system_&lt;device&gt;.h</a> provides as a minimum the functions described under <a class="el" href="group__system__init__gr.html">System and Clock Configuration</a>. These functions are device specific and need adaptations. In addition, the file might have configuration settings for the device such as XTAL frequency or PLL prescaler settings.</p>
115 <p>For devices with external memory BUS the system_&lt;device&gt;.c also configures the BUS system.</p>
116 <p>The silicon vendor might expose other functions (i.e. for power configuration) in the system_&lt;device&gt;.c file. In case of additional features the function prototypes need to be added to the system_&lt;device&gt;.h header file.</p>
117 <h1><a class="anchor" id="system_Device_sec"></a>
118 system_Device.c Template File</h1>
119 <p>The <a class="el" href="system_c_pg.html#system_Device_sec">system_Device.c Template File</a> for the Cortex-M3 is shown below.</p>
120 <pre class="fragment">/**************************************************************************//**
121  * @file     system_&lt;Device&gt;.c
122  * @brief    CMSIS Cortex-M# Device Peripheral Access Layer Source File for
123  *           Device &lt;Device&gt;
124  * @version  V5.00
125  * @date     02. March 2016
126  ******************************************************************************/
127 /*
128  * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
129  *
130  * SPDX-License-Identifier: Apache-2.0
131  *
132  * Licensed under the Apache License, Version 2.0 (the License); you may
133  * not use this file except in compliance with the License.
134  * You may obtain a copy of the License at
135  *
136  * http://www.apache.org/licenses/LICENSE-2.0
137  *
138  * Unless required by applicable law or agreed to in writing, software
139  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
140  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
141  * See the License for the specific language governing permissions and
142  * limitations under the License.
143  */
144
145 #include &lt;stdint.h&gt;
146 #include "&lt;Device&gt;.h"
147
148
149 /*----------------------------------------------------------------------------
150   Define clocks
151  *----------------------------------------------------------------------------*/
152 /* ToDo: add here your necessary defines for device initialization
153          following is an example for different system frequencies */
154 #define XTAL            (12000000U)       /* Oscillator frequency             */
155
156 #define SYSTEM_CLOCK    (5 * XTAL)
157
158
159 /*----------------------------------------------------------------------------
160   System Core Clock Variable
161  *----------------------------------------------------------------------------*/
162 /* ToDo: initialize SystemCoreClock with the system core clock frequency value
163          achieved after system intitialization.
164          This means system core clock frequency after call to SystemInit() */
165 uint32_t SystemCoreClock = __SYSTEM_CLOCK;  /* System Clock Frequency (Core Clock)*/
166
167
168
169 /*----------------------------------------------------------------------------
170   Clock functions
171  *----------------------------------------------------------------------------*/
172
173 void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
174 {
175 /* ToDo: add code to calculate the system frequency based upon the current
176          register settings.
177          This function can be used to retrieve the system core clock frequeny
178          after user changed register sittings. */
179   SystemCoreClock = SYSTEM_CLOCK;
180 }
181
182 void SystemInit (void)
183 {
184 /* ToDo: add code to initialize the system
185          do not use global variables because this function is called before
186          reaching pre-main. RW section maybe overwritten afterwards. */
187   SystemCoreClock = SYSTEM_CLOCK;
188 }
189 </pre><h1><a class="anchor" id="system_Device_h_sec"></a>
190 system_Device.h Template File</h1>
191 <p>The system_&lt;device&gt;.h header file contains prototypes to access the public functions in the system_&lt;device&gt;.c file. The <a class="el" href="system_c_pg.html#system_Device_h_sec">system_Device.h Template File</a> is shown below.</p>
192 <pre class="fragment">/**************************************************************************//**
193  * @file     system_&lt;Device&gt;.h
194  * @brief    CMSIS Cortex-M# Device Peripheral Access Layer Header File for
195  *           Device &lt;Device&gt;
196  * @version  V5.00
197  * @date     02. March 2016
198  ******************************************************************************/
199 /*
200  * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
201  *
202  * SPDX-License-Identifier: Apache-2.0
203  *
204  * Licensed under the Apache License, Version 2.0 (the License); you may
205  * not use this file except in compliance with the License.
206  * You may obtain a copy of the License at
207  *
208  * http://www.apache.org/licenses/LICENSE-2.0
209  *
210  * Unless required by applicable law or agreed to in writing, software
211  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
212  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
213  * See the License for the specific language governing permissions and
214  * limitations under the License.
215  */
216
217 #ifndef SYSTEM_&lt;Device&gt;_H   /* ToDo: replace '&lt;Device&gt;' with your device name */
218 #define SYSTEM_&lt;Device&gt;_H
219
220 #ifdef __cplusplus
221 extern "C" {
222 #endif
223
224 #include &lt;stdint.h&gt;
225
226 extern uint32_t SystemCoreClock;     /*!&lt; System Clock Frequency (Core Clock)  */
227
228
229 /**
230   \brief Setup the microcontroller system.
231
232    Initialize the System and update the SystemCoreClock variable.
233  */
234 extern void SystemInit (void);
235
236
237 /**
238   \brief  Update SystemCoreClock variable.
239
240    Updates the SystemCoreClock with current core Clock retrieved from cpu registers.
241  */
242 extern void SystemCoreClockUpdate (void);
243
244
245 #ifdef __cplusplus
246 }
247 #endif
248
249 #endif /* SYSTEM_&lt;Device&gt;_H */
250 </pre> </div></div><!-- contents -->
251 </div><!-- doc-content -->
252 <!-- start footer part -->
253 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
254   <ul>
255     <li class="navelem"><a class="el" href="templates_pg.html">Template Files</a></li>
256     <li class="footer">Generated on Tue Sep 13 2016 16:45:26 for CMSIS-CORE by ARM Ltd. All rights reserved.
257         <!--
258     <a href="http://www.doxygen.org/index.html">
259     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
260         -->
261         </li>
262   </ul>
263 </div>
264 </body>
265 </html>