我使用以下例程来配置我的 MSP430 (msp430g2231) 微控制器的时钟:
void configure_clock(void) {
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { // Checks the clock constants
while(TRUE); // If callibration constants are erased, TRAP!
}
BCSCTL1 |= CALBC1_1MHZ; // Sets DCO range
DCOCTL |= CALDCO_1MHZ; // Set DCO step and modulation
BCSCTL1 &= ~(XTS | XT2OFF); // Disables XT2 and sets low frequency mode
BCSCTL3 |= (LFXT1S_0 | XCAP_3); // Selects LFXT1 crystal with 12,5pF
do {
IFG1 &= ~OFIFG;
__delay_cycles(1000);
} while (IFG1 & OFIFG); // Waits until crystal stabilizes
BCSCTL2 |= (SELM_2 | SELS); // Selects SMCLK and MCLK from LFXT1CLK
}
问题是代码第一次运行时(在给微控制器加电之后)一切都按预期工作,我得到了 32768 kHz 时钟。但是,如果我按下板上的复位按钮(MSP430 Launchpad),时钟似乎无法正常工作,代码执行速度很慢(比如 10 次左右)。关于时钟配置的任何想法?
谢谢!
佩雷