【请教】STM8程序运行一段时间后变量莫名变化是哪里问题?

2019-12-10 18:32发布

本帖最后由 zpywz 于 2019-5-23 10:45 编辑

前段时间用IAR写了个STM8S003的程序,用于一个输出开关量的遥控器。

现在问题是接收部分后每次上电放置一会儿,或几个小时在去操作就失控了。

IAR仿真观察了两天,发现是运行过程中有一部分变量的值会莫名改变所导致的。
我测试方法是在程序中设置了if判断,如果该变量 莫名改变就进入设置了断点语句。

进行仿真,有时几分钟,有时几个小时 就会进入设置了断点的语句,没个准。
同时还发现其它一堆的变量也都会 无故改变了。

//------------------------
程序正常运行过程中是不会去操作这些变量的, 我有也在操作这些变量的语句处加了断点测试过,出错前没有去操作过它们。

板子供电很稳定,用电钻、对讲机在边上干扰也没出问题。

我PCB上做了一个重新赋值的按钮,给几个关键变量重新赋值后,程序还是能继续正常跑的。所以这应该不是所谓的跑飞吧?

//------------------------
排查了几天也看不出有什么问题,特上来请教下各位坛友 ,问题可能会在哪里?

//------------------------
程序里没有操作变量、数组。没有串口、中断、DAM等等,就一个遥控接收板,主动执行的只有if去判断有没有收到RF模块IO口的信号
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
dadatou
1楼-- · 2019-12-11 20:00
有可能是原子操作的问题,变量值有在中断里面修改吗?
eaglelpx
2楼-- · 2019-12-12 00:58
大半是数组
zpywz
3楼-- · 2019-12-12 06:47
tomzbj 发表于 2019-5-22 22:28
一般就是内存越界了呗。。

谢谢各位,问题已解决,确实是数组越界的问题。
我是用的RF模块例程。其中有个函数是根据接收到的数据长度去写数组,然而并没有限定数据长度。
正常情况下数据不会太长问题反映不出来,当收到过长的杂讯,数组就立马越界了。
zpywz
4楼-- · 2019-12-12 07:13
qinxg 发表于 2019-5-23 07:57
把所有数组,指针检查下,多半溢出了

谢谢各位,问题已解决,确实是数组越界的问题。
我是用的RF模块例程。其中有个函数是根据接收到的数据长度去写数组,然而并没有限定数据长度。
正常情况下数据不会太长问题反映不出来,当收到过长的杂讯,数组就立马越界了。
zpywz
5楼-- · 2019-12-12 11:51
 精彩回答 2  元偷偷看……
didadida
6楼-- · 2019-12-12 14:45
哈哈,接受数组越界的问题,我之前也遇到过,人肉调试两天复现

一周热门 更多>