// set pll out 48Mhz, set cpu clock 48Mhz
SYS_UnlockReg();
CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
CLK_SetCoreClock(48000000);
CLK_EnableModuleClock(USBD_MODULE);
CLK_EnableModuleClock(UART0_MODULE);
CLK_SetModuleClock(USBD_MODULE, 0, CLK_CLKDIV_USB(1));
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));
/* Set GPB multi-function pins for UART0 RXD and TXD */
SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
SYS_LockReg();
SYS_ResetModule(UART0_RST);
上面代码usb工作正常,但UART0没输出,说明CLK_SetCoreClock(48000000);时钟频率是48Mhz问题;把CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_PLL, CLK_CLKDIV_UART(1));改成CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1)),问题也一样;去掉CLK_SetCoreClock(48000000);后,串口有输出,但USB就通信不了。我现在要用USB又要用UART0,不知怎么设置,谁遇到过此类问题,如何解决? |