我用MSP430F6
单片机外部晶振XT1和XT2 ,现在晶振无法起振。大家帮忙看看配置是否有问题
程序如下:
void Init_Clk()
{
P7SEL |=0x0f; //开启XT1,XT2 7.3,P7.2对应XT2 P7.1,P7.0对应XT1
UCSCTL6 |= XCAP_3 + XT1DRIVE_0 + XT2DRIVE_1;
UCSCTL6 &= ~(XT1OFF + XT2OFF );
//打开XT1,XT2,全选外部晶振;XT2CLK = 8~16M;配置XT1的电容;XT1在低频模式
// UCSCTL3 |= SELREF__REFOCLK; //FLL 参考时钟选择REFOCLK // UCSCTL3默认FLL 参考时钟 XT1CLK
UCSCTL4 |= SELS_5 + SELM_5; //MCLK=XT2CLK,SMCLK=XT2CLK,UCSCTL4 默认ACLK=XT1CLK 时钟源发生错误,ACLK会自动选择REFOCLK
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while(SFRIFG1&OFIFG); // Test oscillator fault flag
}
程序打断点,在上面的while循环的不能退出
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while(SFRIFG1&OFIFG); // Test oscillator fault flag
}
像这一段可以直接用TI上面的例程,这一段的意思是 XT1刚刚起振的时候可能有错误,导致时钟错误标志位置位,必须先清零
然后配置时钟的话根据手册配置便可以了
一周热门 更多>