]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso/NXP_Code/device/system_LPC55S69_cm33_core0.c
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M33F_NXP_LPC55S69_MCUXpresso / NXP_Code / device / system_LPC55S69_cm33_core0.c
index 3cfbbd3152b6162ade54296e9de2cacf56a6b180..cca0d35c96b407a54b82e44bb0ac468a43186fe1 100644 (file)
@@ -1,16 +1,17 @@
 /*\r
 ** ###################################################################\r
 **     Processors:          LPC55S69JBD100_cm33_core0\r
-**                          LPC55S69JET98_cm33_core0\r
+**                          LPC55S69JBD64_cm33_core0\r
+**                          LPC55S69JEV98_cm33_core0\r
 **\r
 **     Compilers:           GNU C Compiler\r
 **                          IAR ANSI C/C++ Compiler for ARM\r
 **                          Keil ARM C/C++ Compiler\r
 **                          MCUXpresso Compiler\r
 **\r
-**     Reference manual:    LPC55xx/LPC55Sxx User manual Rev.0.4  25 Sep 2018\r
-**     Version:             rev. 1.0, 2018-08-22\r
-**     Build:               b181219\r
+**     Reference manual:    LPC55S6x/LPC55S2x/LPC552x User manual(UM11126) Rev.1.3  16 May 2019\r
+**     Version:             rev. 1.1, 2019-05-16\r
+**     Build:               b190830\r
 **\r
 **     Abstract:\r
 **         Provides a system configuration function and a global variable that\r
@@ -18,7 +19,7 @@
 **         the oscillator (PLL) that is part of the microcontroller device.\r
 **\r
 **     Copyright 2016 Freescale Semiconductor, Inc.\r
-**     Copyright 2016-2018 NXP\r
+**     Copyright 2016-2019 NXP\r
 **     All rights reserved.\r
 **\r
 **     SPDX-License-Identifier: BSD-3-Clause\r
 **     Revisions:\r
 **     - rev. 1.0 (2018-08-22)\r
 **         Initial version based on v0.2UM\r
+**     - rev. 1.1 (2019-05-16)\r
+**         Initial A1 version based on v1.3UM\r
 **\r
 ** ###################################################################\r
 */\r
 \r
 /*!\r
  * @file LPC55S69_cm33_core0\r
- * @version 1.0\r
- * @date 2018-08-22\r
+ * @version 1.1\r
+ * @date 2019-05-16\r
  * @brief Device specific configuration file for LPC55S69_cm33_core0\r
  *        (implementation file)\r
  *\r
@@ -107,9 +110,10 @@ static float findPll0MMult(void)
     }\r
     else\r
     {\r
-        mMult_int = ((SYSCON->PLL0SSCG1 & SYSCON_PLL0SSCG1_MD_MBS_MASK) << 7U) | ((SYSCON->PLL0SSCG0) >> PLL_SSCG_MD_INT_P);\r
-        mMult_fract = ((float)((SYSCON->PLL0SSCG0) & PLL_SSCG_MD_FRACT_M)/(1 << PLL_SSCG_MD_INT_P));\r
-        mMult = (float)mMult_int + mMult_fract;\r
+        mMult_int =\r
+            ((SYSCON->PLL0SSCG1 & SYSCON_PLL0SSCG1_MD_MBS_MASK) << 7U) | ((SYSCON->PLL0SSCG0) >> PLL_SSCG_MD_INT_P);\r
+        mMult_fract = ((float)((SYSCON->PLL0SSCG0) & PLL_SSCG_MD_FRACT_M) / (1 << PLL_SSCG_MD_INT_P));\r
+        mMult       = (float)mMult_int + mMult_fract;\r
     }\r
     if (mMult == 0)\r
     {\r
@@ -178,9 +182,7 @@ static uint32_t findPll1MMult(void)
  */\r
 static uint32_t CLOCK_GetFro12MFreq(void)\r
 {\r
-    return (PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_FRO192M_MASK) ?\r
-               0 :\r
-               (ANACTRL->FRO192M_CTRL & ANACTRL_FRO192M_CTRL_ENA_12MHZCLK_MASK) ? 12000000U : 0U;\r
+    return (ANACTRL->FRO192M_CTRL & ANACTRL_FRO192M_CTRL_ENA_12MHZCLK_MASK) ? 12000000U : 0U;\r
 }\r
 \r
 /* Get FRO 1M Clk */\r
