|
做了块测试版,用MSP430F5438A,XT2用25M晶振,焊好后发现程序稍一运行就跑飞了,查了半天发现是时钟方面的问题,用25M的晶振就会跑飞,20M晶振就没问题。真TM见鬼了,我记得5438最高能到25M的,怎么实际做起来就不行了,难道我晶振有问题?晶振旁边有接两颗22pF的电容。
下面是时钟初始化的语句,也有将XT2驱动能力调到最高了,是不是还有其它地方要设置的?百撕不得骑姐,请做过的朋友帮忙解答下疑问。
P7SEL|=BIT0+BIT1;//XIN+XOUT时钟脚置位启用
P5SEL|=BIT2+BIT3;
UCSCTL6 &= ~(XT1OFF + XT2OFF); // Set XT1 & XT2 On
UCSCTL6 |= XCAP_3; // Internal load cap
UCSCTL6 |= XT2DRIVE_3; // Decrease XT2 Drive according to
// expected frequency
// Loop until XT1,XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
UCSCTL4 |= SELA_0 + SELS_5 + SELM_5; // Select SMCLK, ACLK source and DCO source
|
|