#include<msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
uint x=0;
void main()
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
uint i=0;
BCSCTL1&=~XT2OFF;//打开XT2晶体振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for(i = 0Xff;i > 0;i–); // 稳定时间
}
while((IFG1 & OFIFG));
BCSCTL2|=SELM_3;//MCLK 时钟源为 XT2CLK,不分频
TACTL=TASSEL_2+TACLR+MC0;//定时器A选用MCLK,增计数模式不分频,定时器清除
CCTL0=CCIE;//比较中断位开启
CCR0=35534;//起始数值
P3DIR|=0xFF;
P3OUT=0xAA;
_EINT();
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A ()
{
x++; if(x==10)
{
P3OUT^=0xff;
x=0;
}
}
用的是msp430f149,做一个一闪一闪的灯,但是结果发现中断时间不对,应该没能成功开启xt2,甚至屏蔽BCSCTL1&=~XT2OFF这一句闪灯频率也没有变化这是为什么呢?是程序哪出错了吗
灰小子:
不清楚楼主的硬件是怎么样的,所以不能确定具体什么原因,只能做出一些推测和建议。
可能的原因:
1)P3外部电路原因,建议检查连接LED的IO引脚上是否有其他电路。
也不清楚你是这八个IO都连接LED了,还是什么情况。如果不是,建议只操作连接有LED的相应引脚。
2)不清楚你接的xt2是多少MHz,又没有可能是速度太快了,人眼没观察到
3)LED相关电路有没有问题,LED焊接是否良好和正确