This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430I2040: 关于该芯片内部晶振16.384M和外部晶振16.384M都不准确的疑问

Part Number: MSP430I2040

我在芯片的25引脚外接有源晶振16.384M后,使用旁路模式进行仿真,发现延时间隔与我设定的延时时间相差太多,和使用内部晶振时一样差的非常多,导致我的在使用UART传输协议时,与其他芯片通信时的波特率无法匹配上。

以下是我调试时写的简单例程仿真结果。(设定延时1ms LED灯闪烁)

#include "msp430.h"

void main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop Watchdog Timer

CSCTL0 = DCOBYP; 

P2DIR|=BIT2;

while(1)
{

P2OUT|=BIT2;
__delay_cycles(16384);
P2OUT&=~BIT2;
__delay_cycles(16384);

}

}

  • 您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

  • 您好,_delay_cycles () ;这个函数会有粗略延迟。 您可以试下用定时器测试频率。

  • 您好  我按照您的建议使用了定时器计数器,还是使用计数器延迟1ms,但是得到了和上图示波器一模一样的信号,以下是我根据例程(msp430i20xx_ta0_02)改的的定时器程序

    #include "msp430.h"

    void main(void)

    {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer


    CSCTL0 = DCOBYP; // External


    P2DIR |= BIT2; // Set P1.4 as output
    TA0CCTL0 = CCIE; // CCR0 Interrupt Enabled
    TA0CCR0 = 2048;  //计数1ms
    TA0CTL = TASSEL_2 | MC_1 | ID_3; // SMCLK/8, Up Mode

    __bis_SR_register(LPM0_bits | GIE); // Enter LPM0 w/ interrupts
    __no_operation(); // For debugger
    }

    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=TIMER0_A0_VECTOR
    __interrupt void TA0_ISR(void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(TIMER0_A0_VECTOR))) TA0_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
    P2OUT ^= BIT2; // Toggle LED
    }

  • 您好 我已经解决问题了,原来是我的CLKIN引脚没有开启功能引脚引起的外部晶振未启用  现在我的晶振频率已经准确了