打印
[疑难问答]

TIM5_CCR1H和TIM5_CCR1L的值读出来不对

[复制链接]
1106|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xia00|  楼主 | 2016-6-18 07:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器配置如下
TIM5_CAP_Init(3,0XFFFF);

void TIM5_CAP_Init(unsigned char psc,unsigned int arr)
{
  TIM5_PSCR = 0X0E;
  TIM5_CCER1 &= 0XEE;   // 禁止输入捕获 1,2
  TIM5_CCER2 &= 0XFE;   // 禁止输入捕获 3

  TIM5_CCMR1 |= 0x01;   // ch1到ti1fp1
  TIM5_CCER1 |= 0x02;   // ch1 下降沿触发

  TIM5_CCMR3 |= 0x01;   // ch3选择 ti1fp2上
  TIM5_CCER2 |= 0x02;   // ch3 下降沿触发 ic2

  TIM5_SMCR  |= 0X04;   // 选源触发源和触发方式 复位
  TIM5_IER |= 0x0a;     // 使能中断ch1 ch3

  TIM5_CCER1 |= 0x01;   // 使能输入捕获 1
  TIM5_CCER2 |= 0X01;   // 使能输入捕获 3 1111 1101

  TIM5_CNTRH = TIM5_CNTRL = 0;
  TIM5_CR1 = 0x03;      // Enabled update request source;Counter enabled;
}


#pragma   vector = TIM5_CAPCOM_TIF_vector
__interrupt void TIM5_CAPCOM_TIF(void)
{
  static unsigned int i = 0,j = 0;

  //i = (unsigned int)(8<<TIM5_CCR3H);
  //i |= (unsigned int)(TIM5_CCR3L);

  if(TIM5_SR1 & 0x02)                 //红外
  {
    if( TIM5_CCER1 & 0x02)              //下降沿产生的中断
    {
      i = 0;
      i = ( TIM5_CCR1H << 8 );
      i |= TIM5_CCR1L;  
      //TIM5_CNTRH = TIM5_CNTRL = 0;
      TIM5_CCER1 &=~ 0x02;              //改为上升沿捕获
    }
    else                               //上升沿产生的中断
    {
      j = 0;
      j = ( TIM5_CCR1H << 8 );
      j |= TIM5_CCR1L;      
      //TIM5_CNTRH = TIM5_CNTRL = 0;
      TIM5_CCER1 |= 0x02;               //改为下降沿捕获
      //uiTenor |= TM1_CAP_FLAG;        //一段低电平时间捕获
    }
    TIM5_CNTRH = 0;
    TIM5_CNTRL = 0;
  }
  if(TIM5_SR1 & 0x08)                   //FG
  {
    if(TIM5_CCER2 & 0x02)               //下降沿产生的中断
    {
      i = ( TIM5_CCR3H << 8 );
      i |= TIM5_CCR3H;  

      TIM5_CCER2 &=~ 0x02;              //改为上升沿捕获
    }
    else                               //上升沿产生的中断  
    {
      j = (TIM5_CCR3H << 8);
      j |= TIM5_CCR3L;      

      TIM5_CCER2 |= 0x02;               //改为下降沿捕获
      //uiTenor |= TM1_CAP_FLAG;        //一段低电平时间捕获
    }
  }
}//*/


TIM5_CCR1H和TIM5_CCR1L的值读出来不对,不管怎么调整预分频系数TIM5_CCR1H和TIM5_CCR1L的值都不会变化,求大师指点。
沙发
hfdy01| | 2016-6-18 08:03 | 只看该作者
不是很清楚楼主想要问的是什么问题呢??

使用特权

评论回复
板凳
xia00|  楼主 | 2016-6-18 08:05 | 只看该作者
可以进入捕获中断,但是ccr寄存器的值是空的

使用特权

评论回复
地板
CallReceiver| | 2016-6-18 08:09 | 只看该作者
STM8固件库里有个例程 ,只是针对TIM1的。
\STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\TIM1\TIM1_Input_Capture

使用特权

评论回复
5
boy1990| | 2016-6-18 08:13 | 只看该作者
楼主,你中断服务程序里的 i = (unsigned int)(8<<TIM5_CCR3H) + (unsigned int)(TIM5_CCR3L); 有问题??

使用特权

评论回复
6
boy1990| | 2016-6-18 08:22 | 只看该作者
你的中断的那个地方设置了吗,应该是初始化有问题吧

使用特权

评论回复
7
sourceInsight| | 2016-6-18 09:04 | 只看该作者
找个tim5 捕获的例程看看呗

使用特权

评论回复
8
xia00|  楼主 | 2016-6-18 09:09 | 只看该作者
现在可以进中断了,但是不管怎么调整预分频系数TIM5_CCR1H和TIM5_CCR1L的值都不会变化本来应该随着预分频系数的提高值会变小才对,可是我不论怎么调整预分频系数捕获到的值都是相同的

使用特权

评论回复
9
xia00|  楼主 | 2016-6-18 09:09 | 只看该作者
sourceInsight 发表于 2016-6-18 09:04
找个tim5 捕获的例程看看呗

谁能给个tim5 捕获的例程啊,感激不尽啊

使用特权

评论回复
10
bbapple| | 2016-6-18 09:15 | 只看该作者
进来看看,不是很懂,感觉楼主说的也不是很清楚啊

使用特权

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

本版积分规则

179

主题

1867

帖子

1

粉丝