困扰了我很久的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条回答
huatong
1楼-- · 2020-01-02 05:59
末试过这种问题,或者楼主发个工程出来给大家试试?
shdjdq
2楼-- · 2020-01-02 08:32
优化是快不少。我选了Level 1比Level 0快了很多,代码也少不少。前提是,把U16或u32全改成vu16,vu32。
clingos
3楼-- · 2020-01-02 12:50
一般不使用优化!只相信自己的飘过!
xfdr
4楼-- · 2020-01-02 15:38
yinqiu009 发表于 2011-8-9 12:15
回复【21楼】kevin_ares  
回复【18楼】yinqiu009
---------------------------------------------------- ...

有时候用串口把一些要查看的变量发回来,也很方便的
eehong
5楼-- · 2020-01-02 16:54
 精彩回答 2  元偷偷看……
lkl10800139
6楼-- · 2020-01-02 20:49
我用stm32f4的 TIM3 ,程序是移植官方的 C 例程,没有看汇编,也不会看.今天看到楼主发的帖子,做了测试,优化级别不同,计时效果不同。

一周热门 更多>