困扰了我很久的TIM1时钟走慢的问题终于找到原因了

2019-12-27 18:41发布

在使用STM32的过程中,经常发现TIM1定时器莫名奇妙的走慢,以前一句一句的查看代码,怕晶振没起振,拿示波器看,都没有发现问题,但TIM1就是走慢了,后来只能尽量避免使用TIM1,今天再次下定决心要找到原因,最后终于发现是MDK的优化造成的。
如果默认使用Level 2 (-O2)优化级别,勾选Optimize for Time 和One ELF Section per Function ,TIM1就会变慢很多,其他定时器都正常。
使用Level 0 (-O0)优化级别,勾选Optimize for Time 和One ELF Section per Function
或者使用Level 2 (-O2)优化级别,只勾选One ELF Section per Function ,则TIM1能正常工作,目前虽然能解决问题了,但是还没有仔细研究不同的优化之间的区别,到底编译器把哪部分代码给优化掉了,才造成TIM1定时器走慢呢,这个还有待进一步研究,现在要忙手头上的项目,暂且先放一放吧。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
59条回答
lxd_youxi
1楼-- · 2019-12-31 13:11
赞同27楼!前段时间也遇到tim1走慢的问题,后来改用tim2了,工作时间紧,还没来的急查找原因呢!
感谢楼主提供一个解决方法,等有时间再好好研究!
xiangxiaowei
2楼-- · 2019-12-31 18:25
 精彩回答 2  元偷偷看……
Ian11122840
3楼-- · 2019-12-31 23:04
有吗!?
一直觉得tim1挺准的飘过…
ahfong2006
4楼-- · 2019-12-31 23:24
真的有吗?是不是TIM1 寄存器 被改变 或者 被不改变 了呢?优化能改变你的程序不按照你原来意图行事我相信,能让TIM1变慢真的很难理解,希望ST的FAE也能来分析一下
heky
5楼-- · 2020-01-01 01:38
stm32的timer1,2,3,4都经过深入使用。lz你怀疑的话可以用逻辑分析仪等工具好好查一查。有没有代码使用的例子,我帮你看看也没关系。
shdjdq
6楼-- · 2020-01-01 07:29
能不能指定某个函数优化?在程序里加上某个语句?

一周热门 更多>