]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MB9A310_IAR_Keil/Fujitu_source/system_mb9af31x.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_MB9A310_IAR_Keil / Fujitu_source / system_mb9af31x.h
1 /************************************************************************/\r
2 /*               (C) Fujitsu Semiconductor Europe GmbH (FSEU)           */\r
3 /*                                                                      */\r
4 /* The following software deliverable is intended for and must only be  */\r
5 /* used for reference and in an evaluation laboratory environment.      */\r
6 /* It is provided on an as-is basis without charge and is subject to    */\r
7 /* alterations.                                                         */\r
8 /* It is the user's obligation to fully test the software in its        */\r
9 /* environment and to ensure proper functionality, qualification and    */\r
10 /* compliance with component specifications.                            */\r
11 /*                                                                      */\r
12 /* In the event the software deliverable includes the use of open       */\r
13 /* source components, the provisions of the governing open source       */\r
14 /* license agreement shall apply with respect to such software          */\r
15 /* deliverable.                                                         */\r
16 /* FSEU does not warrant that the deliverables do not infringe any      */\r
17 /* third party intellectual property right (IPR). In the event that     */\r
18 /* the deliverables infringe a third party IPR it is the sole           */\r
19 /* responsibility of the customer to obtain necessary licenses to       */\r
20 /* continue the usage of the deliverable.                               */\r
21 /*                                                                      */\r
22 /* To the maximum extent permitted by applicable law FSEU disclaims all */\r
23 /* warranties, whether express or implied, in particular, but not       */\r
24 /* limited to, warranties of merchantability and fitness for a          */\r
25 /* particular purpose for which the deliverable is not designated.      */\r
26 /*                                                                      */\r
27 /* To the maximum extent permitted by applicable law, FSEU's liability  */\r
28 /* is restricted to intentional misconduct and gross negligence.        */\r
29 /* FSEU is not liable for consequential damages.                        */\r
30 /*                                                                      */\r
31 /* (V1.5)                                                               */\r
32 /************************************************************************/\r
33 /** \file system_mb9af31x.h\r
34  **\r
35  ** Headerfile for FM3 system parameters\r
36  **\r
37  ** User clock definitions can be done for the following clock settings:\r
38  ** - CLOCK_SETUP : Execute the clock settings form the settings below in\r
39  **                 SystemInit()\r
40  ** - __CLKMO : External clock frequency for main oscillion\r
41  ** - __CLKSO : External clock frequency for sub oscillion\r
42  ** - SCM_CTL : System Clock Mode Control Register\r
43  ** - BSC_PSR : Base Clock Prescaler Register\r
44  ** - APBC0_PSR : APB0 Prescaler Register\r
45  ** - APBC1_PSR : APB1 Prescaler Register\r
46  ** - APBC2_PSR : APB2 Prescaler Register\r
47  ** - SWC_PSR : Software Watchdog Clock Prescaler Register\r
48  ** - TTC_PSR : Trace Clock Prescaler Register\r
49  ** - CSW_TMR : Clock Stabilization Wait Time Register\r
50  ** - PSW_TMR : PLL Clock Stabilization Wait Time Setup Register\r
51  ** - PLL_CTL1 : PLL Control Register 1\r
52  ** - PLL_CTL2 : PLL Control Register 2\r
53  **\r
54  ** The register settings are check for correct values of reserved bits.\r
55  ** Otherwise a preprocessor error is output and stops the build process.\r
56  ** Furthermore the 'master clock' is retrieved from the register settings\r
57  ** and the system clock (HCLK) is calculated from the Base Clock Prescaler\r
58  ** Register (BSC_PSR). This value is used for the global CMSIS variable\r
59  ** #SystemCoreClock. Also the absolute external, PLL and HCL freqeuncy is\r
60  ** is checked. Note that not all possible wrong setting are checked! The\r
61  ** user has to take care to fulfill the settings stated in the according\r
62  ** device's data sheet!\r
63  **\r
64  ** User definition for Hardware Watchdog:\r
65  ** - HWWD_DISABLE : Disables Hardware Watchdog in SystemInit()\r
66  **\r
67  ** User definition for CR Trimming:\r
68  ** - CR_TRIM_SETUP : Enables CR trimming in SystemInit()\r
69  **\r
70  ** History:\r
71  ** 2011-05-16 V1.0 MWi original version\r
72  *****************************************************************************/\r
73 \r
74 #ifndef _SYSTEM_MB9AF31X_H_\r
75 #define _SYSTEM_MB9AF31X_H_\r
76 \r
77 /******************************************************************************/\r
78 /* Include files                                                              */\r
79 /******************************************************************************/\r
80    \r
81 #include <stdint.h>\r
82 \r
83 /******************************************************************************/\r
84 /* Global pre-processor symbols/macros ('define')                             */\r
85 /******************************************************************************/\r
86    \r
87 /******************************************************************************/\r
88 /*                                                                            */\r
89 /*                      START OF USER SETTINGS HERE                           */\r
90 /*                      ===========================                           */   \r
91 /*                                                                            */\r
92 /*                 All lines with '<<<' can be set by user.                   */\r
93 /*                                                                            */\r
94 /******************************************************************************/\r
95 \r
96 /**\r
97  ******************************************************************************\r
98  ** \brief Clock Setup Enable\r
99  **        <i>(USER SETTING)</i>\r
100  **\r
101  ** - 0 = No clock setup done by system_mb9xfxxx.c\r
102  ** - 1 = Clock setup done by system_mb9xfxxx.c\r
103  ******************************************************************************/ \r
104 #define CLOCK_SETUP               1   // <<< Define clock setup here\r
105 \r
106 /**\r
107  ******************************************************************************\r
108  ** \brief External Main Clock Frequency (in Hz, [value]UL)\r
109  **        <i>(USER SETTING)</i>\r
110  ******************************************************************************/    \r
111 #define __CLKMO        ( 4000000UL)   // <<< External   4MHz Crystal\r
112 \r
113 /**\r
114  ******************************************************************************\r
115  ** \brief External Sub Clock Frequency (in Hz, [value]UL)\r
116  **        <i>(USER SETTING)</i>\r
117  ******************************************************************************/  \r
118 #define __CLKSO        (   32768UL)   // <<<  External  32KHz Crystal\r
119 \r
120 /**\r
121  ******************************************************************************\r
122  ** \brief System Clock Mode Control Register value definition\r
123  **        <i>(USER SETTING)</i>\r
124  ** \r
125  ** SCM_CTL\r
126  **\r
127  ** Bit#7-5 : RCS[2:0]\r
128  ** - 0 = Internal high-speed CR oscillation (default)\r
129  ** - 1 = Main oscillation clock\r
130  ** - 2 = PLL oscillation clock\r
131  ** - 3 = (not allowed)\r
132  ** - 4 = Internal low-speed CR oscillation\r
133  ** - 5 = Sub clock oscillation\r
134  ** - 6 = (not allowed)\r
135  ** - 7 = (not allowed)\r
136  **\r
137  ** Bit#4 : PLLE\r
138  ** - 0 = Disable PLL (default)\r
139  ** - 1 = Enable PLL\r
140  **\r
141  ** Bit#3 : SOSCE\r
142  ** - 0 = Disable sub oscillation (default)\r
143  ** - 1 = Enable sub oscillation\r
144  **\r
145  ** Bit#2 : (reserved)\r
146  **\r
147  ** Bit#1 : MOSCE\r
148  ** - 0 = Disable main oscillation (default)\r
149  ** - 1 = Enable main oscillation  \r
150  **\r
151  ** Bit#0 : (reserved)  \r
152  ******************************************************************************/ \r
153 #define SCM_CTL_Val           0x00000052    // <<< Define SCM_CTL here\r
154 \r
155 /**\r
156  ******************************************************************************\r
157  ** \brief Base Clock Prescaler Register value definition\r
158  **        <i>(USER SETTING)</i>\r
159  **\r
160  ** BSC_PSR\r
161  **\r
162  ** Bit#7-3 : (reserved)\r
163  **\r
164  ** Bit#2-0 : BSR[2:0]\r
165  ** - 0 = HCLK = Master Clock\r
166  ** - 1 = HCLK = Master Clock / 2\r
167  ** - 2 = HCLK = Master Clock / 3\r
168  ** - 3 = HCLK = Master Clock / 4\r
169  ** - 4 = HCLK = Master Clock / 6\r
170  ** - 5 = HCLK = Master Clock / 8\r
171  ** - 6 = HCLK = Master Clock / 16\r
172  ** - 7 = (reserved)\r
173  ******************************************************************************/    \r
174 #define BSC_PSR_Val           0x00000000    // <<< Define BSC_PSR here\r
175  \r
176 /**\r
177  ******************************************************************************\r
178  ** \brief APB0 Prescaler Register value definition\r
179  **        <i>(USER SETTING)</i>\r
180  ** \r
181  ** APBC0_PSR\r
182  **\r
183  ** Bit#7-2 : (reserved)\r
184  **\r
185  ** Bit#1-0 : BSR[2:0] \r
186  ** - 0 = PCLK0 = HCLK\r
187  ** - 1 = PCLK0 = HCLK / 2\r
188  ** - 2 = PCLK0 = HCLK / 4\r
189  ** - 3 = PCLK0 = HCLK / 8\r
190  ******************************************************************************/    \r
191 #define APBC0_PSR_Val         0x00000001     // <<< Define APBC0_PSR here\r
192    \r
193 /**\r
194  ******************************************************************************\r
195  ** \brief APB1 Prescaler Register value definition\r
196  **        <i>(USER SETTING)</i>\r
197  ** \r
198  ** APBC1_PSR\r
199  **\r
200  ** Bit#7 : APBC1EN\r
201  ** - 0 = Disable PCLK1 output\r
202  ** - 1 = Enables PCLK1 (default)\r
203  **\r
204  ** Bit#6-5 : (reserved)\r
205  **\r
206  ** Bit#4 : APBC1RST\r
207  ** - 0 = APB1 bus reset, inactive (default)\r
208  ** - 1 = APB1 bus reset, active  \r
209  **\r
210  ** Bit#3-2 : (reserved)\r
211  **\r
212  ** Bit#1-0 : APBC1[2:0]\r
213  ** - 0 = PCLK1 = HCLK\r
214  ** - 1 = PCLK1 = HCLK / 2\r
215  ** - 2 = PCLK1 = HCLK / 4\r
216  ** - 3 = PCLK1 = HCLK / 8\r
217  ******************************************************************************/     \r
218 #define APBC1_PSR_Val         0x00000081    // <<< Define APBC1_PSR here\r
219    \r
220 /**\r
221  ******************************************************************************\r
222  ** \brief APB2 Prescaler Register value definition\r
223  **        <i>(USER SETTING)</i>\r
224  ** \r
225  ** APBC2_PSR\r
226  **\r
227  ** Bit#7 : APBC2EN\r
228  ** - 0 = Disable PCLK2 output\r
229  ** - 1 = Enables PCLK2 (default)\r
230  **\r
231  ** Bit#6-5 : (reserved)\r
232  ** \r
233  ** Bit#4 : APBC2RST\r
234  ** - 0 = APB2 bus reset, inactive (default)\r
235  ** - 1 = APB2 bus reset, active  \r
236  **\r
237  ** Bit#3-2 : (reserved)\r
238  **\r
239  ** Bit#1-0 : APBC2[1:0]\r
240  ** - 0 = PCLK2 = HCLK\r
241  ** - 1 = PCLK2 = HCLK / 2\r
242  ** - 2 = PCLK2 = HCLK / 4\r
243  ** - 3 = PCLK2 = HCLK / 8\r
244  ******************************************************************************/    \r
245 #define APBC2_PSR_Val         0x00000081    // <<< Define APBC2_PSR here\r
246 \r
247 /**\r
248  ******************************************************************************\r
249  ** \brief Software Watchdog Clock Prescaler Register value definition\r
250  **        <i>(USER SETTING)</i>\r
251  ** \r
252  ** SWC_PSR\r
253  **\r
254  ** Bit#7 : TESTB\r
255  ** - 0 = (not allowed)\r
256  ** - 1 = (always write "1" to this bit)\r
257  **\r
258  ** Bit#6-2 : (reserved)\r
259  **\r
260  ** Bit#1-0 : SWDS[2:0]\r
261  ** - 0 = SWDGOGCLK = PCLK0\r
262  ** - 1 = SWDGOGCLK = PCLK0 / 2\r
263  ** - 2 = SWDGOGCLK = PCLK0 / 4\r
264  ** - 3 = SWDGOGCLK = PCLK0 / 8\r
265  ******************************************************************************/  \r
266 #define SWC_PSR_Val           0x00000003    // <<< Define SWC_PSR here\r
267 \r
268 /**\r
269  ******************************************************************************\r
270  ** \brief Trace Clock Prescaler Register value definition\r
271  **        <i>(USER SETTING)</i>\r
272  ** \r
273  ** TTC_PSR\r
274  **\r
275  ** Bit#7-1 : (reserved)\r
276  **\r
277  ** Bit#0 : TTC\r
278  ** - 0 = TPIUCLK = HCLK\r
279  ** - 1 = TPIUCLK = HCLK / 2\r
280  ******************************************************************************/  \r
281 #define TTC_PSR_Val           0x00000000    // <<< Define TTC_PSR here\r
282  \r
283 /**\r
284  ******************************************************************************\r
285  ** \brief Clock Stabilization Wait Time Register value definition\r
286  **        <i>(USER SETTING)</i>\r
287  ** \r
288  ** CSW_TMR\r
289  **\r
290  ** Bit#7 : (reserved)\r
291  **\r
292  ** Bit#6-4 : SOWT[2:0]\r
293  ** - 0 = ~10.3 ms (default)\r
294  ** - 1 = ~20.5 ms\r
295  ** - 2 = ~41 ms\r
296  ** - 3 = ~82 ms\r
297  ** - 4 = ~164 ms\r
298  ** - 5 = ~327 ms\r
299  ** - 6 = ~655 ms\r
300  ** - 7 = ~1.31 s \r
301  **\r
302  ** Bit#3-0 : MOWT[3:0]\r
303  ** - 0 = ~500 ns (default)\r
304  ** - 1 = ~8 us\r
305  ** - 2 = ~16 us\r
306  ** - 3 = ~32 us\r
307  ** - 4 = ~64 us\r
308  ** - 5 = ~128 us\r
309  ** - 6 = ~256 us\r
310  ** - 7 = ~512 us\r
311  ** - 8 = ~1.0 ms\r
312  ** - 9 = ~2.0 ms\r
313  ** - 10 = ~4.0 ms\r
314  ** - 11 = ~8.0 ms\r
315  ** - 12 = ~33.0 ms\r
316  ** - 13 = ~131 ms\r
317  ** - 14 = ~524 ms\r
318  ** - 15 = ~2.0 s\r
319  ******************************************************************************/     \r
320 #define CSW_TMR_Val           0x0000005C    // <<< Define CSW_TMR here\r
321 \r
322 /**\r
323  ******************************************************************************\r
324  ** \brief PLL Clock Stabilization Wait Time Setup Register value definition\r
325  **        <i>(USER SETTING)</i>\r
326  ** \r
327  ** PSW_TMR\r
328  **\r
329  ** Bit#7-5 : (reserved)\r
330  **\r
331  ** Bit#4 : PINC\r
332  ** - 0 = Selects CLKMO (main oscillation) (default)\r
333  ** - 1 = (setting diabled)\r
334  **\r
335  ** Bit#3 : (reserved)\r
336  **\r
337  ** Bit#2-0 : POWT[2:0]\r
338  ** - 0 = ~128 us (default) \r
339  ** - 1 = ~256 us\r
340  ** - 2 = ~512 us\r
341  ** - 3 = ~1.02 ms\r
342  ** - 4 = ~2.05 ms\r
343  ** - 5 = ~4.10 ms\r
344  ** - 6 = ~8.20 ms\r
345  ** - 7 = ~16.40 ms\r
346  ******************************************************************************/    \r
347 #define PSW_TMR_Val           0x00000000    // <<< Define PSW_TMR here\r
348 \r
349 /**\r
350  ******************************************************************************\r
351  ** \brief PLL Control Register 1 value definition\r
352  **        <i>(USER SETTING)</i>\r
353  ** \r
354  ** PLL_CTL1\r
355  **\r
356  ** Bit#7-4 : PLLK[3:0]\r
357  ** - 0 = Division(PLLK) = 1/1 (default)\r
358  ** - 1 = Division(PLLK) = 1/2\r
359  ** - 2 = Division(PLLK) = 1/3\r
360  ** - . . .\r
361  ** - 15 = Division(PLLK) = 1/16\r
362  **\r
363  ** Bit#3-0 : PLLM[3:0]\r
364  ** - 0 = Division(PLLM) = 1/1 (default)\r
365  ** - 1 = Division(PLLM) = 1/2\r
366  ** - 2 = Division(PLLM) = 1/3\r
367  ** - . . .\r
368  ** - 15 = Division(PLLM) = 1/16\r
369  ******************************************************************************/    \r
370 #define PLL_CTL1_Val          0x00000004    // <<< Define PLL_CTL1 here\r
371 \r
372 /**\r
373  ******************************************************************************\r
374  ** \brief PLL Control Register 2 value definition\r
375  **        <i>(USER SETTING)</i>\r
376  ** \r
377  ** PLL_CTL2\r
378  **\r
379  ** Bit#7-6 : (reserved)\r
380  **\r
381  ** Bit#5-0 : PLLM[5:0]\r
382  ** - 0 = Division(PLLN) = 1/1 (default)\r
383  ** - 1 = Division(PLLN) = 1/2\r
384  ** - 2 = Division(PLLN) = 1/3\r
385  ** - . . .\r
386  ** - 63 = Division(PLLN) = 1/64\r
387  ******************************************************************************/    \r
388 #define PLL_CTL2_Val          0x00000009    // <<< Define PLL_CTL2 here\r
389    \r
390 /**\r
391  ******************************************************************************\r
392  ** \brief Hardware Watchdog disable definition\r
393  **        <i>(USER SETTING)</i>\r
394  **\r
395  ** - 0 = Hardware Watchdog enable\r
396  ** - 1 = Hardware Watchdog disable\r
397  ******************************************************************************/  \r
398 #define HWWD_DISABLE          1   // <<< Define HW Watach dog enable here\r
399 \r
400 /**\r
401  ******************************************************************************\r
402  ** \brief Trimming CR\r
403  **        <i>(USER SETTING)</i>\r
404  **\r
405  ** - 0 = CR is not trimmed at startup\r
406  ** - 1 = CR is trimmed at startup\r
407  ******************************************************************************/  \r
408 #define CR_TRIM_SETUP         1   // <<< Define CR trimming at startup enable here\r
409 \r
410    \r
411 /******************************************************************************/\r
412 /*                                                                            */\r
413 /*                         END OF USER SETTINGS HERE                          */\r
414 /*                         =========================                          */ \r
415 /*                                                                            */\r
416 /******************************************************************************/\r
417 \r
418 /******************************************************************************/\r
419 /* Device dependent System Clock absolute maximum ranges                      */\r
420 /******************************************************************************/\r
421 \r
422 /**\r
423  ******************************************************************************\r
424  ** \brief Internal High-Speed CR Oscillator Frequency (in Hz, [value]UL)\r
425  **        <i>(USER SETTING)</i>\r
426  ******************************************************************************/    \r
427 #define __CLKHC        ( 4000000UL)         /* Internal   4MHz CR Oscillator  */\r
428    \r
429 /**\r
430  ******************************************************************************\r
431  ** \brief Internal Low-Speed CR Oscillator Frequency (in Hz, [value]UL)\r
432  **        <i>(USER SETTING)</i>\r
433  ******************************************************************************/ \r
434 #define __CLKLC        (  100000UL)         /* Internal 100KHz CR Oscillator  */  \r
435 \r
436 /**\r
437  ******************************************************************************\r
438  ** \brief Any case minimum Main Clock frequency (in Hz, [value]UL)\r
439  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
440  ******************************************************************************/ \r
441 #define __CLKMOMIN    (  4000000UL)\r
442    \r
443 /**\r
444  ******************************************************************************\r
445  ** \brief Maximum Main Clock frequency using external clock\r
446  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
447  ******************************************************************************/ \r
448 #define __CLKMOMAX    ( 48000000UL)\r
449 \r
450 /**\r
451  ******************************************************************************\r
452  ** \brief Any case minimum Sub Clock frequency\r
453  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
454  ******************************************************************************/ \r
455 #define __CLKSOMIN    (    32000UL)\r
456    \r
457 /**\r
458  ******************************************************************************\r
459  ** \brief Maximum Sub Clock frequency using external clock\r
460  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
461  ******************************************************************************/ \r
462 #define __CLKSOMAX    (   100000UL)\r
463    \r
464 /**\r
465  ******************************************************************************\r
466  ** \brief Absolute minimum PLL input frequency\r
467  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
468  ******************************************************************************/ \r
469 #define __PLLCLKINMIN (  4000000UL)\r
470    \r
471 /**\r
472  ******************************************************************************\r
473  ** \brief Absolute maximum PLL input frequency\r
474  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
475  ******************************************************************************/ \r
476 #define __PLLCLKINMAX ( 16000000UL)\r
477 \r
478 /**\r
479  ******************************************************************************\r
480  ** \brief Absolute minimum PLL oscillation frequency\r
481  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
482  ******************************************************************************/ \r
483 #define __PLLCLKMIN   (200000000UL)\r
484    \r
485 /**\r
486  ******************************************************************************\r
487  ** \brief Absolute maximum PLL oscillation  frequency\r
488  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
489  ******************************************************************************/ \r
490 #define __PLLCLKMAX   (300000000UL)\r
491 \r
492 /**\r
493  ******************************************************************************\r
494  ** \brief Absolute maximum System Clock frequency (HCLK)\r
495  **        <i>(DEVICE DEPENDENT SETTING)</i>\r
496  ******************************************************************************/ \r
497 #define __HCLKMAX     ( 40000000UL)\r
498 \r
499 /**\r
500  ******************************************************************************\r
501  ** \brief Preprocessor macro for checking range (clock settings)\r
502  ******************************************************************************/ \r
503 #define CHECK_RANGE(val, min, max)                ((val < min) || (val > max))\r
504    \r
505 /**\r
506  ******************************************************************************\r
507  ** \brief Preprocessor macro for checking bits with mask (clock settings)\r
508  ******************************************************************************/ \r
509 #define CHECK_RSVD(val, mask)                     (val & mask)\r
510 \r
511 \r
512 /******************************************************************************/\r
513 /* Check register settings                                                    */\r
514 /******************************************************************************/\r
515 #if (CHECK_RSVD((SCM_CTL_Val),    ~0x000000FA))\r
516    #error "SCM_CTL: Invalid values of reserved bits!"\r
517 #endif\r
518 \r
519 #if ((SCM_CTL_Val & 0xE0) == 0x40) && ((SCM_CTL_Val & 0x10) != 0x10)\r
520    #error "SCM_CTL: CLKPLL is selected but PLL is not enabled!"\r
521 #endif\r
522 \r
523 #if (CHECK_RSVD((CSW_TMR_Val),    ~0x0000007F))\r
524    #error "CSW_TMR: Invalid values of reserved bits!"\r
525 #endif\r
526 \r
527 #if ((SCM_CTL_Val & 0x10))       /* if PLL is used */\r
528   #if (CHECK_RSVD((PSW_TMR_val),  ~0x00000007))\r
529      #error "PSW_TMR: Invalid values of reserved bits!"\r
530   #endif\r
531 \r
532   #if (CHECK_RSVD((PLL_CTL1_Val), ~0x000000FF))\r
533      #error "PLL_CTL1: Invalid values of reserved bits!"\r
534   #endif\r
535 \r
536   #if (CHECK_RSVD((PLL_CTL2_Val), ~0x0000003F))\r
537     #error "PLL_CTL2: Invalid values of reserved bits!"\r
538   #endif\r
539 #endif\r
540 \r
541 #if (CHECK_RSVD((BSC_PSR_Val),    ~0x00000007))\r
542   #error "BSC_PSR: Invalid values of reserved bits!"\r
543 #endif\r
544 \r
545 #if (CHECK_RSVD((APBC0_PSR_Val),  ~0x00000003))\r
546   #error "APBC0_PSR: Invalid values of reserved bits!"\r
547 #endif\r
548 \r
549 #if (CHECK_RSVD((APBC1_PSR_Val),  ~0x00000083))\r
550   #error "APBC1_PSR: Invalid values of reserved bits!"\r
551 #endif\r
552 \r
553 #if (CHECK_RSVD((APBC2_PSR_Val),  ~0x00000083))\r
554   #error "APBC2_PSR: Invalid values of reserved bits!"\r
555 #endif\r
556 \r
557 #if (CHECK_RSVD((SWC_PSR_Val),    ~0x00000003))\r
558   #error "SWC_PSR: Invalid values of reserved bits!"\r
559 #endif\r
560 \r
561 #if (CHECK_RSVD((TTC_PSR_Val),    ~0x00000001))\r
562   #error "TTC_PSR: Invalid values of reserved bits!"\r
563 #endif\r
564 \r
565 /******************************************************************************/\r
566 /* Define clocks with checking settings                                       */\r
567 /******************************************************************************/\r
568 \r
569 /**\r
570  ******************************************************************************\r
571  ** \brief Calculate PLL K factor from settings\r
572  ******************************************************************************/\r
573 #define __PLLK         (((PLL_CTL1_Val >> 4) & 0x0F) + 1)\r
574 \r
575 /**\r
576  ******************************************************************************\r
577  ** \brief Calculate PLL N factor from settings\r
578  ******************************************************************************/\r
579 #define __PLLN         (((PLL_CTL2_Val     ) & 0x1F) + 1)\r
580 \r
581 /**\r
582  ******************************************************************************\r
583  ** \brief Calculate PLL M factor from settings\r
584  ******************************************************************************/\r
585 #define __PLLM         (((PLL_CTL1_Val     ) & 0x0F) + 1)\r
586 \r
587 /**\r
588  ******************************************************************************\r
589  ** \brief Calculate PLL output frequency from settings\r
590  ******************************************************************************/\r
591 #define __PLLCLK       ((__CLKMO  * __PLLN) / __PLLK)\r
592 \r
593 /******************************************************************************/\r
594 /* Determine core clock frequency according to settings                       */\r
595 /******************************************************************************/\r
596 \r
597 /**\r
598  ******************************************************************************\r
599  ** \brief Define Master Clock from settings\r
600  ******************************************************************************/\r
601 #if   (((SCM_CTL_Val >> 5) & 0x07) == 0)\r
602   #define __MASTERCLK     (__CLKHC)\r
603 #elif (((SCM_CTL_Val >> 5) & 0x07) == 1)\r
604   #define __MASTERCLK     (__CLKMO)\r
605 #elif (((SCM_CTL_Val >> 5) & 0x07) == 2)\r
606   #define __MASTERCLK     (__PLLCLK)\r
607 #elif (((SCM_CTL_Val >> 5) & 0x07) == 4)\r
608   #define __MASTERCLK     (__CLKLC)\r
609 #elif (((SCM_CTL_Val >> 5) & 0x07) == 5)\r
610   #define __MASTERCLK     (__CLKSO)\r
611 #else\r
612   #define __MASTERCLK     (0UL)\r
613 #endif\r
614 \r
615 /**\r
616  ******************************************************************************\r
617  ** \brief Define System Clock Frequency (Core Clock) from settings\r
618  ******************************************************************************/\r
619 #if   ((BSC_PSR_Val & 0x07) == 0)\r
620   #define __HCLK         (__MASTERCLK / 1)\r
621 #elif ((BSC_PSR_Val & 0x07) == 1)\r
622   #define __HCLK         (__MASTERCLK / 2)\r
623 #elif ((BSC_PSR_Val & 0x07) == 2)\r
624   #define __HCLK         (__MASTERCLK / 3)\r
625 #elif ((BSC_PSR_Val & 0x07) == 3)\r
626   #define __HCLK         (__MASTERCLK / 4)\r
627 #elif ((BSC_PSR_Val & 0x07) == 4)\r
628   #define __HCLK         (__MASTERCLK / 6)\r
629 #elif ((BSC_PSR_Val & 0x07) == 5)\r
630   #define __HCLK         (__MASTERCLK / 8)\r
631 #elif ((BSC_PSR_Val & 0x07) == 6)\r
632   #define __HCLK         (__MASTERCLK /16)\r
633 #else\r
634   #define __HCLK         (0UL)\r
635 #endif\r
636 \r
637 /******************************************************************************/\r
638 /* HCLK range check                                                           */\r
639 /******************************************************************************/\r
640 #if (CHECK_RANGE(__CLKMO, __CLKMOMIN, __CLKMOMAX) != 0)\r
641   #error "Main Oscillator Clock (CLKMO) out of range!"\r
642 #endif   \r
643 \r
644 #if (CHECK_RANGE(__CLKSO, __CLKSOMIN, __CLKSOMAX) != 0)\r
645   #error "Sub Oscillator Clock (CLKMO) out of range!"\r
646 #endif   \r
647 \r
648 #if (CHECK_RANGE((__CLKMO / __PLLK), __PLLCLKINMIN, __PLLCLKINMAX) != 0)\r
649   #error "PLL input frequency out of range!"\r
650 #endif  \r
651 \r
652 #if (CHECK_RANGE(((__CLKMO * __PLLN * __PLLM) / __PLLK), __PLLCLKMIN, __PLLCLKMAX) != 0)\r
653   #error "PLL oscillation frequency out of range!"\r
654 #endif  \r
655    \r
656 #if (CHECK_RANGE(__HCLK, 0, __HCLKMAX) != 0)\r
657   #error "System Clock (HCLK) out of range!"\r
658 #endif\r
659    \r
660 /******************************************************************************/\r
661 /* Global function prototypes ('extern', definition in C source)              */\r
662 /******************************************************************************/\r
663 \r
664 extern uint32_t SystemCoreClock;          // System Clock Frequency (Core Clock)\r
665    \r
666 extern void SystemInit (void);            // Initialize the system\r
667 \r
668 extern void SystemCoreClockUpdate (void); // Update SystemCoreClock variable\r
669 \r
670 #ifdef __cplusplus\r
671 }\r
672 #endif\r
673 \r
674 #endif /* __SYSTEM_MB9AF31X_H */\r