求助,两个定时器,进不了主程序一直在定时器中断里?

2019-07-21 06:58发布

本帖最后由 kinshen 于 2018-12-2 21:53 编辑

有2个定时器,TIM2做10ms定时中断,在中断里做模式控制,另外一个中断是TIM5捕获中断,测量外部脉冲的频率。

TIM2单独工作的时候,没有问题!

加上TIM5的时候,会出现程序进不来主程序的情况!但是这个时候不固定,有的时候很快就跑飞,有的时候时间长点才跑飞!

TIM2和TIM5的配置如图(代码粘贴后注释是乱码,所以截图了)?

请帮忙分析下是什么原因!谢谢了!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
kinshen
1楼-- · 2019-07-21 19:50
尹林 发表于 2018-12-3 17:27
楼主,尽量别把应用级别的代码放在中断处理函数里面执行,因为每进入一次中断相关数据会被压栈的,如果中断 ...

谢谢,请问怎么能知道是堆栈出问题了?有没有什么方法来查看原因?
kinshen
2楼-- · 2019-07-21 20:02
尹林 发表于 2018-12-3 17:27
楼主,尽量别把应用级别的代码放在中断处理函数里面执行,因为每进入一次中断相关数据会被压栈的,如果中断 ...

还有一个,如果只有一个中断的话没有重启的问题,2个的话就会出现,这个怎么分析?
warship
3楼-- · 2019-07-21 23:25
楼上几位说得对,
TIM2的中断服务程序太长了,没有必要。
不就是每10ms执行一次按键扫描并进行模式判断和控制吗?
完全可以修改为:TIM2中只置10ms时间到的标志,然后在主循环中查询这个标志并执行这一大段程序。
当然,前提条件是你的主循环并不复杂,执行一遍主循环的时间不能太长。
尹林
4楼-- · 2019-07-22 04:15
 精彩回答 2  元偷偷看……
kinshen
5楼-- · 2019-07-22 05:24
尹林 发表于 2018-12-4 14:20
楼主,建议你看看ST提供的文档“Cortex-M3 User Guide.pdf”,这份文档讲解了cortex-m3内核运行相关的一 ...

好的,谢谢,我来试试
kinshen
6楼-- · 2019-07-22 10:55
尹林 发表于 2018-12-4 14:20
楼主,建议你看看ST提供的文档“Cortex-M3 User Guide.pdf”,这份文档讲解了cortex-m3内核运行相关的一 ...

你好,请问,如果我只用一个定时器,中断里面程序还是比较多(执行时间只有1ms多点),定时器中断是10ms一次,而且我把堆栈调的比较大(0x2000),这样的话是不是可以避免堆栈的“压爆”问题?谢谢!

一周热门 更多>