内部时钟经过PLL以后不能正常工作
代码
使用 32G12K128
/* 设置时钟,初始时钟要设置为 22.1184 Mhz */
CLKSEL &= ~0x80; /* 选择 x8 作为 PLL 的输出时钟 */
USBCLK &= ~0x60;
USBCLK |= 0x20; /* 22.1184Mhz/2 */
USBCLK |= 0x80; /* 启动PLL*/
{
int i;
for (i = 0; i < 200; i++)
{
_nop_();
}
}
MCLKOCR = 2;
CLKDIV = 8; /* 8 分频回来 */
CLKSEL &= 0xf0; /* 选择 PLL 时钟源 */
CLKSEL |= 0x04;
/* 时钟设置完毕 */
测试结果
本来直接使用内部高精度IRC直接设置 SYSCLK 是 11.0592Mhz 的时候工作正常,串口工作正常。
心血来潮,想琢磨一下 PLL,实验了两种情况
- 22.1184MHz / 2 送 PLL x8 后,分频/8, P54 输出 5.56MHz 左右,串口工作异常,上述代码就是这种情况
- 11.0592MHz 直接送 PLL x8 后,分频/8, P54 输出 5.56MHz 左右,串口工作异常
EMO了