[STM32F1] 代码运行错乱

[复制链接]
2367|40
zhenykun 发表于 2021-11-5 23:05 | 显示全部楼层
可以尝试将代码一段一段屏蔽,看看到底哪里除了问题。
jlyuan 发表于 2021-11-5 23:08 | 显示全部楼层
另外,请你也注意下优化方面的问题。
 楼主| pengf 发表于 2021-11-5 23:09 | 显示全部楼层
这些基本的检查我肯定有做的,count这个变量只用几行代码里,一个初始为0,一个累加,二个判断,我屏蔽掉定义这个变量编译一下就看可看出哪里出错。
 楼主| pengf 发表于 2021-11-5 23:12 | 显示全部楼层
这种写法我已经用几年了都没问题,就前段时间做的一台设备出现这种情况,关键是不是一直出现这种情况
 楼主| pengf 发表于 2021-11-5 23:15 | 显示全部楼层
通过将供电插头慢慢拔出(没有真正拔出)就可以模拟出这种情况,所以怀疑和供电不稳有关,后来只能将代码改成解决了问题:新增一个变量val,但这样做效率不高而且还增加了变量。
 楼主| pengf 发表于 2021-11-5 23:17 | 显示全部楼层

if(val==1)
{
       if(count>50)first=1;
       val=0;
}
       if(count>100)
       {
            second+=1;
       }
       else count++;
}
搞得我现在都不敢用这种写法了
heweibig 发表于 2021-11-5 23:18 | 显示全部楼层
照理是不应该出现这种情况,要么程序出现复位,要么正常运行,但现在偏偏是程序又没有复位
jiaxw 发表于 2021-11-5 23:20 | 显示全部楼层
但又没有正常运行
 楼主| pengf 发表于 2021-11-5 23:22 | 显示全部楼层
到底是count++这句跳过50这个值还是当count=50时没有执行if(count==50)first=1;
 楼主| pengf 发表于 2021-11-5 23:24 | 显示全部楼层
我把代码写清楚一点吧,出问题的代码如下,u8 a,b,c,d,e;   //全局变量,这几个变量只在如下代码中出现,没有任何其它地方出现
if(a==1)
{
    b=1;
    c=0;
    a=0;
}
if(b==1)
{
    if(c==10)d=1;   //d偶尔无法赋值为1
    if(c>100)
    {
         e=1;
         b=0;
    }
    else c++;
}

当程序检测到a等于1时给b和c赋初值,然后执行下面一段代码,当c=10时给d赋值为1(就是d偶尔没有赋值为1),e可以正常赋值为1
 楼主| pengf 发表于 2021-11-5 23:29 | 显示全部楼层
而且这种写法我都用几年了都没出问题,只是这台设备出现这问题
 楼主| pengf 发表于 2021-11-5 23:31 | 显示全部楼层
只有改成以下这样才能正常运行u8 a,b,c,d,e,val;   //全局变量,这几个变量只在如下代码中出现,没有任何其它地方出现
if(a==1)
{
    b=1;
    c=0;
    val=1;
    a=0;
}
if(b==1)
{
    if(val==1)    //改成这样写就没问题
    {
         if(c>9)d=1;
         val=0;
    }
    if(c>100)
    {
         e=1;
         b=0;
    }
    else c++;
}

这样就可以正常运行,但增加了变量,效率也不高。
zwll 发表于 2021-11-5 23:34 | 显示全部楼层
这个是常量了啊
dingy 发表于 2021-11-5 23:36 | 显示全部楼层
条件判定有问题吧
 楼主| pengf 发表于 2021-11-5 23:39 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家
renzheshengui 发表于 2021-12-3 12:02 | 显示全部楼层
是不是芯片个体的现象啊
tpgf 发表于 2021-12-3 12:07 | 显示全部楼层
检查一下供电电源
keaibukelian 发表于 2021-12-3 12:08 | 显示全部楼层
只有这一个机器会出这个问题吗
labasi 发表于 2021-12-3 12:10 | 显示全部楼层
仿真一下看看为什么会跳变啊
paotangsan 发表于 2021-12-3 12:12 | 显示全部楼层
现象描述的不是很清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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