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

为什么我的stm32 的tim3 1ms中断时间不准

[复制链接]
arraybat 提问时间:2013-3-4 16:11 /
                TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
                TIM_TimeBaseStructure.TIM_Period =8000;//// 6735;//6799;            
                TIM_TimeBaseStructure.TIM_Prescaler = 8;
            TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;          //设置了时钟分割
            TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式  
            TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
            TIM_Cmd(TIM3, ENABLE);
                    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
            
            void TIM3_IRQHandler(void)
            {     u16 comparetime;
               u8 nn;
              if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
              {
              //        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
                TIM_ClearITPendingBit(TIM3, 0xffff);
            ms++;
            }
            }
            本来想ms是1ms加1,加到1000就是1s,但是实际上慢了。把TIM_Period减小到6735,才差不多是1ms。
            按理说tim3,系统是72mhz,9分频得到8Mhz,加到8000为1ms。
            请问为什么会慢?要精确定时1ms该怎么办?
            

 
收藏 评论3 发布时间:2013-3-4 16:11

举报

3个回答
废鱼 回答时间:2013-3-5 10:09:38

RE:为什么我的stm32 的tim3 1ms中断时间不准

楼主如何来确定的当前并没有加到1ms?
arraybat 回答时间:2013-3-5 14:30:50

回复:为什么我的stm32 的tim3 1ms中断时间不准

回复第 2 楼 于2013-03-05 10:09:38发表:
楼主如何来确定的当前并没有加到1ms? 

我用它来做的时钟,每1000ms就秒加1,然后以此类推,分钟、小时。
但是电脑上经过一分钟的时候,这个stm32的才跑了50多秒。
 
现在发现问题了:我用tim2的100ms中断做,时间就很准,跑两个小时了没有偏移1s。
可能的问题;1:tim2的中断优先级别高。
                    2:是不是tim3 1ms中断中需要执行的代码太长了,耗时太久?
arraybat 回答时间:2013-3-5 14:34:23

回复:为什么我的stm32 的tim3 1ms中断时间不准

回复第 2 楼 于2013-03-05 10:09:38发表:
楼主如何来确定的当前并没有加到1ms? 

tim3中代码比较长   所以没有全部粘帖。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版