秋月残44 发表于 2018-3-20 09:09:01

STM8L TIM2捕获

用TIM2 捕获频率低的时候还可以,能捕获正确,如果提高频率(大概4KHZ)就不可以了,在加大频率程序就不出捕获中断了
#pragma vector=TIM2_CAPCOM_CC2IF_vector
__interrupt void TIM2_CAPCOM_CC2IF_ISR (void)
{
      TIM2_SR1 &=~0x04;
      ccrSA = TIM2_CCR2H;
      ccrSA <<= 8;
      ccrSA += TIM2_CCR2L;
      if(ccrSA<ccrST&&TStar==0)
         {
             ccrST = ccrSA;
             TStar=65535;
         }
      else
      {
         ccr = (65536.0*TStar+ccrSA-ccrST);
         if(ccr>3000.0)
         delay_us(2);
         TStar=0;
         ccrST = ccrSA;
         ccrADD+=ccr;
         ccrnum++;
      }
      PulseF=1;
      if(ccr<=200.0)//换高速
          {
             gaosu();
          }
}

wenyangzeng 发表于 2018-3-20 10:28:18

捕捉中断中还有延时和调用子函数,当然快不起来了。

秋月残44 发表于 2018-3-20 14:23:42

wenyangzeng 发表于 2018-3-20 10:28
捕捉中断中还有延时和调用子函数,当然快不起来了。

但是也不应该到4KHZ就捕获不了了吧,

zcl201207 发表于 2018-3-20 21:07:39

不建议在中断处理函数里干太多的活儿、占用太多的时间,应该尽快跳出来,在main函数里处理。。。:):):)

robter 发表于 2018-4-27 06:44:54

自身的系统频率也要高,你的系统频率是多少?
页: [1]
查看完整版本: STM8L TIM2捕获