2019-07-15 16:16发布
西电技术员 发表于 2016-4-5 20:50 我用F149做过,感觉比较容易,你可以看看你那块板子给的例程,然后找个网上的测频原理看看,稍改一下就行了
最多设置5个标签!
你好,我写了一个捕获频率的程序,但是好像精度不够不知道为什么,可以帮我看看吗?
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;
}
}
一周热门 更多>