[P]大家好[/P][P]我现在使用的是MSP430F5438A,XT1的输入没有使用,在XT2的晶振输入端焊接的是8M的晶振,程序调试正常,但是现在想把晶振换成20M的晶振,发现时钟不能正常工作,换回8M后又正常,我的代码如下:[/P][P]void InitDco(void)
{ unsigned char i; P5SEL |= BIT2 + BIT3; //P5.2和P5.3选择为晶振XT2输入 UCSCTL6 &= ~XT2OFF; UCSCTL3 |= SELREF_2; UCSCTL4 |= SELA_2; do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); SFRIFG1 &= ~OFIFG; // 清除振荡器失效标志 for (i = 0xFF; i > 0; i--); // 延时,等待XT2起振 } while (SFRIFG1 & OFIFG); // 判断XT2是否起振 UCSCTL6 &= ~XT2DRIVE0; UCSCTL4 |= SELS_5 + SELM_5; //选择MCLK、SMCLK为XT2, return;
}[/P][P]请问大家有什么问题,谢谢解答[/P] |