msp430f247程序运行一段时间,跑飞,从头开始运行

[复制链接]
3996|45
yirongfu 发表于 2017-5-17 00:43 | 显示全部楼层
backlugin 发表于 2017-5-16 22:11
现在中断函数不能执行太多,否则其他中断不能执行。

中断有优先级,中断可以嵌套,“现在中断函数不能执行太多”这个不是现在才这样哦,是一直以来都推荐中断不要占用太多时钟周期,但我个人觉得不是说中断函数执行多了就一定是错,要看应用环境和单片机具体的中断机制,还要看设计人员编程的能力和质量。楼主的问题描述非常有限(提问的质量可以窥见其做事的风格和态度),不能具体分析问题所在,但即使他几个外设同时工作,某个时刻只在处理某个外设的中断事件,而同时有其它外设也来了中断,那最坏的可能只是其它中断没有及时处理甚至错过,但不至于导致程序跑飞,跑飞应该是人为的失误,可能是硬件设计也可能是软件设计。
 楼主| 外方爱 发表于 2017-5-17 09:25 | 显示全部楼层
yirongfu 发表于 2017-5-17 00:43
中断有优先级,中断可以嵌套,“现在中断函数不能执行太多”这个不是现在才这样哦,是一直以来都推荐中断 ...

硬件我肯定没问题,我有个疑问,UART0接收数据,我写的是进入400次中断,每次接收一个字符,这样会不会影响
xuexi_2013 发表于 2017-5-17 09:42 | 显示全部楼层
最好不要让中断嵌套执行
王紫豪 发表于 2017-5-17 14:49 | 显示全部楼层
硬件不可靠,数组溢出、堆栈溢出,都有可能导致你说的现象。
鹏帝战天下 发表于 2017-5-17 14:59 | 显示全部楼层
函数执行的代码是不是很多?
biechedan 发表于 2017-5-17 22:03 | 显示全部楼层
这个函数冲突有问题?
biechedan 发表于 2017-5-17 22:03 | 显示全部楼层
在中断里面不要执行太多的函数,否则中断不能及时响应。
yirongfu 发表于 2017-5-18 01:16 | 显示全部楼层
外方爱 发表于 2017-5-17 09:25
硬件我肯定没问题,我有个疑问,UART0接收数据,我写的是进入400次中断,每次接收一个字符,这样会不会影 ...

我觉得不会影响。
我平常的处理思路跟你一样,中断中只处理接收一个字符和做必要的且尽可能少的标志位,然后到主循环中去做其它处理,比如解析报文。跟进多少次没有影响,收到完整的一串报文了再处理,这个完整可以在中断中进行判断,比如以报头和报尾的特殊字符作为标识,从这个意义上来说,可以进无限次中断。但就像其它坛友说的,如果你这400次接收的字符没有存放好,数组或者堆栈溢出,那就会系统复位。所以,在接收完毕之前,应该确保存储数据的空间足够,接收完毕在数据处理期间,如果还可能有新数据接收,应该确保接收缓冲区足够,及时腾出不再用的空间,其它外设的运行也一样思路,保证好堆栈和数组不溢出、程序流程不进死胡同,那应该不会跑飞的,顶多就是丢失部分发来的数据或者某些事件没响应,但程序不至于跑飞。
 楼主| 外方爱 发表于 2017-5-18 09:28 | 显示全部楼层
yirongfu 发表于 2017-5-18 01:16
我觉得不会影响。
我平常的处理思路跟你一样,中断中只处理接收一个字符和做必要的且尽可能少的标志位, ...

感谢,应该是数据溢出的问题,感谢提供思路
dirtwillfly 发表于 2017-5-18 10:51 | 显示全部楼层
yirongfu 发表于 2017-5-18 01:16
我觉得不会影响。
我平常的处理思路跟你一样,中断中只处理接收一个字符和做必要的且尽可能少的标志位, ...

gygp 发表于 2017-5-18 23:54 | 显示全部楼层
这是中断之间存在冲突了吧。
gygp 发表于 2017-5-18 23:56 | 显示全部楼层
不同的中断间隔太短,造成了中断信号的挤压。
plsbackup 发表于 2017-5-19 08:24 | 显示全部楼层
中断应该执行的太多造成的信号拥挤。
plsbackup 发表于 2017-5-19 08:25 | 显示全部楼层
楼主可以试试,简化内部的中断程序。
selongli 发表于 2017-5-19 17:08 | 显示全部楼层
从头开始运行就是程序复位了。
selongli 发表于 2017-5-19 17:11 | 显示全部楼层
楼主开启看门狗了吗?
1988020566 发表于 2017-5-20 22:16 | 显示全部楼层
开启看门狗了吗?
1988020566 发表于 2017-5-20 22:18 | 显示全部楼层
感觉楼主这个是中断代码太大造成的呢。
plsbackup 发表于 2017-5-21 22:04 | 显示全部楼层
程序跑飞可能是内部中断冲突。
plsbackup 发表于 2017-5-21 22:05 | 显示全部楼层
以前两路串口就容易造成信号干扰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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