现在有一个外部脉冲源,需要记录一定时间内的脉冲个数。我选择的方式是将它接到TIMER_A的TACLK,然后选择TACLK时钟源,清除TAR,延时一段时间再去读TAR内的数值,应该就是这段时间内的脉冲个数了。但是程序写的有些问题,用信号发生器调的时候,发现无论频率给多大,TAR内的数值都是固定不变的。下面是我的程序。
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
CLK_Init(); //选择系统时钟函数,选择MCLK为8M,SMCLK为1M
P1SEL |= BIT0; //TCS端口初始化 P1.0口选择为TACLK
TACTL |= TASSEL_0 + MC_1; //TIMER_A选择TACLK模式
TACCR0 = 65535;
for(;;)
{
TACTL |= TACLR + MC_1;
Delay(100); //延时函数
c[0] = TAR; //c[0]是定义的一个数组
}
return 0;
} |