|
【求助】MSP430单片机如何用定时器输出固定连续时钟?
[复制链接]
各位老师:
最近我在研究MSP430单片机,用MSP430F2121做一个东西。
考虑到外设需要一个10HZ的时钟信号。想用定时器A来完成这一功能。
以为用TimerA0的连续计数模式可以搞定。
XI,XOUT外接一个6MHZ的晶体,计数器的时钟源为ACLK,ACLK由6Mhz 分频后,再由定时器的分频器进行2分频所得。
程序如下:
void main()
{
unsigned int n;
WDTCTL=WDTPW+WDTHOLD; //关闭WDT
BCSCTL1 |= XTS; //选择LFXT1为LF模式.
BCSCTL3 |= LFXT1S_2; //选择LFXT1 3-16Mhz的范围.
P1DIR |= 0x01; //p1.1设为输入
do
{
IFG1 &= ~OFIFG; //振荡器失效标志存在.
for (n=0xFF;n>0;n--); //50us时间.
}
while ((IFG1 & OFIFG));; //如果振荡器失效标志存在
BCSCTL3 &=XCAP_3; //内部电容选为零.
BCSCTL2 |= SELM0+SELM1; //MCLK选择为LFXT1,
BCSCTL1 |= DIVA0+DIVA1; //ACLK选择LFXT1,分频系数为4.
//启动定时器A.
TACTL=TASSEL0+TACLR ; //时间源ACLK,清除TAR.
TACTL |=TAIE;
TACTL|=ID0+MC1;
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_Delay_25ms()
{
P1OUT^=0x01;
}
P1.0口接有一指LED,监测是否有波形输出。可惜程序运行没有任何反应。到底是怎么回事?
请各位指正,有哪里出错,应该如何设置TimerA?
是不是TimerA 计数器TAR计满到 0xFFFF后,产生中断后就停止了。TAR不会自动清零??实在弄不懂。还请各位帮忙分析一下。
谢谢了
|
|