”变量的值被干扰改变“这种干扰的可能性大吗?

2020-01-10 19:40发布

问题的起因:有两块相同的板,STM32F103的,HEX程序是一样的,

一个接了变频器,一个是普通的电阻式温度传感器,运行的结果是,接了变频器的那块板运行一到二天就不通讯了,
象块砖一样,重启一下就OK。

但程序没有死,有看门狗设计,main程序中,控制了一个LED的闪烁,均正常,
串口收到信号,也能进中断。因为在串口中断中,会点亮一个LED,然后在一个100ms的定时中断中,这个LED会被关掉,这个LED的闪烁也正常。


接变频器板换过两次,问题依旧,项目在外地,一到二天出现一次,解决起来非常痛苦。想来想去,有没有这种可能性,比如某个值K1,
mail()
{
    K1=1;  
   while()
   {

  }
}

K1只是在起动初时赋值,也只有一次赋值,但经过长时间的运行,K1的值变成了其它数值,这种情况各位网友有无遇到过?谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
36条回答
lhj200304
1楼-- · 2020-01-14 23:40
数组越界的问题可以用PC lint试试看
No.5
2楼-- · 2020-01-15 01:12
xjmlfm1 发表于 2018-5-22 13:14
肯定的说,这不是有没有可能的事,而是事实。
做过EMC就有体会了,程序中有些标志位,用8位的变量比用bit型 ...

请教一下,对于一个0,1开关量,一个好的抗干扰设计应当怎样写呢?
0x5a受干扰不是一样变成其他值吗?难道用0x00和0xff,然后数0和1的个数?
No.5
3楼-- · 2020-01-15 01:15
popo_new 发表于 2018-6-9 14:04
通过一个LED,我监控K1的值,只有K1的值为1,LED就亮,否则就灭,结果,即使出现故障时,K1依旧为1,且USAR ...

既然k1初始化完成后就不动了,不妨把k1放在flash中试一下。
#define k1 1
而不要u8 k1=1;
waterx3
4楼-- · 2020-01-15 01:40
 精彩回答 2  元偷偷看……
yanhaijian2005
5楼-- · 2020-01-15 03:52
大胆猜测,谨慎验证。
xjmlfm1
6楼-- · 2020-01-15 08:36
No.5 发表于 2018-6-11 10:50
请教一下,对于一个0,1开关量,一个好的抗干扰设计应当怎样写呢?
0x5a受干扰不是一样变成其他值吗?难道 ...

要看实际的应用
比如开关量,如果闭合才能产生下一步动作,那么把闭合定义为0x5a,当且仅当这个值为0x5a时,才会动作,其它值,一律当作开关量没有闭合。

一周热门 更多>