打印
[STM32F1]

定时器跑一阵后 就偏差了

[复制链接]
746|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2019-4-20 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
跑了十几分钟后就不准了

使用特权

评论回复
沙发
chuxh| | 2019-4-20 15:03 | 只看该作者

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
pengf|  楼主 | 2019-4-20 15:06 | 只看该作者
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

                TIM_TimeBaseStructure.TIM_Period = 10000;                                
                TIM_TimeBaseStructure.TIM_Prescaler = 71;                                         
                TIM_TimeBaseStructure.TIM_ClockDivision = 0;                                
                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        
                TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;                        
               
                TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);                                
               
                TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);                                                
                TIM_Cmd(TIM2, ENABLE);        

使用特权

评论回复
地板
pengf|  楼主 | 2019-4-20 15:09 | 只看该作者
计时每隔1ms进入一次中断  ,累计至50S,120S,200S,260S,分别处理四次事件,然后到300S,计数值清零,从0开始计时。

使用特权

评论回复
5
juventus9554| | 2019-4-20 15:12 | 只看该作者
应该是定时时间短的时候误差小;
时间长误差大吧?

使用特权

评论回复
6
llljh| | 2019-4-20 15:15 | 只看该作者
你可以把每段时间的误差,列个表格,查下原因看看;

使用特权

评论回复
7
pengf|  楼主 | 2019-4-20 15:19 | 只看该作者
我觉得也是这样  之前用的定时器都是在几秒就清零了

这次时间长好多 都300S了  

使用特权

评论回复
8
dingy| | 2019-4-20 15:23 | 只看该作者

那就想办法补偿;
改大定时器的时钟源分频,1MS中断1次太快了;

使用特权

评论回复
9
pengf|  楼主 | 2019-4-20 15:27 | 只看该作者
原因找到了,在else if {Count = 0;} 这里面我只对Count清零了,但是对事件接下来的操作没做处理,加了第一个事件的处理语句就OK了。

使用特权

评论回复
10
keaibukelian| | 2019-5-10 10:10 | 只看该作者
是内部时钟吗

使用特权

评论回复
11
labasi| | 2019-5-10 10:14 | 只看该作者
大概差多少呀

使用特权

评论回复
12
paotangsan| | 2019-5-10 10:22 | 只看该作者
如果是内部晶振就比较正常

使用特权

评论回复
13
renzheshengui| | 2019-5-10 10:25 | 只看该作者
大概差了多少呢

使用特权

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

本版积分规则

718

主题

10129

帖子

3

粉丝