求一份MSP430f5529的数字频率计代码一份,测频范围为1hz-100khz,误差为1%。

2019-07-15 16:16发布

本帖最后由 成谶 于 2016-4-5 20:34 编辑

新手刚学,求助如题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
成谶
2019-07-16 09:04
西电技术员 发表于 2016-4-5 20:50
我用F149做过,感觉比较容易,你可以看看你那块板子给的例程,然后找个网上的测频原理看看,稍改一下就行了

你好,我写了一个捕获频率的程序,但是好像精度不够不知道为什么,可以帮我看看吗?
ulint captar=0,capfirst,caplast,time=0,pulse=0,f;
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                      // 关闭看门狗
  lcdinit();
  P2DIR &=~BIT0;
  P2SEL |=BIT0;
  TA1CCTL1=CM_1+SCS+CCIS_0+CAP+CCIE;
  TA1CTL=TASSEL_1+MC_2+TACLR+TAIE;
  _EINT();
  while(1){
          f=pulse*32768/time;
          display(f);
          TA1CCTL1 |= CCIE;
          TA1CTL |= TAIE;
  }
  }
#pragma vector = TIMER0_A1_VECTOR
__interrupt void TIMER0_A1 (void)
{
        switch(TA1IV){
        case 2:{
        if(captar==0)
        {
                capfirst=TA1CCR1;
                captar++;
        }
        else{
                caplast=TA1CCR1;
                captar++;
        }
        TA1CCTL1 &=~CCIFG;
        break;
        }
        case 14:{
                if(captar==0)
                        pulse=0;
                else{
                        pulse=captar-1;
                        time=caplast-capfirst;
                        captar=0;
                }
                TA1CCTL1&=~CCIE;
                TA1CTL=~TAIE;
                break;
        }
        default:break;
}
}

一周热门 更多>