请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR6922 您好!
我 在电路板上使用 MSP430FR6922控制器。 我想在代码中将 ACLK 设置为 LFXTCLK=32.768kHz、MCLK=DCOCLK=16MHz、SMCLK=DCOCLK。 然后 SMCLK/4=4MHz...
我的代码是:-
#include "common.h" /* Function to initialize device at internal crystal 16MHz and external 32.768khz*/ void dev_init_16M(void) { PJSEL0 |= BIT4 | BIT5; // For XT1 // Disable the GPIO power-on default high-impedance mode to activate // previously configured port settings PM5CTL0 &= ~LOCKLPM5; // Configure one FRAM wait state as required by the device data sheet for MCLK // operation beyond 8MHz _before_ configuring the clock system. FRCTL0 = FRCTLPW | NWAITS_1; // Clock System Setup CSCTL0_H = CSKEY >> 8; // Unlock CS registers CSCTL1 = DCOFSEL_4 | DCORSEL; // Set DCO to 16MHz CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK; // Set SMCLK = MCLK = DCO=16Mhz,ACLK=LFXT=32.768kHZ CSCTL3 = DIVA__1 | DIVS__4 | DIVM__1; // Set all dividers SMCLK/4=4MHz CSCTL4 &= ~LFXTOFF; do { CSCTL5 &= ~LFXTOFFG; // Clear XT1 fault flag SFRIFG1 &= ~OFIFG; }while (SFRIFG1&OFIFG); // Test oscillator fault flag // Now that osc is running enable fault interrupt // SFRIE1 |= OFIE; // __bis_SR_register(LPM0_bits); // Wait in LPM0 for fault flag CSCTL0_H = 0; // Lock CS registers} } // //#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) //#pragma vector=UNMI_VECTOR //__interrupt void UNMI_ISR(void) //#elif defined(__GNUC__) //void __attribute__ ((interrupt(UNMI_VECTOR))) UNMI_ISR (void) //#else //#error Compiler not supported! //#endif //{ // do // { // // set a breakpoint on the line below to observe XT1 operating from VLO // // when the breakpoint is hit during a crystal fault // CSCTL5 &= ~LFXTOFFG; // Clear XT1 fault flag // SFRIFG1 &= ~OFIFG; // P1OUT |= BIT0; // __delay_cycles(25000); // time for flag to get set again // }while (SFRIFG1&OFIFG); // Test oscillator fault flag //}
当我运行代码时、我注意到它停留在最后一个检查振荡器故障标志的 DO while 循环中。
原因是什么? 我的代码错误??? 还是因为硬件问题??
请访问 help..it