你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

急急急!!!stm8l芯片,传参值出现改变!!!

[复制链接]
hejiuqu 提问时间:2015-9-29 17:53 /

用的是IAR FOR STM8的环境,stlink 仿真器。传参时: 42(8}07ZD`0VA%UN`RQ~_$M.png



IAR中参数值: ZKTPI[LO4EZM3UOQ8G6A2UV.png }ZX0`57P6DON`U$_$%UY4(D.png



完整的函数体:

不知道有人碰到过这种情况没?有可能是什么原因?
出现这种状况,程序无法编下去了,求救各位大神!!!







收藏 评论8 发布时间:2015-9-29 17:53

举报

8个回答
moyanming2013 回答时间:2015-9-29 18:35:51
实在不清楚你在问什么!看汇编不是执行了正确的流程了吗?有时候IDE并不是非常准确,因为调试时可能存在的配合问题。

QQ截图20150929183427.jpg

hejiuqu 回答时间:2015-9-29 18:48:12
moyanming2013 发表于 2015-9-29 18:35
实在不清楚你在问什么!看汇编不是执行了正确的流程了吗?有时候IDE并不是非常准确,因为调试时可能存在的 ...

cmode的值我传的0,在IAR中观察的是0x34,下面那个函数没有涉及,这个参数没有进行操作,只是作判断!!当我把cmode == 0的条件改为comde == 0x34就可以了,不知道什么原因,在下面的编程中又出现这种问题了,程序编不下去了。
hejiuqu 回答时间:2015-9-29 18:52:35
moyanming2013 发表于 2015-9-29 18:35
实在不清楚你在问什么!看汇编不是执行了正确的流程了吗?有时候IDE并不是非常准确,因为调试时可能存在的 ...

而且我后面调试过程中发现,有个变量的值只可为0或1,但是观察看到的却是其他值,导致正常逻辑不行,按观察的值反而可以。
moyanming2013 回答时间:2015-9-29 23:28:33
本帖最后由 moyanming2013 于 2015-9-29 23:31 编辑
hejiuqu 发表于 2015-9-29 18:48
cmode的值我传的0,在IAR中观察的是0x34,下面那个函数没有涉及,这个参数没有进行操作,只是作判断!! ...

IDE中有时要手动刷新才会更新真实的数据。
可能的情况
1.作用域的问题。
2.栈的问题,函数参数没有正确压入或弹出。
3.对于形参加入一个volatile试试?或者像第一个形参似的,内部再申请一个并赋值。

但我认为,一般都是不细心造成的问题,你还是仔细再审查下自己的代码,从头开始一行不落。
zhuoyemp4 回答时间:2015-9-30 08:46:35
我想你还是仔细看看cmode这个变量都有哪些函数用过
ughbss 回答时间:2015-9-30 09:44:50
你在使用这个函数时有没有先申明?IAR FOR sTM8 中实测不申明函数也能调用(好奇怪),但是传递的参数会变,下面只会提示警告,不会报错。
hejiuqu 回答时间:2015-9-30 10:28:07
moyanming2013 发表于 2015-9-29 23:28
IDE中有时要手动刷新才会更新真实的数据。
可能的情况
1.作用域的问题。

今天我把形参改成u16 data_mode,同第一个一样再在内部加个mode,然后把data_mode 传给mode,最后才用mode做判断,可以了。不知道什么原因,很郁闷,不知道后面的程序会不会出问题。非常感谢各位的建议!!!
星辰一方 回答时间:2015-9-30 12:50:55
hejiuqu 发表于 2015-9-29 18:48
cmode的值我传的0,在IAR中观察的是0x34,下面那个函数没有涉及,这个参数没有进行操作,只是作判断!! ...

该不会是把数值0和ASCII码的0搞混了吧楼主

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版