]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/Device/Nuvoton/M2351/Include/system_M2351.h
Add Cortex M23 GCC and IAR ports. Add demo projects for Nuvoton NuMaker-PFM-2351.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC / Nuvoton_Code / Device / Nuvoton / M2351 / Include / system_M2351.h
1 /**************************************************************************//**\r
2  * @file     system_M2351.h\r
3  * @version  V3.00\r
4  * @brief    System Setting Header File\r
5  *\r
6  * @note\r
7  * Copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.\r
8  *\r
9  ******************************************************************************/\r
10 #ifndef __SYSTEM_M2351_H__\r
11 #define __SYSTEM_M2351_H__\r
12 \r
13 #ifdef __cplusplus\r
14 extern "C" {\r
15 #endif\r
16 /*---------------------------------------------------------------------------------------------------------*/\r
17 /* Macro Definition                                                                                        */\r
18 /*---------------------------------------------------------------------------------------------------------*/\r
19 #ifndef DEBUG_PORT\r
20 # define DEBUG_PORT      UART0       /*!< Select Debug Port which is used for retarget.c to output debug message to UART */\r
21 #endif\r
22 \r
23 \r
24 /* Init ETM Interface Multi-function Pins */\r
25 #define ETM_INIT()  { \\r
26     SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC0MFP_ETM_TRACE_Msk | SYS_GPC_MFPL_PC1MFP_ETM_TRACE_Msk | \\r
27     SYS_GPC_MFPL_PC2MFP_ETM_TRACE_Msk | SYS_GPC_MFPL_PC3MFP_ETM_TRACE_Msk | \\r
28                      SYS_GPC_MFPL_PC4MFP_ETM_TRACE_Msk); \\r
29     SYS->GPC_MFPL |= SYS_GPC_MFPL_PC0MFP_ETM_TRACE_CLK | SYS_GPC_MFPL_PC1MFP_ETM_TRACE_DATA0 | \\r
30                      SYS_GPC_MFPL_PC2MFP_ETM_TRACE_DATA1 | SYS_GPC_MFPL_PC3MFP_ETM_TRACE_DATA2 | \\r
31                      SYS_GPC_MFPL_PC4MFP_ETM_TRACE_DATA3;}\r
32 \r
33 \r
34 \r
35 \r
36 \r
37 /**\r
38  *\r
39  * @details    This is used to enable PLL to speed up booting at startup. Remove it will cause system using\r
40  *             default clock source (External crystal or internal 22.1184MHz IRC).\r
41  *             Enable this option will cause system booting in 72MHz(By XTAL) or 71.8848MHz(By IRC22M) according to\r
42  *             user configuration setting in CONFIG0\r
43  *\r
44  */\r
45 \r
46 /*\r
47 #define INIT_SYSCLK_AT_BOOTING\r
48 */\r
49 \r
50 /*----------------------------------------------------------------------------\r
51   Define SYSCLK\r
52  *----------------------------------------------------------------------------*/\r
53 #define __HXT       (12000000UL)    /*!< External Crystal Clock Frequency     */\r
54 #define __LIRC      (10000UL)       /*!< Internal 10K RC Oscillator Frequency */\r
55 #define __HIRC      (12000000UL)    /*!< Internal 12M RC Oscillator Frequency */\r
56 #define __LXT       (32768UL)       /*!< External Crystal Clock Frequency 32.768KHz */\r
57 #define __HSI       (48000000UL)    /*!< PLL Output Clock Frequency */\r
58 #define __HIRC48    (48000000UL)    /*!< Internal 48M RC Oscillator Frequency */\r
59 #define __LIRC32    (32000UL)       /*!< Internal 32K RC Oscillator Frequency */\r
60 \r
61 \r
62 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3L)\r
63 # if defined (__ICCARM__)\r
64 #  define __NONSECURE_ENTRY       __cmse_nonsecure_entry\r
65 #  define __NONSECURE_ENTRY_WEAK  __cmse_nonsecure_entry //__weak\r
66 #  define __NONSECURE_CALL        __cmse_nonsecure_call\r
67 # else\r
68 #  define __NONSECURE_ENTRY       __attribute__((cmse_nonsecure_entry))\r
69 #  define __NONSECURE_ENTRY_WEAK  __attribute__((cmse_nonsecure_entry,weak))\r
70 #  define __NONSECURE_CALL        __attribute__((cmse_nonsecure_call))\r
71 # endif\r
72 #else\r
73 # define __NONSECURE_ENTRY\r
74 # define __NONSECURE_ENTRY_WEAK\r
75 # define __NONSECURE_CALL\r
76 #endif\r
77 \r
78 \r
79 \r
80 extern uint32_t SystemCoreClock;    /*!< System Clock Frequency (Core Clock)  */\r
81 extern uint32_t CyclesPerUs;        /*!< Cycles per micro second              */\r
82 extern uint32_t PllClock;           /*!< PLL Output Clock Frequency           */\r
83 extern uint32_t __PC(void);         /*!< Return the current program counter value */\r
84 \r
85 #if USE_ASSERT\r
86 /**\r
87  * @brief      Assert Function\r
88  *\r
89  * @param[in]  expr  Expression to be evaluated\r
90  *\r
91  * @return     None\r
92  *\r
93  * @details    If the expression is false, an error message will be printed out\r
94  *             from debug port (UART0 or UART1).\r
95  */\r
96 #define ASSERT_PARAM(expr)  { if (!(expr)) { AssertError((uint8_t*)__FILE__, __LINE__); } }\r
97 \r
98 void AssertError(uint8_t* file, uint32_t line);\r
99 #else\r
100 #define ASSERT_PARAM(expr)\r
101 #endif\r
102 \r
103 #define assert_param(expr)  ASSERT_PARAM(expr)\r
104 \r
105 \r
106 /**\r
107  * @brief    System Initialization\r
108  *\r
109  * @param    None\r
110  *\r
111  * @return   None\r
112  *\r
113  * @details  The necessary initialization of system.\r
114  */\r
115 extern void SystemInit(void);\r
116 \r
117 \r
118 /**\r
119  * @brief    Update the Variable SystemCoreClock\r
120  *\r
121  * @param    None\r
122  *\r
123  * @return   None\r
124  *\r
125  * @details  This function is used to update the variable SystemCoreClock\r
126  *           and must be called whenever the core clock is changed.\r
127  */\r
128 extern void SystemCoreClockUpdate(void);\r
129 \r
130 \r
131 \r
132 \r
133 #if (defined(__ICCARM__) && (__VER__ >= 7080000) && (__VER__ < 8020000))\r
134 uint32_t __TZ_get_PSP_NS(void);\r
135 void __TZ_set_PSP_NS(uint32_t topOfProcStack);\r
136 int32_t __TZ_get_MSP_NS(void);\r
137 void __TZ_set_MSP_NS(uint32_t topOfMainStack);\r
138 uint32_t __TZ_get_PRIMASK_NS(void);\r
139 void __TZ_set_PRIMASK_NS(uint32_t priMask);\r
140 #endif\r
141 \r
142 \r
143 \r
144 #ifdef __cplusplus\r
145 }\r
146 #endif\r
147 \r
148 #endif /* __SYSTEM_M2351_H__ */\r