你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S207定时器分频后定时不准

[复制链接]
13755123083 提问时间:2014-8-29 10:53 /
我用定时器作为红外发码脉宽控制用,STM8S207定时器分频后定时不准,定时器1或2都不行。下面是我的红外发码程序;搞了好久了都不行。
TIM2->SR1&=0xF8; 
       TIM2->IER=0X01;
       TIM2->CCER1=0x00;
       TIM2->CCER2=0x00;
      TIM2->CCMR2=0x00;
      
    //TIM2-&gtSCR = 0X00;
    //TIM2->EGR=0x01;
                          sentf=1;             
      for(i=0;i>8);
       TEMPL=(unsigned char)(dumm&0x00ff);
    
       TIM2->CNTRH=TEMPH;
      TIM2->CNTRL=TEMPL;
       if(ir_sentf)
    {
     ////TIM3->EGR=0x01;
    //TIM3->CCER1=0x00;
    IR_OUT=1;
     ir_sentf=0;
    
           }
   
       else
   {
          //TIM3->EGR=0x01;
    //TIM3->CCER1=0x30;
    IR_OUT=0;
      ir_sentf=1;
     } 
   
   TIM2->SR1=0;
   enableInterrupts();
   TIM2->CR1=0X09;
    IWDG->KR = 0xAA;
     nop();
   
    sentf1=0;
    while(!sentf1)
     {
     nop();
     }
    TIM2->SR1&=0xFE;
    disableInterrupts();
    //TIM2->CR1=0x08;
   }
 
下面这个是定时器2的更新中断处理
@near @interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
 
    if(TIM2->SR1&0x01)
   {  TIM2->SR1&=0xfe; 
       
         if(sentf) 
    {
   sentf1=1;
   
   }
     
   }
   //enableInterrupts(); return;  
}
 
 
 
 
 
收藏 评论4 发布时间:2014-8-29 10:53

举报

4个回答
nightholder 回答时间:2015-1-14 19:43:23
片内晶振吗?这个是有偏差的。
德政m 回答时间:2015-1-14 20:34:46
如果频率偏差是固定偏大或者偏小。。那应该是内部时钟偏差造成的。
masuyu 回答时间:2015-1-14 21:09:32
学习一下。。。楼主解决问题了吗?
不确定性理论 回答时间:2015-1-22 20:59:10
我的903k3实测过一次定时溢出处理间隔最短是10us级别的,曾经我在10us级别的定时中断里写了很多赋值判断语句,导致定时严重偏差,最后只剩下3个赋值语句,删掉了其他判断语句才定时正常。楼主可以试试中断计数,闪烁LED灯看看定时准不准。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版