[STM8] 中断过多导致程序跑飞????

[复制链接]
10145|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 | 显示全部楼层
感觉应该不是中断过多的问题
baidudz 发表于 2013-5-28 23:07 | 显示全部楼层
gxgclg 发表于 2013-5-28 22:28
程序贴出来看看

贴一部分程序出来看看
figo20042005 发表于 2013-5-29 08:49 | 显示全部楼层
把CAN中断优先级设置低点
jamsan 发表于 2013-5-29 09:05 | 显示全部楼层
中断多时,尽量把中断任务简短。比如仅仅置一个标志位。然后在主程序或线程中,处理消息或标志。
grasswolfs 发表于 2013-5-29 09:30 | 显示全部楼层
一般要不就是中断等级没有设置好造成的,要不就是中断处理程序过长,一般建议在main程序中统一调度,中断程序不要过多处理
 楼主| xiaolanghahaha 发表于 2013-5-29 10:57 | 显示全部楼层
mmuuss586 发表于 2013-5-28 21:52
你不要吓我,我还准备开12个呢。

额。。好多,我这里确实是这种问题,感觉就是中断的问题呀
 楼主| xiaolanghahaha 发表于 2013-5-29 10:58 | 显示全部楼层
无冕之王 发表于 2013-5-28 22:48
感觉应该不是中断过多的问题

那还有什么情况会导致这种错误吗?
 楼主| xiaolanghahaha 发表于 2013-5-29 10:59 | 显示全部楼层
baidudz 发表于 2013-5-28 23:07
贴一部分程序出来看看

嗯,等会在最下面贴出来一部分中断的函数试试
 楼主| xiaolanghahaha 发表于 2013-5-29 10:59 | 显示全部楼层
jamsan 发表于 2013-5-29 09:05
中断多时,尽量把中断任务简短。比如仅仅置一个标志位。然后在主程序或线程中,处理消息或标志。 ...

嗯,现在就准备这么干呢,不知道好不好使
 楼主| xiaolanghahaha 发表于 2013-5-29 11:00 | 显示全部楼层
figo20042005 发表于 2013-5-29 08:49
把CAN中断优先级设置低点

嗯,我试试看
mcuatmel 发表于 2013-5-29 11:06 | 显示全部楼层
如果说中断中代码过多不会跑飞,但会死机;跑飞应该是硬件不稳定。
mmuuss586 发表于 2013-5-29 12:01 | 显示全部楼层
xiaolanghahaha 发表于 2013-5-29 10:57
额。。好多,我这里确实是这种问题,感觉就是中断的问题呀

实际上,我还开了一个CAN,3个串口,一个USB;
挂了FSMC总线,都没问题。
我用407
 楼主| xiaolanghahaha 发表于 2013-5-29 13:43 | 显示全部楼层
mmuuss586 发表于 2013-5-29 12:01
实际上,我还开了一个CAN,3个串口,一个USB;
挂了FSMC总线,都没问题。
我用407 ...

哦,那问一下,您对中断的处理,优先级的设置是什么样的呢?还有在中断中的操作,是有操作很多,还是仅仅置位,然后在主函数中进行操作呢?
 楼主| xiaolanghahaha 发表于 2013-5-29 13:43 | 显示全部楼层
mcuatmel 发表于 2013-5-29 11:06
如果说中断中代码过多不会跑飞,但会死机;跑飞应该是硬件不稳定。

能不能解释一下?程序死机和跑飞具体是什么吗?一直以为死机就是跑飞。。。。。
figo20042005 发表于 2013-5-29 14:33 | 显示全部楼层
中断中的变量尽量不要在主程序里改变,这样就可避免。还有中断的开关也不要在主程序频繁发生
jiabin1024 发表于 2013-5-29 14:33 | 显示全部楼层
xiaolanghahaha 发表于 2013-5-29 13:43
能不能解释一下?程序死机和跑飞具体是什么吗?一直以为死机就是跑飞。。。。。 ...

死机是指由于条件未满足程序进入了死循环(卡在某个地方出不来了) 跑飞是指收到外界的干扰导致程序没有按照设计的顺序执行
 楼主| xiaolanghahaha 发表于 2013-5-29 16:32 | 显示全部楼层
figo20042005 发表于 2013-5-29 14:33
中断中的变量尽量不要在主程序里改变,这样就可避免。还有中断的开关也不要在主程序频繁发生 ...

嗯,您说的中断中的变量指的是?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

44

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部