[STM32F1] 代码运行错乱

[复制链接]
2367|40
 楼主| pengf 发表于 2021-11-5 22:15 | 显示全部楼层 |阅读模式
有一段代码在以前的设备中都运行正常,今天在一台设备也是类似的写法却出现问题,程序没有跑死,也没有复位,但第三代码无法被执行,third没被赋值为1,也就是说 if(count==50)first=1;没执行,导致 third=1;也没执行,难道count这个变量从49直接跳过50到51了?
zhenykun 发表于 2021-11-5 22:18 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| pengf 发表于 2021-11-5 22:20 | 显示全部楼层
count的值为101,second这个变量一直在累加,说明程序正常运行,百思不得其解
zhanghqi 发表于 2021-11-5 22:22 | 显示全部楼层
供电不稳定
 楼主| pengf 发表于 2021-11-5 22:24 | 显示全部楼层
我也尝试瞬断供电也模拟出这种情况,要说电压过低MCU也会复位啊,但它又没有复位
 楼主| pengf 发表于 2021-11-5 22:26 | 显示全部楼层
我的程序开启了低电压检测,但在中断里只是保存一些不相关的数据而已,为何count累加时会跳过50这个值呢?
dengdc 发表于 2021-11-5 22:29 | 显示全部楼层
同样的写法在别的设备上
 楼主| pengf 发表于 2021-11-5 22:33 | 显示全部楼层
没问题,用的都是一样的板子
huangchui 发表于 2021-11-5 22:35 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| pengf 发表于 2021-11-5 22:39 | 显示全部楼层

u8 count,first,second,third;
int main(void)
{
   count=0;
   first=0;
   second=0;
   third=0;
   while(1)
   {
       if(count==50)first=1;
       if(count>100)
       {
            second+=1;
       }
       else count++;
      //第三段代码
       if(first==1)
       {
           third=1;
       }
       ......
   }
}
juventus9554 发表于 2021-11-5 22:40 | 显示全部楼层
count在其它地方有改变吧
 楼主| pengf 发表于 2021-11-5 22:44 | 显示全部楼层
count只在一个地方累加
heweibig 发表于 2021-11-5 22:44 | 显示全部楼层
你可以考虑把count的定义放在main函数里试试,说不定有效果
jlyuan 发表于 2021-11-5 22:46 | 显示全部楼层
随便弄段代码就让人家解释?
stly 发表于 2021-11-5 22:48 | 显示全部楼层
这个问题应该是整个系统问题,需要看完整的工程
 楼主| pengf 发表于 2021-11-5 22:50 | 显示全部楼层
整个工程放上来,谁有那时间看啊,我把示例放上来就是让大家看得明白又不费时间,count这个变量就是在一个文件里定义的全局变量,而且其它文件没有用到这个变量,这个变量也没有在任何中断里调用过
dengdc 发表于 2021-11-5 22:52 | 显示全部楼层
增加一些调试信息看看吧,比如在count++那里把count值打印出来,观察一下count值的变化过程
 楼主| pengf 发表于 2021-11-5 22:59 | 显示全部楼层
关键不是经常会这样,只是在某一块机器偶尔会出现这种情况
 楼主| pengf 发表于 2021-11-5 23:02 | 显示全部楼层
怀疑是供电不稳导致,但不明白为什么程序又没有复位只是异常
dengdc 发表于 2021-11-5 23:03 | 显示全部楼层
但愿你这里描述的跟你的真实问题是一致的。

确认该变量有无可能被其它地方改动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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