MSP430F6单片机外部晶振XT1和XT2无法起振

2019-07-15 15:33发布

我用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循环的不能退出
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
我在线中
1楼-- · 2019-07-16 02:45
do
  {
   UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG  + DCOFFG);
                                   // Clear XT2,XT1,DCO fault flags
     SFRIFG1 &= ~OFIFG;            // Clear fault flags
  }while(SFRIFG1&OFIFG);           // Test oscillator fault flag
}
像这一段可以直接用TI上面的例程,这一段的意思是 XT1刚刚起振的时候可能有错误,导致时钟错误标志位置位,必须先清零
然后配置时钟的话根据手册配置便可以了
非常perfect
2楼-- · 2019-07-16 05:39
这一段我是复制你的,没有在TI上面找的例程,你可以到官网下
kasonandy
3楼-- · 2019-07-16 10:24
多谢。。。搞定

一周热门 更多>