我用MSP430F5529的launchpad测试,MSP430F5529内部REFO (32.768kHz)倍频最高只能到5MHz。请问是代码那块实现有问题吗?谢谢!
代码如下。μ A
当UCSCTL2 = FLLD__1 | 155; 时,启动后时钟可清除错误标识成功,运行正常,测试MCLK为5MHz多一点;
当UCSCTL2 = FLLD__1 | 156; 时,启动后一直停留在while循环出不来,原因是OFIFG标识一直不能清除成功;
void clock_init (void)
{
UCSCTL0 = 0; //配置为0即可
UCSCTL1 = DCORSEL_2; // DCO频率范围选择
UCSCTL2 = FLLD__1 | 156; // FLLD、FLLN 值设置
UCSCTL3 = SELREF_REFOLCLK | FLLREFDIV_1; // FLL时钟选择、FLL分频
while (SFRIFG1 & OFIFG)//循环、直到 XT1、XT2和 DCO 稳定
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG); //清除三类时钟标志位
//这里需要清除三种标志位,因为任何一种标志位都会将OFIFG置位
SFRIFG1 &=~OFIFG;//清除时钟错误标志位
}
UCSCTL4 = SELA_DCOCLK | SELM_DCOCLK | SELM_DCOCLK;// ACLK、SMCLK、MCLK 时钟源选择-DCOCLK
}