试了例程里面所有关于UCS的程序,用示波器测量32K外部晶振都没有方波输出!
以MSP430F673X_UCS_6程序为例
int main(void)
{
WDTCTL = WDT_ADLY_1000; // WDT 1000ms, ACLK, interval timer
SFRIE1 |= WDTIE; // Enable WDT interrupt
// Setup P1.0 output, J1.3 ACLK
P1DIR |= BIT0; // Set P1.0 to output direction
P1OUT &= ~BIT0; // Clear P1.0
PJDIR |= BIT3; // ACLK set out to pin
PJSEL |= BIT3; // PJ.3 for debugging purposes.
// Setup LFXT1
UCSCTL6 &= ~(XT1OFF); // XT1 On
UCSCTL6 |= XCAP_3; // Internal load cap
// Loop until XT1, XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while (SFRIFG1 & OFIFG); // Test oscillator fault flag
UCSCTL6 &= ~(XT1DRIVE_3); // XT1 stable, reduce drive strength
__bis_SR_register(LPM3_bits | GIE); // Enter LPM3 w/ interrupts
__no_operation(); // For debugger
}
// Watchdog Timer interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
#else
#error Compiler not supported!
#endif
{
P1OUT ^= BIT0; // Toggle P1.0 using exclusive-OR
}
程序进不了WDT中断,示波器量外部晶振没有输出波形:
匹配电容XCAP_3 ~ XCAP_0都试过,没有作用;
换新的晶振,没有作用(晶振在4系列单片机的板子上均起振);
把WDT定时器WDT_ADLY_1000换成WDT_MDLY_xx,可以进入中断。
这是不是说明外部晶振没有起振?PCB布板应该没有问题,晶振用的是圆柱晶振DT-26的,没有接外部电容。谁遇到过或者知道的麻烦指导一下,谢谢!