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

2019-07-21 06:58发布

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

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

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

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

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

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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
尹林
1楼-- · 2019-07-21 11:50
楼主,尽量别把应用级别的代码放在中断处理函数里面执行,因为每进入一次中断相关数据会被压栈的,如果中断处理函数执行的时间过长,可能会导致栈还没有释放下一次中断又到来了,结果导致又有数据被压栈了,那么这样循环下去,栈就会被压爆的,这个时候系统就死机了,也就是程序跑飞了。仅供参考,谢谢
275891381
2楼-- · 2019-07-21 11:56
看着没啥问题,再上传两个中断函数吧
275891381
3楼-- · 2019-07-21 14:52
首先定时器2中断看着有点乱,有点长没法看   sensor_read()这个函数不知道啥情况,内部没延时,while()之类的,不过你这两个中断也不抢占应该没啥问题,有while()之类做好出错退出处理没
kinshen
4楼-- · 2019-07-21 16:34
275891381 发表于 2018-12-2 22:10
首先定时器2中断看着有点乱,有点长没法看   sensor_read()这个函数不知道啥情况,内部没延时,while()之类 ...

没有延时,感觉是抢占的时候出问题了,但是不知道确切的原因,想找出来。跑飞后,主程序进不去,两个定时器中断一直在运行
275891381
5楼-- · 2019-07-21 17:18
 精彩回答 2  元偷偷看……
kinshen
6楼-- · 2019-07-21 18:34
275891381 发表于 2018-12-2 22:32
优先级一样哪有抢占,这个中断不执行完,不会去别的中断   尽量简化中断内函数把

因为之前设置了抢占,出了问题,现在初始化没有抢占了,也还是出问题。。。

一周热门 更多>