打印
[STM32F1]

代码运行错乱

[复制链接]
楼主: pengf
手机看帖
扫描二维码
随时随地手机跟帖
21
zhenykun| | 2021-11-5 23:05 | 只看该作者 回帖奖励 |倒序浏览
可以尝试将代码一段一段屏蔽,看看到底哪里除了问题。

使用特权

评论回复
22
jlyuan| | 2021-11-5 23:08 | 只看该作者
另外,请你也注意下优化方面的问题。

使用特权

评论回复
23
pengf|  楼主 | 2021-11-5 23:09 | 只看该作者
这些基本的检查我肯定有做的,count这个变量只用几行代码里,一个初始为0,一个累加,二个判断,我屏蔽掉定义这个变量编译一下就看可看出哪里出错。

使用特权

评论回复
24
pengf|  楼主 | 2021-11-5 23:12 | 只看该作者
这种写法我已经用几年了都没问题,就前段时间做的一台设备出现这种情况,关键是不是一直出现这种情况

使用特权

评论回复
25
pengf|  楼主 | 2021-11-5 23:15 | 只看该作者
通过将供电插头慢慢拔出(没有真正拔出)就可以模拟出这种情况,所以怀疑和供电不稳有关,后来只能将代码改成解决了问题:新增一个变量val,但这样做效率不高而且还增加了变量。

使用特权

评论回复
26
pengf|  楼主 | 2021-11-5 23:17 | 只看该作者

if(val==1)
{
       if(count>50)first=1;
       val=0;
}
       if(count>100)
       {
            second+=1;
       }
       else count++;
}
搞得我现在都不敢用这种写法了

使用特权

评论回复
27
heweibig| | 2021-11-5 23:18 | 只看该作者
照理是不应该出现这种情况,要么程序出现复位,要么正常运行,但现在偏偏是程序又没有复位

使用特权

评论回复
28
jiaxw| | 2021-11-5 23:20 | 只看该作者
但又没有正常运行

使用特权

评论回复
29
pengf|  楼主 | 2021-11-5 23:22 | 只看该作者
到底是count++这句跳过50这个值还是当count=50时没有执行if(count==50)first=1;

使用特权

评论回复
30
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

使用特权

评论回复
31
pengf|  楼主 | 2021-11-5 23:29 | 只看该作者
而且这种写法我都用几年了都没出问题,只是这台设备出现这问题

使用特权

评论回复
32
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++;
}

这样就可以正常运行,但增加了变量,效率也不高。

使用特权

评论回复
33
zwll| | 2021-11-5 23:34 | 只看该作者
这个是常量了啊

使用特权

评论回复
34
dingy| | 2021-11-5 23:36 | 只看该作者
条件判定有问题吧

使用特权

评论回复
35
pengf|  楼主 | 2021-11-5 23:39 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
36
renzheshengui| | 2021-12-3 12:02 | 只看该作者
是不是芯片个体的现象啊

使用特权

评论回复
37
tpgf| | 2021-12-3 12:07 | 只看该作者
检查一下供电电源

使用特权

评论回复
38
keaibukelian| | 2021-12-3 12:08 | 只看该作者
只有这一个机器会出这个问题吗

使用特权

评论回复
39
labasi| | 2021-12-3 12:10 | 只看该作者
仿真一下看看为什么会跳变啊

使用特权

评论回复
40
paotangsan| | 2021-12-3 12:12 | 只看该作者
现象描述的不是很清晰

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则