打印
[STM8]

TIM2做输入捕获的问题。

[复制链接]
1419|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
28182900|  楼主 | 2016-7-13 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用tim2的CH1和CH3做输入捕获的时候,两个通道会相互影响是怎么回事儿
这是中断服务程序,
#pragma   vector = TIM2_CAPCOM_TIF_vector
__interrupt void TIM2_CAPCOM_TIF(void)
{
  static unsigned int Ir[70];
  static unsigned int Fg[24];
  //i = (unsigned int)(8<<TIM2_CCR3H);
  //i |= (unsigned int)(TIM2_CCR3L);
  
  if(TIM2_SR1_CC1IF)                    //红外
  {
    if( TIM2_CCER1_CC1P)                //下降沿产生的中断
    {
      Ir[i] = ( TIM2_CCR1H << 8 );
      Ir[i] |= TIM2_CCR1L;  
      TIM2_CCER1_CC1P = 0;              //改为上升沿捕获
      i++;
      
    }
    else                               //上升沿产生的中断
    {
      Ir[i] = ( TIM2_CCR1H << 8 );
      Ir[i] |= TIM2_CCR1L;      
      TIM2_CCER1_CC1P = 1;              //改为下降沿捕获
      i++;
    }
    if(i == 70){
      i = 0;
    }
  }
  
  if(TIM2_SR1_CC3IF)                   //FG
  {
    if(TIM2_CCER2_CC3P)               //下降沿产生的中断
    {
      Fg[j] = ( TIM2_CCR3H << 8 );
      Fg[j] |= TIM2_CCR3H;
      j++;
      //TIM2_CCER2 &=~ 0x02;              //改为上升沿捕获
      TIM2_CCER2_CC3P = 0;
    }
    else                               //上升沿产生的中断  
    {
      Fg[j] = (TIM2_CCR3H << 8);
      Fg[j] |= TIM2_CCR3L;      
      j++;
      //TIM2_CCER2 |= 0x02;               //改为下降沿捕获
      TIM2_CCER2_CC3P = 1;
    }
    if(j==24)
    {
      j = 0;
    }
  }

  TIM2_CNTRH = TIM2_CNTRL = 0;
}//*/
沙发
dentsgot| | 2016-7-13 13:08 | 只看该作者
这两个是不是一个中断源?

使用特权

评论回复
评论
28182900 2016-7-13 14:29 回复TA
是啊 
板凳
popeye021| | 2016-7-13 16:56 | 只看该作者
具体现象呢?

使用特权

评论回复
地板
mmuuss586| | 2016-7-13 19:51 | 只看该作者
输入信号的频率大概多少啊?

使用特权

评论回复
5
wahahaheihei| | 2016-7-13 21:16 | 只看该作者
如果是一个中断源,那就是一个中断入口,进去后就先判断,然后最好用switch case,来进入不同中断的处理最好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

1127

帖子

2

粉丝