我想测的 : 一个频率变化的输入信号 起初为30k 然后 5k(只持续一次) 然后30k
再输入重新测 30k 5k 30k 。问题就出在多次输入,我想给计数器清零的时候,怎么也清不掉。
部分代码:
信号输入端开启定时捕捉中断 TA1CCTL2 |=CCIE ;
配置P2。3为捕捉模式
P2SEL |= 0x10; //选择P2。3作为捕捉的输入端子 Timer1_A //
TA1CCTL2 |=CM_2+SCS+CAP+CCIS_0 ; //上升沿触发捕捉,同步模式、时能中断 CCI1A
TA1CTL |= TASSEL1+MC_2; //选择SMCLK时钟作为计数时钟源,不分频 增计数模式不行,必须连续计数模式
中断服务程序
case 4: 选择中断源
{
我想在这里当我测试完 30k 5k 30k 。数据后
给计数器清零,然后下一次再进入中断,再测试到 30k 5k 30k 。
其中5k是变化的量,我要测试这个脉宽。可是每次计数器都不受我控制
DEFW( TA1CTL , TA1CTL_)
#define TA1CCTL0_ (0x0182u) /* Timer1_A3 Capture/Compare Control 0 */
DEFW( TA1CCTL0 , TA1CCTL0_)
#define TA1CCTL1_ (0x0184u) /* Timer1_A3 Capture/Compare Control 1 */
DEFW( TA1CCTL1 , TA1CCTL1_)
#define TA1CCTL2_ (0x0186u) /* Timer1_A3 Capture/Compare Control 2 */
DEFW( TA1CCTL2 , TA1CCTL2_)
#define TA1R_ (0x0190u) /* Timer1_A3 */
这几个都我把TACLR位置位过,都不能对 time7[flag]=TA1CCR2 ;
time这个清零,TA1R,计数器一直从0到ffff 而且还有很大的负数出现,越来越晕
stm32 stm8用着库很方便到430这里,好费劲
}
CCTL2 &= ~CCIFG;//清除中断标志
}
|