uint16_t heartbeat(void)
{
//DCOCTL = 0;
//BCSCTL1 = 0;
//DCOCTL = 0;
BCSCTL1 = 0; \
DCOCTL = 0;
BCSCTL2 |= DIVS_3;//8分频
TA1CTL = TASSEL_2 + ID_3 + MC_2 + TACLR;//MCLK,8分频
TA1CCTL1 = CM_1 +CCIS_0 + SCS + CAP + CCIE;
P3SEL |= PULSE;//捕获模式
j=0;
lastCCR1=0;
__bis_SR_register(LPM0_bits+GIE);
//P1OUT |= LED_POWER;
__bis_SR_register(LPM0_bits+GIE);
return lastCCR1;
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER_A(void)
{
switch(TA1IV)
{
case 2://j = TA1CCR1-lastCCR1;
lastCCR1 = TA1CCR1;
TA1R=0;
LPM0_EXIT;
// P1OUT |= LED_POWER;
break;
case 10:break;
LPM0_EXIT;
default: break;
}
}
麻烦大家帮我看一下上面的测试方波周期的程序:
定时器的时钟为1.56khz
测试方波的范围为1hz-10hz,测试过程中发现当测2hz频率以下的方波时,程序就不跑了,好像是陷入了循环里一样,昨天想了很久,也没有想通,麻烦大家看一看。
用的单片机类型为msp430f2132