|
@@ -59,7 +59,7 @@
|
|
#define RCU_MODIFY {volatile uint32_t i; \
|
|
#define RCU_MODIFY {volatile uint32_t i; \
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV2; \
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV2; \
|
|
for(i=0;i<50000;i++);}
|
|
for(i=0;i<50000;i++);}
|
|
-
|
|
|
|
|
|
+
|
|
/* set the system clock frequency and declare the system clock configuration function */
|
|
/* set the system clock frequency and declare the system clock configuration function */
|
|
#ifdef __SYSTEM_CLOCK_IRC16M
|
|
#ifdef __SYSTEM_CLOCK_IRC16M
|
|
uint32_t SystemCoreClock = __SYSTEM_CLOCK_IRC16M;
|
|
uint32_t SystemCoreClock = __SYSTEM_CLOCK_IRC16M;
|
|
@@ -117,7 +117,7 @@ void SystemInit (void)
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
|
|
|
|
RCU_MODIFY
|
|
RCU_MODIFY
|
|
-
|
|
|
|
|
|
+
|
|
/* Reset CFG0 register */
|
|
/* Reset CFG0 register */
|
|
RCU_CFG0 = 0x00000000U;
|
|
RCU_CFG0 = 0x00000000U;
|
|
|
|
|
|
@@ -132,8 +132,8 @@ void SystemInit (void)
|
|
|
|
|
|
/* Disable all interrupts */
|
|
/* Disable all interrupts */
|
|
RCU_INT = 0x00000000U;
|
|
RCU_INT = 0x00000000U;
|
|
-
|
|
|
|
- /* Configure the System clock source, PLL Multiplier and Divider factors,
|
|
|
|
|
|
+
|
|
|
|
+ /* Configure the System clock source, PLL Multiplier and Divider factors,
|
|
AHB/APBx prescalers and Flash settings ----------------------------------*/
|
|
AHB/APBx prescalers and Flash settings ----------------------------------*/
|
|
system_clock_config();
|
|
system_clock_config();
|
|
}
|
|
}
|
|
@@ -167,7 +167,7 @@ static void system_clock_config(void)
|
|
system_clock_200m_8m_hxtal();
|
|
system_clock_200m_8m_hxtal();
|
|
#elif defined (__SYSTEM_CLOCK_200M_PLL_25M_HXTAL)
|
|
#elif defined (__SYSTEM_CLOCK_200M_PLL_25M_HXTAL)
|
|
system_clock_200m_25m_hxtal();
|
|
system_clock_200m_25m_hxtal();
|
|
-#endif /* __SYSTEM_CLOCK_IRC16M */
|
|
|
|
|
|
+#endif /* __SYSTEM_CLOCK_IRC16M */
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef __SYSTEM_CLOCK_IRC16M
|
|
#ifdef __SYSTEM_CLOCK_IRC16M
|
|
@@ -181,33 +181,33 @@ static void system_clock_16m_irc16m(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable IRC16M */
|
|
/* enable IRC16M */
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
-
|
|
|
|
|
|
+
|
|
/* wait until IRC16M is stable or the startup time is longer than IRC16M_STARTUP_TIMEOUT */
|
|
/* wait until IRC16M is stable or the startup time is longer than IRC16M_STARTUP_TIMEOUT */
|
|
do{
|
|
do{
|
|
timeout++;
|
|
timeout++;
|
|
stab_flag = (RCU_CTL & RCU_CTL_IRC16MSTB);
|
|
stab_flag = (RCU_CTL & RCU_CTL_IRC16MSTB);
|
|
}while((0U == stab_flag) && (IRC16M_STARTUP_TIMEOUT != timeout));
|
|
}while((0U == stab_flag) && (IRC16M_STARTUP_TIMEOUT != timeout));
|
|
-
|
|
|
|
|
|
+
|
|
/* if fail */
|
|
/* if fail */
|
|
if(0U == (RCU_CTL & RCU_CTL_IRC16MSTB)){
|
|
if(0U == (RCU_CTL & RCU_CTL_IRC16MSTB)){
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* AHB = SYSCLK */
|
|
/* AHB = SYSCLK */
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
|
|
/* APB2 = AHB */
|
|
/* APB2 = AHB */
|
|
RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;
|
|
RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;
|
|
/* APB1 = AHB */
|
|
/* APB1 = AHB */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV1;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV1;
|
|
-
|
|
|
|
|
|
+
|
|
/* select IRC16M as system clock */
|
|
/* select IRC16M as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_IRC16M;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_IRC16M;
|
|
-
|
|
|
|
|
|
+
|
|
/* wait until IRC16M is selected as system clock */
|
|
/* wait until IRC16M is selected as system clock */
|
|
while(0 != (RCU_CFG0 & RCU_SCSS_IRC16M)){
|
|
while(0 != (RCU_CFG0 & RCU_SCSS_IRC16M)){
|
|
}
|
|
}
|
|
@@ -224,33 +224,33 @@ static void system_clock_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
-
|
|
|
|
|
|
+
|
|
/* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
|
|
/* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
|
|
do{
|
|
do{
|
|
timeout++;
|
|
timeout++;
|
|
stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB);
|
|
stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB);
|
|
}while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));
|
|
}while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));
|
|
-
|
|
|
|
|
|
+
|
|
/* if fail */
|
|
/* if fail */
|
|
if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){
|
|
if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* AHB = SYSCLK */
|
|
/* AHB = SYSCLK */
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
|
|
RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
|
|
/* APB2 = AHB */
|
|
/* APB2 = AHB */
|
|
RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;
|
|
RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;
|
|
/* APB1 = AHB */
|
|
/* APB1 = AHB */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV1;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV1;
|
|
-
|
|
|
|
|
|
+
|
|
/* select HXTAL as system clock */
|
|
/* select HXTAL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_HXTAL;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_HXTAL;
|
|
-
|
|
|
|
|
|
+
|
|
/* wait until HXTAL is selected as system clock */
|
|
/* wait until HXTAL is selected as system clock */
|
|
while(0 == (RCU_CFG0 & RCU_SCSS_HXTAL)){
|
|
while(0 == (RCU_CFG0 & RCU_SCSS_HXTAL)){
|
|
}
|
|
}
|
|
@@ -267,7 +267,7 @@ static void system_clock_120m_irc16m(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable IRC16M */
|
|
/* enable IRC16M */
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
|
|
|
|
@@ -282,7 +282,7 @@ static void system_clock_120m_irc16m(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -294,7 +294,7 @@ static void system_clock_120m_irc16m(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 16, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 16, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
RCU_PLL = (16U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (16U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_IRC16M) | (5U << 24U));
|
|
(RCU_PLLSRC_IRC16M) | (5U << 24U));
|
|
|
|
|
|
@@ -304,17 +304,17 @@ static void system_clock_120m_irc16m(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -335,7 +335,7 @@ static void system_clock_120m_8m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -350,7 +350,7 @@ static void system_clock_120m_8m_hxtal(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -362,7 +362,7 @@ static void system_clock_120m_8m_hxtal(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 8, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 8, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
RCU_PLL = (8U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (8U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (5U << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (5U << 24U));
|
|
|
|
|
|
@@ -372,17 +372,17 @@ static void system_clock_120m_8m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -403,7 +403,7 @@ static void system_clock_120m_25m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -418,7 +418,7 @@ static void system_clock_120m_25m_hxtal(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -430,7 +430,7 @@ static void system_clock_120m_25m_hxtal(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 25, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 25, PLL_N = 240, PLL_P = 2, PLL_Q = 5 */
|
|
RCU_PLL = (25U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (25U | (240U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (5U << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (5U << 24U));
|
|
|
|
|
|
@@ -440,17 +440,17 @@ static void system_clock_120m_25m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 120 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -471,7 +471,7 @@ static void system_clock_168m_irc16m(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable IRC16M */
|
|
/* enable IRC16M */
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
|
|
|
|
@@ -486,7 +486,7 @@ static void system_clock_168m_irc16m(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -498,7 +498,7 @@ static void system_clock_168m_irc16m(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 16, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 16, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
RCU_PLL = (16U | (336U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (16U | (336U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_IRC16M) | (7U << 24U));
|
|
(RCU_PLLSRC_IRC16M) | (7U << 24U));
|
|
|
|
|
|
@@ -508,17 +508,17 @@ static void system_clock_168m_irc16m(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -538,7 +538,7 @@ static void system_clock_168m_irc16m(void)
|
|
static void system_clock_168m_8m_hxtal(void)
|
|
static void system_clock_168m_8m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -562,7 +562,7 @@ static void system_clock_168m_8m_hxtal(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 8, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 8, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
RCU_PLL = (8U | (336 << 6U) | (((2 >> 1U) -1U) << 16U) |
|
|
RCU_PLL = (8U | (336 << 6U) | (((2 >> 1U) -1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (7 << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (7 << 24U));
|
|
|
|
|
|
@@ -572,12 +572,12 @@ static void system_clock_168m_8m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
@@ -603,7 +603,7 @@ static void system_clock_168m_25m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -618,7 +618,7 @@ static void system_clock_168m_25m_hxtal(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -630,7 +630,7 @@ static void system_clock_168m_25m_hxtal(void)
|
|
/* APB1 = AHB */
|
|
/* APB1 = AHB */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 25, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 25, PLL_N = 336, PLL_P = 2, PLL_Q = 7 */
|
|
RCU_PLL = (25U | (336U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (25U | (336U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (7U << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (7U << 24U));
|
|
|
|
|
|
@@ -640,17 +640,17 @@ static void system_clock_168m_25m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 168 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -671,7 +671,7 @@ static void system_clock_200m_irc16m(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable IRC16M */
|
|
/* enable IRC16M */
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
RCU_CTL |= RCU_CTL_IRC16MEN;
|
|
|
|
|
|
@@ -686,7 +686,7 @@ static void system_clock_200m_irc16m(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -698,7 +698,7 @@ static void system_clock_200m_irc16m(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 16, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 16, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
RCU_PLL = (16U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (16U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_IRC16M) | (9U << 24U));
|
|
(RCU_PLLSRC_IRC16M) | (9U << 24U));
|
|
|
|
|
|
@@ -708,17 +708,17 @@ static void system_clock_200m_irc16m(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -739,7 +739,7 @@ static void system_clock_200m_8m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -754,7 +754,7 @@ static void system_clock_200m_8m_hxtal(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -766,7 +766,7 @@ static void system_clock_200m_8m_hxtal(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 8, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 8, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
RCU_PLL = (8U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (8U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (9U << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (9U << 24U));
|
|
|
|
|
|
@@ -776,17 +776,17 @@ static void system_clock_200m_8m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -807,7 +807,7 @@ static void system_clock_200m_25m_hxtal(void)
|
|
{
|
|
{
|
|
uint32_t timeout = 0U;
|
|
uint32_t timeout = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
uint32_t stab_flag = 0U;
|
|
-
|
|
|
|
|
|
+
|
|
/* enable HXTAL */
|
|
/* enable HXTAL */
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
RCU_CTL |= RCU_CTL_HXTALEN;
|
|
|
|
|
|
@@ -822,7 +822,7 @@ static void system_clock_200m_25m_hxtal(void)
|
|
while(1){
|
|
while(1){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
RCU_APB1EN |= RCU_APB1EN_PMUEN;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
PMU_CTL |= PMU_CTL_LDOVS;
|
|
|
|
|
|
@@ -834,7 +834,7 @@ static void system_clock_200m_25m_hxtal(void)
|
|
/* APB1 = AHB/4 */
|
|
/* APB1 = AHB/4 */
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
RCU_CFG0 |= RCU_APB1_CKAHB_DIV4;
|
|
|
|
|
|
- /* Configure the main PLL, PSC = 25, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
|
|
|
|
+ /* Configure the main PLL, PSC = 25, PLL_N = 400, PLL_P = 2, PLL_Q = 9 */
|
|
RCU_PLL = (25U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
RCU_PLL = (25U | (400U << 6U) | (((2U >> 1U) - 1U) << 16U) |
|
|
(RCU_PLLSRC_HXTAL) | (9U << 24U));
|
|
(RCU_PLLSRC_HXTAL) | (9U << 24U));
|
|
|
|
|
|
@@ -844,17 +844,17 @@ static void system_clock_200m_25m_hxtal(void)
|
|
/* wait until PLL is stable */
|
|
/* wait until PLL is stable */
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
/* Enable the high-drive to extend the clock frequency to 200 Mhz */
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
PMU_CTL |= PMU_CTL_HDEN;
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDRF)){
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* select the high-drive mode */
|
|
/* select the high-drive mode */
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
PMU_CTL |= PMU_CTL_HDS;
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
while(0U == (PMU_CS & PMU_CS_HDSRF)){
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
/* select PLL as system clock */
|
|
/* select PLL as system clock */
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 &= ~RCU_CFG0_SCS;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
RCU_CFG0 |= RCU_CKSYSSRC_PLLP;
|
|
@@ -875,7 +875,7 @@ void SystemCoreClockUpdate (void)
|
|
{
|
|
{
|
|
uint32_t sws;
|
|
uint32_t sws;
|
|
uint32_t pllpsc, plln, pllsel, pllp, ck_src, idx, clk_exp;
|
|
uint32_t pllpsc, plln, pllsel, pllp, ck_src, idx, clk_exp;
|
|
-
|
|
|
|
|
|
+
|
|
/* exponent of AHB, APB1 and APB2 clock divider */
|
|
/* exponent of AHB, APB1 and APB2 clock divider */
|
|
const uint8_t ahb_exp[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
|
const uint8_t ahb_exp[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
|
|
|
|