您好,在使用CC430F5137时出现标题所描述的问题,下面是振荡器配置函数,以及调用的位置,请帮忙看看如何解决这个问题,谢谢。
配置函数:
void InitSys123(void)
{
SetVCore(PMMCOREV_3); // Set VCore = 3 for 20MHz clock
P5SEL |= BIT0 + BIT1; // Port select XT1
UCSCTL6 |= XCAP_3; // Internal load cap
// Select SMCLK, ACLK source and DCO source
UCSCTL4 = SELA__XT1CLK + SELS__DCOCLK + SELM__DCOCLK;
UCSCTL3 = SELREF__XT1CLK;
// Loop until XT1 fault flag is cleared
do
{
UCSCTL7 &= ~XT1LFOFFG; // Clear XT1 fault flags
}while (UCSCTL7&XT1LFOFFG); // Test XT1 fault flag
// Initialize DCO to 2.45MHz
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_3; // Set RSELx for DCO = 4.9 MHz
UCSCTL2 = FLLD_0 + 121; // Set DCO Multiplier for 2.45MHz
// (N + 1) * FLLRef = Fdco
// (74 + 1) * 32768 = 2.45MHz
// Set FLL Div = fDCOCLK/2
__bic_SR_register(SCG0); // Enable the FLL control loop
// Startup LFXT1 32 kHz crystal
do{
status = LFXT_Start_Timeout(XT1DRIVE_0, 50000);
} while(status == UCS_STATUS_ERROR);
// Worst-case settling time for the DCO when the DCO range bits have been
// changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
// UG for optimization.
// 32 x 32 x 2.45 MHz / 32,768 Hz = 76563 = MCLK cycles for DCO to settle
__delay_cycles(76563);
}
调用的方式:
void main(void)
{
unsigned char RfSendDat[10];
unsigned char *p;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
__disable_interrupt();
initMCU();
InitSys123();
// InitSys();
// InitSysSpeedNormal();
// InitSysSpeedSlow();
init_Dat();
// Init_SPI();
// InitAS3933();
// ResetRadioCore();
// InitRadio(Snd_Nomal_Chanel);
/*
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_5; // Select DCO range 24MHz operation
UCSCTL2 = FLLD_1 + 487; // Set DCO Multiplier for 12MHz
// (N + 1) * FLLRef = Fdco
// (374 + 1) * 32768 = 12MHz
// Set FLL Div = fDCOCLK/2
__bic_SR_register(SCG0); // Enable the FLL control loop
*/
// SELECT_MCLK(SELM__XT2CLK);
// MCLK_DIV(2);
// Init_FLL_Settle(20000,763);
// UCSCTL6 |= XT2OFF;
Uart_Init();
SFRIE1 |= OFIE; // Enable global oscillator fault flag
__bis_SR_register(GIE); // Enable global interrupt
InitSysTimerA1();
// P2DIR |= BIT4;
// P2OUT |= BIT4;
P2DIR &= ~BIT4;
InitSys123();
当程序执行到第二个 InitSys123();时,就出问题了!