]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0_Infineon_Boot_Kits_IAR_Keil/system_XMC1300.c
Create full Keil project for XMC boot kit (not yet tested).
[freertos] / FreeRTOS / Demo / CORTEX_M0_Infineon_Boot_Kits_IAR_Keil / system_XMC1300.c
1 /******************************************************************************\r
2  * @file     system_XMC1300.c\r
3  * @brief    Device specific initialization for the XMC1300-Series according \r
4  * to CMSIS\r
5  * @version  V1.2\r
6  * @date     13 Dec 2012\r
7  *\r
8  * @note\r
9  * Copyright (C) 2012-2013 Infineon Technologies AG. All rights reserved.\r
10 \r
11  *\r
12  * @par\r
13  * Infineon Technologies AG (Infineon) is supplying this software for use with \r
14  * Infineon\92s microcontrollers.\r
15  *   \r
16  * This file can be freely distributed within development tools that are \r
17  * supporting such microcontrollers.\r
18  *  \r
19  *\r
20  * @par\r
21  * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
22  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
23  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
24  * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,\r
25  * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
26  *\r
27  ******************************************************************************/\r
28 /*\r
29  * ************************** Change history *********************************\r
30  * V1.2, 13 Dec 2012, PKB, Created this table, Changed System_ to system_\r
31  */\r
32 \r
33 #include "system_XMC1300.h"\r
34 #include <XMC1300.h>\r
35 \r
36 /*---------------------------------------------------------------------------\r
37  Extern definitions \r
38  *--------------------------------------------------------------------------*/\r
39 extern uint32_t AllowClkInitByStartup(void);\r
40 \r
41 /*----------------------------------------------------------------------------\r
42   Clock Global defines\r
43  *----------------------------------------------------------------------------*/\r
44 #define DCO_DCLK       64000000UL\r
45 \r
46 /*----------------------------------------------------------------------------\r
47   Clock Variable definitions\r
48  *----------------------------------------------------------------------------*/\r
49 /*!< System Clock Frequency (Core Clock)*/\r
50 uint32_t SystemCoreClock;\r
51 \r
52 \r
53 /**\r
54   * @brief  Setup the microcontroller system.\r
55   * @param  None\r
56   * @retval None\r
57   */\r
58 void SystemInit(void)\r
59 {    \r
60   /*\r
61    * Clock tree setup by CMSIS routines is allowed only in the absence of DAVE\r
62    * Clock app.\r
63    */ \r
64   if(AllowClkInitByStartup()){ \r
65   /* Do not change default values of IDIV,FDIV and RTCCLKSEL */\r
66   /* ====== Default configuration ======= */\r
67   /*\r
68    * MCLK    = DCO_DCLK\r
69    * PCLK    = MCLK\r
70    * RTC CLK = Standby clock\r
71    */\r
72   }\r
73 }\r
74 \r
75 /**\r
76   * @brief  Update SystemCoreClock according to Clock Register Values\r
77   * @note   -  \r
78   * @param  None\r
79   * @retval None\r
80   */\r
81 void SystemCoreClockUpdate(void)\r
82 {\r
83   uint32_t IDIV, CLKCR;\r
84 \r
85   CLKCR = SCU_CLOCK -> CLKCR;\r
86   \r
87   IDIV = (CLKCR & SCU_CLOCK_CLKCR_IDIV_Msk) >> SCU_CLOCK_CLKCR_IDIV_Pos;\r
88   \r
89   if(IDIV)\r
90   {\r
91     SystemCoreClock = DCO_DCLK / (2 * IDIV );\r
92   }\r
93   else\r
94   {\r
95     /* Divider bypassed */\r
96     SystemCoreClock = DCO_DCLK;\r
97   }\r
98 }\r
99 \r