微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 调试stm32 systick和TIM遇到一个怪现象

调试stm32 systick和TIM遇到一个怪现象

时间:12-12 整理:3721RD 点击:
用MDK调试stm32,优先级分组设置1:3
同时用到了systick和TIM中断,都设成1ms,前者优先级0,0,后者优先级1,1
调试时systick和TIM中断都设了断点,按理来说运行起来应该是一次进systick中断,一次进TIM中断的
结果却发现进TIM中断很多次才有一次进systick中断,开始我还以为是MDK断点处理的问题,我在这两个中断里各对一个计数器加1,发现的确是TIM的计数器加了很多下systick的才加一次.
我又用IO口翻转的方式用示波器观察这两个中断的响应情况,free run起来发现二者的确都是1ms的,并没有一个快一个慢的问题.
请问这是为什么?有人遇到过这个现象吗?

你设这些timer调试时暂停试试
默认条件下,你断点停下来,人定时器还在飞转呢,各种奇怪都不怪

谢回复.我现在的做法就是在timer中断里设断点,看执行关系,不知道你说的“调试时暂停”是什么意思.
另外,systick和tim我看时钟树的关系都是从sysclock分来的,应该不存在一个暂停而另一个还在跑的问题.iwdg是存在你说的现象的.更何况我现在的问题不是一个停一个还在跑,而是始终停在一个中断,另一个中断很难停进去

因为停在高优先级中断程序时,立马又产生了新的超时中断,下次低优级依然抢不到CpU
你翻一下xx_tim.C,找一下,里面有干这个用的函数

现在的现象是每次都停在低优先级的中断断点里,而高优先级的systick中断停不住.
事实上我用计数器加一的方式证实了:并不是高优先级中断执行了没停,而是压根没执行.我猜这一定和systick的某种属性有关,如果是两个Tim不会出这种问题的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top