MSP430F6系列

2019-03-24 10:50发布

我现在用MSP430F6系列单片机,使用两个外部晶振,XT1和XT2,但是这两个晶振不起振,我用TI的库函数例程也是不起振。给32768Hz的晶振接两个22pF电容也不管用。我没有思路了,请各位大神帮帮忙啊!!拜托喽!!程序如下
void Init_Clk()
{
  P7SEL |= 0x03;                                                 // 选择XT1使能
  UCSCTL6 |= XCAP_3 + XT1DRIVE_0;
  UCSCTL6 &= ~(XT1OFF );
                                  //打开XT1全选外部晶振;配置XT1的电容;XT1在低频模式

  UCSCTL4 |= SELS_5 + SELM_5;     //MCLK=XT2CLK,SMCLK=XT2CLK,UCSCTL4  默认ACLK=XT1CLK   时                                                                                //钟源发生错误,ACLK会自动选择REFOCLK
                                  //其余时钟会选择DCO——CLK


  do
  {
  
     UCSCTL7 &= ~( XT1LFOFFG  + DCOFFG);
                                   // Clear XT2,XT1,DCO fault flags
     SFRIFG1 &= ~OFIFG;            // Clear fault flags
  }
  while(SFRIFG1&OFIFG);           // Test oscillator fault flag
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
zilong
2019-03-24 22:58
< :TI_MSP430_内容页_SA7 --> 官方例程
#include  <msp430x14x.h>

void main(void)
{
  volatile unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P5DIR |= 0x10;                            // P5.4= output direction
  P5SEL |= 0x10;                            // P5.4= MCLK option select
  BCSCTL1 &= ~XT2OFF;                       // XT2= HF XTAL

  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  BCSCTL2 |= SELM_2;                        // MCLK= XT2 (safe)

  for (;;);                                 // Do nothing
}

和我的那个区别在于时钟源选择在晶振启动后,我也按照这个配置了XT2,还是不行啊

一周热门 更多>

相关问题

    相关文章