以下程序是实验msp430单片机在8M下使P2.0口输出方波。但是烧进单片机里发现P2.0口频率很低(可以看见led在那里闪)。照理P2.0口输出频率很高才对啊 50000/8M=0.00625 秒才对啊 还有改为 BCSCTL2|=SELM_2+DIVM_3; 改后根本没有分频啊; 求高手帮我分析下为什么啊。
#include <msp430x14x.h>
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD; //停止看门狗
P2DIR|=0xFF; //P5.4输出
P2OUT|=0xFF; //P5.4用作MCLK输出
BCSCTL1&=~XT2OFF; //XT2有效
do
{
IFG1&=~OFIFG; //清除振荡器失效标志
for(i=0xFF;i>0;i–); //稳定时间
}
while((IFG1&OFIFG)!=0); //如果振荡器失效标志存在
BCSCTL2|=SELM_2; //MCLK=XT2
TACTL=TASSEL_2+TACLR;
CCTL0=CCIE;
CCR0=50000;
TACTL|=MC0;
_EINT();
for(;;)
{
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT^=0x01;
}
Young Hu:
P5.4的输出频率是多少?
Charles Wu:
回复 Young Hu:
楼主没有搞清MCLK和SMCLK是两个不同的震荡源,你配置XT2为MCLK没有错,但是,在你TimerA的初始化代码中,TimerA的时钟源是SMCLK,这是你代码中没有配置的,那默认值应该只有1M左右。