[应用相关] 写程序时遇到的一个问题

[复制链接]
3568|34
 楼主| alsort 发表于 2016-2-15 15:07 来自手机 | 显示全部楼层 |阅读模式
大家新年快乐

最近调试时突然出现一种奇怪的现象(bug)

定义全局变量flag(char类型)声明时赋值为0

串口通信接收一串数据成功后flag变为1,主程序中轮询if(flag)。

带仿真器跑一切正常

上电自己跑的时候会出现没有串口通信也会执行if(flag)条件内语句

通过IO监测,出现上述情况时flag并未在串口中断中被赋值为1

各位帮忙分析下

有避免的方法就是if(flag==0x55……)加强判断复杂性!

但治标不治本,请大神帮忙!

wyde518 发表于 2016-2-15 17:26 | 显示全部楼层
本帖最后由 wyde518 于 2016-2-15 17:27 编辑

串口通讯成功flag=0X55, 主程序中if(flag==1)看看什么情况,此目的是为了排除flag在其他地方使用.   
还有你在什么地方复位的FLAG
 楼主| alsort 发表于 2016-2-15 17:43 来自手机 | 显示全部楼层
wyde518 发表于 2016-2-15 17:26
串口通讯成功flag=0X55, 主程序中if(flag==1)看看什么情况,此目的是为了排除flag在其他地方使用.   
还 ...

if条件进入后复位flag

反复查了下程序和变量存储位置,没有在别的地方使用了

就是 生效 判断 复位
maiweiqi 发表于 2016-2-15 18:06 | 显示全部楼层
如果你没有在其他地方用到flag的话,那应该是某个指针越位了,指到了flag的地址,然后把flag更改了。
 楼主| alsort 发表于 2016-2-15 18:19 来自手机 | 显示全部楼层
maiweiqi 发表于 2016-2-15 18:06
如果你没有在其他地方用到flag的话,那应该是某个指针越位了,指到了flag的地址,然后把flag更改了。 ...

这种情况在每次上电时随机出现,如果是指针越位,是代码问题吗
ccw1986 发表于 2016-2-15 19:44 | 显示全部楼层
指针用的有问题吧,可能是越界了
玄德 发表于 2016-2-15 22:14 | 显示全部楼层

地板说的情况很有可能。


lemonboard 发表于 2016-2-15 22:16 | 显示全部楼层
这种情况出现后调试有些麻烦!
建议通过该变量内存写入时触发中断的方式来调试
ticomi 发表于 2016-2-16 09:12 | 显示全部楼层
将flag变量的声明前加上__IO试试!!
eydj2008 发表于 2016-2-16 09:37 | 显示全部楼层
我分析 好像是被优化掉了一样。 你要找到数据在什么时候被改变的。还是根本没有初始化。
ljhtj 发表于 2016-2-16 11:16 | 显示全部楼层
有时候,对于某些变量,不听使唤或条件语句乱来,要考虑是不是,1.变量占用空间太大,RAM不够用。2.编译器优化没有导致,重新完全编译程序。3.编译器问题,重启编译器。
 楼主| alsort 发表于 2016-2-16 12:08 来自手机 | 显示全部楼层
ljhtj 发表于 2016-2-16 11:16
有时候,对于某些变量,不听使唤或条件语句乱来,要考虑是不是,1.变量占用空间太大,RAM不够用。2.编译器 ...

这种情况在每次上电工作后随机出现,参考楼上各位意见,我先研究下指针越位问题,换个不同版本的编译器……
gcy_eyic 发表于 2016-2-16 12:36 | 显示全部楼层
是否可以贴程序出来看!
天灵灵地灵灵 发表于 2016-2-16 15:54 | 显示全部楼层
这是 电脑 程序应用还是 单片机程序                                
 楼主| alsort 发表于 2016-2-16 16:16 来自手机 | 显示全部楼层
天灵灵地灵灵 发表于 2016-2-16 15:54
这是 电脑 程序应用还是 单片机程序

单片机
colin2135 发表于 2016-2-16 16:23 | 显示全部楼层
应该就是被优化掉了,变量前加上__IO
尤彼卡 发表于 2016-2-16 21:41 | 显示全部楼层
应该是某个指针越位了
zjh2009 发表于 2016-2-16 22:46 | 显示全部楼层
volatile 一下试试,如果你的复位是在中断或者其他线程里面使用的话
戈卫东 发表于 2016-2-16 23:13 | 显示全部楼层
也许是MCU没有复位。。。。。
huangcunxiake 发表于 2016-2-17 08:51 | 显示全部楼层
修改变量类型为  volatile
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

86

帖子

0

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