@@ -207,9 +209,7 @@ static uint32_t CLOCK_GetExtClkFreq(void)
  */\r
 static uint32_t CLOCK_GetFroHfFreq(void)\r
 {\r
-    return (PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_FRO192M_MASK) ?\r
-               0 :\r
-               (ANACTRL->FRO192M_CTRL & ANACTRL_FRO192M_CTRL_ENA_96MHZCLK_MASK) ? 96000000U : 0U;\r
+    return (ANACTRL->FRO192M_CTRL & ANACTRL_FRO192M_CTRL_ENA_96MHZCLK_MASK) ? 96000000U : 0U;\r
 }\r
 \r
 /* Get RTC OSC Clk */\r
@@ -218,15 +218,13 @@ static uint32_t CLOCK_GetFroHfFreq(void)
  */\r
 static uint32_t CLOCK_GetOsc32KFreq(void)\r
 {\r
-    return ((~(PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_FRO32K_MASK)) && (PMC->RTCOSC32K & PMC_RTCOSC32K_SEL(0))) ?\r
+    return ((!(PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_FRO32K_MASK)) && (!(PMC->RTCOSC32K & PMC_RTCOSC32K_SEL_MASK))) ?\r
                CLK_RTC_32K_CLK :\r
-               ((~(PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_XTAL32K_MASK)) && (PMC->RTCOSC32K & PMC_RTCOSC32K_SEL(1))) ?\r
+               ((!(PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_XTAL32K_MASK)) && (PMC->RTCOSC32K & PMC_RTCOSC32K_SEL_MASK)) ?\r
                CLK_RTC_32K_CLK :\r
                0U;\r
 }\r
 \r
-\r
-\r
 /* ----------------------------------------------------------------------------\r
    -- Core clock\r
    ---------------------------------------------------------------------------- */\r
@@ -237,36 +235,44 @@ uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
    -- SystemInit()\r
    ---------------------------------------------------------------------------- */\r
 \r
-__attribute__ ((weak)) void SystemInit (void) {\r
+__attribute__((weak)) void SystemInit(void)\r
+{\r
 #if ((__FPU_PRESENT == 1) && (__FPU_USED == 1))\r
-  SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2));    /* set CP10, CP11 Full Access */\r
-#endif /* ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) */\r
+    SCB->CPACR |= ((3UL << 10 * 2) | (3UL << 11 * 2)); /* set CP10, CP11 Full Access in Secure mode */\r
+#if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
+    SCB_NS->CPACR |= ((3UL << 10 * 2) | (3UL << 11 * 2)); /* set CP10, CP11 Full Access in Normal mode */\r
+#endif                                                    /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
+#endif                                                    /* ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) */\r
 \r
-  SCB->CPACR |= ((3UL << 0*2) | (3UL << 1*2));    /* set CP0, CP1 Full Access (enable PowerQuad) */\r
+    SCB->CPACR |= ((3UL << 0 * 2) | (3UL << 1 * 2)); /* set CP0, CP1 Full Access in Secure mode (enable PowerQuad) */\r
+#if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)\r
+    SCB_NS->CPACR |= ((3UL << 0 * 2) | (3UL << 1 * 2)); /* set CP0, CP1 Full Access in Normal mode (enable PowerQuad) */\r
+#endif                                                  /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */\r
 \r
-  SCB->NSACR |= ((3UL << 0) | (3UL << 10));   /* enable CP0, CP1, CP10, CP11 Non-secure Access */\r
+    SCB->NSACR |= ((3UL << 0) | (3UL << 10)); /* enable CP0, CP1, CP10, CP11 Non-secure Access */\r
 \r
 #if defined(__MCUXPRESSO)\r
-    extern void(*const g_pfnVectors[]) (void);\r
-    SCB->VTOR = (uint32_t) &g_pfnVectors;\r
+    extern void (*const g_pfnVectors[])(void);\r
+    SCB->VTOR = (uint32_t)&g_pfnVectors;\r
 #else\r
     extern void *__Vectors;\r
-    SCB->VTOR = (uint32_t) &__Vectors;\r
+    SCB->VTOR = (uint32_t)&__Vectors;\r
 #endif\r
     SYSCON->TRACECLKDIV = 0;\r
 /* Optionally enable RAM banks that may be off by default at reset */\r
 #if !defined(DONT_ENABLE_DISABLED_RAMBANKS)\r
