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);
}
}
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,_delay_cycles () ;这个函数会有粗略延迟。 您可以试下用定时器测试频率。
,
chao chen:
您好 我按照您的建议使用了定时器计数器,还是使用计数器延迟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}
,
chao chen:
您好 我已经解决问题了,原来是我的CLKIN引脚没有开启功能引脚引起的外部晶振未启用 现在我的晶振频率已经准确了