hejiuqu 发表于 2015-9-29 17:53:44

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




用的是IAR FOR STM8的环境,stlink 仿真器。传参时:



IAR中参数值:



完整的函数体: https://www.stmcu.org.cn/module/forum/data/attachment/forum/201509/29/174745vvq2j293vvvzj2ji.png

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







https://www.stmcu.org.cn/module/forum/static/image/common/fav.gif收藏


moyanming2013 发表于 2015-9-29 18:35:51

实在不清楚你在问什么!看汇编不是执行了正确的流程了吗?有时候IDE并不是非常准确,因为调试时可能存在的配合问题。



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搞混了吧楼主
页: [1]
查看完整版本: 急急急!!!stm8l芯片,传参值出现改变!!!