-    SYSCON->AHBCLKCTRLSET[0] = SYSCON_AHBCLKCTRL0_SRAM_CTRL1_MASK | SYSCON_AHBCLKCTRL0_SRAM_CTRL2_MASK\r
-                          | SYSCON_AHBCLKCTRL0_SRAM_CTRL3_MASK | SYSCON_AHBCLKCTRL0_SRAM_CTRL4_MASK;\r
+    SYSCON->AHBCLKCTRLSET[0] = SYSCON_AHBCLKCTRL0_SRAM_CTRL1_MASK | SYSCON_AHBCLKCTRL0_SRAM_CTRL2_MASK |\r
+                               SYSCON_AHBCLKCTRL0_SRAM_CTRL3_MASK | SYSCON_AHBCLKCTRL0_SRAM_CTRL4_MASK;\r
 #endif\r
-  SystemInitHook();\r
+    SystemInitHook();\r
 }\r
 \r
 /* ----------------------------------------------------------------------------\r
    -- SystemCoreClockUpdate()\r
    ---------------------------------------------------------------------------- */\r
 \r
-void SystemCoreClockUpdate (void) {\r
+void SystemCoreClockUpdate(void)\r
+{\r
     uint32_t clkRate = 0;\r
     uint32_t prediv, postdiv;\r
     float workRate;\r
@@ -309,15 +315,18 @@ void SystemCoreClockUpdate (void) {
                 default:\r
                     break;\r
             }\r
-            if (((SYSCON->PLL0CTRL & SYSCON_PLL0CTRL_BYPASSPLL_MASK) == 0) && (SYSCON->PLL0CTRL & SYSCON_PLL0CTRL_CLKEN_MASK) && ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL0_MASK) == 0) && ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL0_SSCG_MASK) == 0))\r
+            if (((SYSCON->PLL0CTRL & SYSCON_PLL0CTRL_BYPASSPLL_MASK) == 0) &&\r
+                (SYSCON->PLL0CTRL & SYSCON_PLL0CTRL_CLKEN_MASK) &&\r
+                ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL0_MASK) == 0) &&\r
+                ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL0_SSCG_MASK) == 0))\r
             {\r
-                prediv = findPll0PreDiv();\r
+                prediv  = findPll0PreDiv();\r
                 postdiv = findPll0PostDiv();\r
                 /* Adjust input clock */\r
                 clkRate = clkRate / prediv;\r
                 /* MDEC used for rate */\r
                 workRate = (float)clkRate * (float)findPll0MMult();\r
-                clkRate = (uint32_t)(workRate / ((float)postdiv));\r
+                clkRate  = (uint32_t)(workRate / ((float)postdiv));\r
             }\r
             break;\r
         case 0x02: /* PLL1 clock (pll1_clk)*/\r
@@ -338,17 +347,19 @@ void SystemCoreClockUpdate (void) {
                 default:\r
                     break;\r
             }\r
-            if (((SYSCON->PLL1CTRL & SYSCON_PLL1CTRL_BYPASSPLL_MASK) == 0) && (SYSCON->PLL1CTRL & SYSCON_PLL1CTRL_CLKEN_MASK) && ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL1_MASK) == 0))\r
+            if (((SYSCON->PLL1CTRL & SYSCON_PLL1CTRL_BYPASSPLL_MASK) == 0) &&\r
+                (SYSCON->PLL1CTRL & SYSCON_PLL1CTRL_CLKEN_MASK) &&\r
+                ((PMC->PDRUNCFG0 & PMC_PDRUNCFG0_PDEN_PLL1_MASK) == 0))\r
             {\r
                 /* PLL is not in bypass mode, get pre-divider, post-divider, and M divider */\r
-                prediv = findPll1PreDiv();\r
+                prediv  = findPll1PreDiv();\r
                 postdiv = findPll1PostDiv();\r
                 /* Adjust input clock */\r
                 clkRate = clkRate / prediv;\r
 \r
                 /* MDEC used for rate */\r
                 workRate1 = (uint64_t)clkRate * (uint64_t)findPll1MMult();\r
-                clkRate = workRate1 / ((uint64_t)postdiv);\r
+                clkRate   = workRate1 / ((uint64_t)postdiv);\r
             }\r
             break;\r
         case 0x03: /* RTC oscillator 32 kHz output (32k_clk) */\r
@@ -364,6 +375,7 @@ void SystemCoreClockUpdate (void) {
    -- SystemInitHook()\r
    ---------------------------------------------------------------------------- */\r
 \r
-__attribute__ ((weak)) void SystemInitHook (void) {\r
-  /* Void implementation of the weak function. */\r
+__attribute__((weak)) void SystemInitHook(void)\r
+{\r
+    /* Void implementation of the weak function. */\r
 }\r