使用内部晶振程序是可以跑起来的,但是使用外部晶振,程序一直在等待,请问这是什么原因?(晶振使用的是12M无源晶振,不知道是不是有源无源的问题)
- void SYS_Init(void)
- {
- /*---------------------------------------------------------------------------------------------------------*/
- /* Init System Clock */
- /*---------------------------------------------------------------------------------------------------------*/
- /* Enable Internal RC 22.1184MHz clock */
- CLK->PWRCON |= CLK_PWRCON_OSC22M_EN_Msk;
- /* Waiting for Internal RC clock ready */
- while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_OSC22M_STB_Msk));
- /* Switch HCLK clock source to Internal RC */
- CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk;
- CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HIRC;
- /* Enable external XTAL 12MHz clock */
- CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk;
- /* Waiting for external XTAL clock ready */
- //死在这里!!
- while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk));
- /* Set core clock as PLL_CLOCK from PLL */
- CLK->PLLCON = PLLCON_SETTING;
- while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk));
- CLK->CLKSEL0 &= (~CLK_CLKSEL0_HCLK_S_Msk);
- CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_PLL;
- /* Update System Core Clock */
- /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
- //SystemCoreClockUpdate();
- PllClock = PLL_CLOCK; // PLL
- SystemCoreClock = PLL_CLOCK / 1; // HCLK
- CyclesPerUs = PLL_CLOCK / 1000000; // For SYS_SysTickDelay()
- /* Enable UART module clock */
- CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk | CLK_APBCLK_I2C0_EN_Msk;
- /* Select UART module clock source */
- CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
- CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_HXT;
- /*---------------------------------------------------------------------------------------------------------*/
- /* Init I/O Multi-function */
- /*---------------------------------------------------------------------------------------------------------*/
- /* Set P3 multi-function pins for UART0 RXD and TXD, and set P3.4 and P3.5 for I2C0 SDA and SCL */
- SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk | SYS_MFP_P34_Msk | SYS_MFP_P35_Msk);
- SYS->P3_MFP |= (SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0 | SYS_MFP_P34_SDA0 | SYS_MFP_P35_SCL0);
- }
|