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

2019-12-10 18:32发布

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

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

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

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

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

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

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

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

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

//------------------------
程序里没有操作变量、数组。没有串口、中断、DAM等等,就一个遥控接收板,主动执行的只有if去判断有没有收到RF模块IO口的信号
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zpywz
1楼-- · 2019-12-11 06:14
 精彩回答 2  元偷偷看……
nanfang2000
2楼-- · 2019-12-11 08:13
栈是不是溢出了
wuha
3楼-- · 2019-12-11 10:22
zpywz 发表于 2019-5-23 08:17
请问,没去操作变量和数组也会溢出吗?我仿真一步步的看过明确是没有操作变量和数组的。 ...

变量就是保存在内存里的,无缘无故改变,肯定是别的地方的指针越界,跑到这里来了。仔细查查吧,不光是各种变量,数组,指针,不光是主动操作的,也有硬件操作的内存,比如串口接收中断是否有地址累加接收,DMA接收的数据等。
ArthurBruin
4楼-- · 2019-12-11 11:36
变量声明为static
richie550
5楼-- · 2019-12-11 12:26
这现象 十有八九就是溢出了,指针的使用、中断程序的处理 都好好查一下吧
startwar0418
6楼-- · 2019-12-11 17:49
 精彩回答 2  元偷偷看……

一周热门 更多>