我用MSP430F5529的launchpad测试,MSP430F5529内部REFO(32.768KHz)倍频最高只能到5MHz。请问是代码那块实现有问题吗? 谢谢!
代码如下。
当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__REFOCLK | FLLREFDIV__1; // FLL时钟选择、FLL分频
while (SFRIFG1 & OFIFG) // Loop until XT1,XT2 & DCO stabilizes
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // 清除三类时钟标志位
// 这里需要清除三种标志位,因为任何一种标志位都会将OFIFG置位
SFRIFG1 &= ~OFIFG; // 清除时钟错误标志位
}
UCSCTL4 = SELA__DCOCLK | SELS__DCOCLK | SELM__DCOCLK; // ACLK、SMCLK、MCLK 时钟源选择--DCOCLK
}