Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

为什么MSP430单片机一开高频模式(XTS置位),XT1HFOFFG就会置位

$
0
0

为什么MSP430单片机一开高频模式(XTS置位)并且设置了XT1后,XT1HFOFFG就会置位

 

以下是CCS上的MSP430F5438A的例程(删掉了两处),这个程序的运行后发现UCSCTL7中的XT1HFOFFG标志位一直为1,导致程序死在}while (SFRIFG1&OFIFG); 这一步。附图中为UCSCTL7寄存器的值。希望解答,谢谢!

 

//  MSP430F543xA Demo - LFXT1 HF Xtal + Internal DCO

#include "msp430x54xA.h"

//#include "hal_pmm.h" 此处删掉   此处删掉   此处删掉   此处删掉    此处删掉    此处删掉  此处删掉  此处删掉  此处删掉

void main(void)

{  

 WDTCTL = WDTPW + WDTHOLD;                                       // Stop WDT

  // SetVCore(PMMCOREV_2);       // Set VCore to 1.8MHz for 20MHz   此处删掉 此处删掉  此处删掉 此处删掉 此处删掉 此处删掉 此处删掉   

P11DIR = BIT2 + BIT1 + BIT0;                                                 // P11.2,1,0 to output direction  

P11SEL = BIT2 + BIT1 + BIT0;                                                 // P11.2 to output SMCLK, P11.1                                            

                                                                                               // to output MCLK and P11.0 to                                            

                                                                                              // output ACLK  

 P7SEL |= 0x03;                                                                    // Port select XT1  

 UCSCTL3 |= SELREF_2;                                                     // FLL Ref = REFO  

UCSCTL6 &= ~XT1OFF;                                                          // Set XT1 On  

UCSCTL6 |= XT1DRIVE_3 + XTS;                                         // Max drive strength, adjust

                                                                                                // according to crystal frequency.

                                                                                                // LFXT1 HF mode

                                                                                                    // 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_4 + SELM_0;                                                                                       // Select ACLK = LFXT1

                                                                                                                                                                 //  SMCLK = DCO                                            

                                                                                                                                                                 //   MCLK = LFXT1

  while(1);                                                                   // Loop in place

 }


Viewing all articles
Browse latest Browse all 3634

Trending Articles