打印
[STM8]

几个工程师讨论没解决??? STM8S

[复制链接]
2763|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wgggjfg|  楼主 | 2010-3-9 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
reg=get_datas_bit(7654321,6);
该函数在main下掉用,返回的reg=6;
但从子函数中经过1个if,2个switch后掉用后返回的reg=0;
函数如下:
u8 get_datas_bit(u32 datain,u8 sp)
{        u8 i,value;
        for(i=1;i<sp;i++)
        {        datain/=10;
        }
        value=(u8)(datain%10);
        return value;
}
我试过关掉所有中断;编译器设置为不进行优化;甚至脱离仿真器直接运行,都表现为不正常。
单片机型号为:stm8s105k6
仿真器为:Rlink RAISONANCE
用的开发软件为:ST Visual Develop Version 4.1.3
我们几个工程师讨论都没解决,希望有高人解决。
沙发
lollipooop| | 2010-3-9 11:17 | 只看该作者
上完整代码,
不要让大家猜迷。

使用特权

评论回复
板凳
香水城| | 2010-3-9 11:17 | 只看该作者
有可能是堆栈有问题。

看看编译出的ASM代码,再单步调试看看。

使用特权

评论回复
地板
ShakaLeo| | 2010-3-9 11:18 | 只看该作者
用仿真器单步运行到出错的那个地方,分析一下出错的那个地方的汇编代码比较有效。

使用特权

评论回复
5
wgggjfg|  楼主 | 2010-3-9 12:24 | 只看该作者
完整代码太长,而且在几个文件中,会看晕的。
我也觉得可能是堆栈有问题。
但怎么解决。

使用特权

评论回复
6
lxyppc| | 2010-3-9 13:30 | 只看该作者
看生成的汇编代码

使用特权

评论回复
7
t.jm| | 2010-3-9 23:38 | 只看该作者
也许返回值没用在有用的地方,被优化掉了。

使用特权

评论回复
8
bili| | 2010-3-10 14:03 | 只看该作者
将reg变量初始化为静态变量即可,堆栈本身没有问题。

使用特权

评论回复
9
bili| | 2010-3-11 15:15 | 只看该作者
将reg变量设置为全局变量也可以

使用特权

评论回复
10
有意思| | 2010-3-14 21:43 | 只看该作者
用printf打印每次循环的值,一看便知

使用特权

评论回复
11
草帽小子| | 2010-3-15 12:39 | 只看该作者
哎,Cosmic有点烂。。

使用特权

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

本版积分规则

个人签名:专业人做专业事!高效充电。

65

主题

438

帖子

3

粉丝