打印
[STM8]

中断过多导致程序跑飞????

[复制链接]
8111|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaolanghahaha|  楼主 | 2013-5-28 20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
功能比较复杂的程序,开启了TIM1、Tim2、TIM3、TIM4 中断以及CAN通讯的接收中断,当把所有定时器中断屏蔽的时候,测试CAN通讯完全没有问题,程序在不使用通讯的时候运行也完全没有问题,可是当进行CAN通讯而且开启各个定时器中断的时候,程序运行有时候就会跑飞而自动重启。。。。。
应该怎么解决呢?
沙发
mmuuss586| | 2013-5-28 21:52 | 只看该作者
你不要吓我,我还准备开12个呢。

使用特权

评论回复
板凳
gxgclg| | 2013-5-28 22:28 | 只看该作者
程序贴出来看看

使用特权

评论回复
地板
无冕之王| | 2013-5-28 22:48 | 只看该作者
感觉应该不是中断过多的问题

使用特权

评论回复
5
baidudz| | 2013-5-28 23:07 | 只看该作者
gxgclg 发表于 2013-5-28 22:28
程序贴出来看看

贴一部分程序出来看看

使用特权

评论回复
6
figo20042005| | 2013-5-29 08:49 | 只看该作者
把CAN中断优先级设置低点

使用特权

评论回复
7
jamsan| | 2013-5-29 09:05 | 只看该作者
中断多时,尽量把中断任务简短。比如仅仅置一个标志位。然后在主程序或线程中,处理消息或标志。

使用特权

评论回复
8
grasswolfs| | 2013-5-29 09:30 | 只看该作者
一般要不就是中断等级没有设置好造成的,要不就是中断处理程序过长,一般建议在main程序中统一调度,中断程序不要过多处理

使用特权

评论回复
9
xiaolanghahaha|  楼主 | 2013-5-29 10:57 | 只看该作者
mmuuss586 发表于 2013-5-28 21:52
你不要吓我,我还准备开12个呢。

额。。好多,我这里确实是这种问题,感觉就是中断的问题呀

使用特权

评论回复
10
xiaolanghahaha|  楼主 | 2013-5-29 10:58 | 只看该作者
无冕之王 发表于 2013-5-28 22:48
感觉应该不是中断过多的问题

那还有什么情况会导致这种错误吗?

使用特权

评论回复
11
xiaolanghahaha|  楼主 | 2013-5-29 10:59 | 只看该作者
baidudz 发表于 2013-5-28 23:07
贴一部分程序出来看看

嗯,等会在最下面贴出来一部分中断的函数试试

使用特权

评论回复
12
xiaolanghahaha|  楼主 | 2013-5-29 10:59 | 只看该作者
jamsan 发表于 2013-5-29 09:05
中断多时,尽量把中断任务简短。比如仅仅置一个标志位。然后在主程序或线程中,处理消息或标志。 ...

嗯,现在就准备这么干呢,不知道好不好使

使用特权

评论回复
13
xiaolanghahaha|  楼主 | 2013-5-29 11:00 | 只看该作者
figo20042005 发表于 2013-5-29 08:49
把CAN中断优先级设置低点

嗯,我试试看

使用特权

评论回复
14
mcuatmel| | 2013-5-29 11:06 | 只看该作者
如果说中断中代码过多不会跑飞,但会死机;跑飞应该是硬件不稳定。

使用特权

评论回复
15
mmuuss586| | 2013-5-29 12:01 | 只看该作者
xiaolanghahaha 发表于 2013-5-29 10:57
额。。好多,我这里确实是这种问题,感觉就是中断的问题呀

实际上,我还开了一个CAN,3个串口,一个USB;
挂了FSMC总线,都没问题。
我用407

使用特权

评论回复
16
xiaolanghahaha|  楼主 | 2013-5-29 13:43 | 只看该作者
mmuuss586 发表于 2013-5-29 12:01
实际上,我还开了一个CAN,3个串口,一个USB;
挂了FSMC总线,都没问题。
我用407 ...

哦,那问一下,您对中断的处理,优先级的设置是什么样的呢?还有在中断中的操作,是有操作很多,还是仅仅置位,然后在主函数中进行操作呢?

使用特权

评论回复
17
xiaolanghahaha|  楼主 | 2013-5-29 13:43 | 只看该作者
mcuatmel 发表于 2013-5-29 11:06
如果说中断中代码过多不会跑飞,但会死机;跑飞应该是硬件不稳定。

能不能解释一下?程序死机和跑飞具体是什么吗?一直以为死机就是跑飞。。。。。

使用特权

评论回复
18
figo20042005| | 2013-5-29 14:33 | 只看该作者
中断中的变量尽量不要在主程序里改变,这样就可避免。还有中断的开关也不要在主程序频繁发生

使用特权

评论回复
19
jiabin1024| | 2013-5-29 14:33 | 只看该作者
xiaolanghahaha 发表于 2013-5-29 13:43
能不能解释一下?程序死机和跑飞具体是什么吗?一直以为死机就是跑飞。。。。。 ...

死机是指由于条件未满足程序进入了死循环(卡在某个地方出不来了) 跑飞是指收到外界的干扰导致程序没有按照设计的顺序执行

使用特权

评论回复
20
xiaolanghahaha|  楼主 | 2013-5-29 16:32 | 只看该作者
figo20042005 发表于 2013-5-29 14:33
中断中的变量尽量不要在主程序里改变,这样就可避免。还有中断的开关也不要在主程序频繁发生 ...

嗯,您说的中断中的变量指的是?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

44

帖子

1

粉丝