打印
[STM8]

求救 STM8 ram问题

[复制链接]
2180|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huiguang_1|  楼主 | 2012-6-26 13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是STM8S903K3驱动的无刷直流电机,现在问题是这样子的,当我编译程序后如果ram大于等于132的话程序就会跑飞(拧转把电机运行不正常),如果当前ram用量为128,我再多定义两个全局变量unsigned int a;unsigned int b,只定义不运用,然后编译ram为132,程序就会跑飞,如果我去掉这两个变量,或者去掉程序中任何两个使ram小于132,程序就能正常运行。这大致是怎么引起的?请大家指教一下。
沙发
香水城| | 2012-6-26 13:52 | 只看该作者
可能性很多,我看比较可能是数组指针溢出

关键是找到程序跑飞的点,上下一调试即可知问题所在

使用特权

评论回复
板凳
huiguang_1|  楼主 | 2012-6-26 14:29 | 只看该作者
本帖最后由 huiguang_1 于 2012-6-26 14:32 编辑

unsigned int a2;
void BeginMotoNonsynchronous_v(void)
{
        unsigned char Halltemp;
        extern unsigned char  HallOld;
   
        uiHallCountP5_5=0;
        uiHallCountP5_6=0;
        uiHallCountP5_7=0;

        Halltemp=PB_IDR>>5;
        a2 ++;
        PORT_B(LowSide[Halltemp]);
        PWM_OUT(HighSide[Halltemp]);
        HallOld=Halltemp;
}
这样我把断点打在a2 ++下面(即对准PORT_B(LowSide[Halltemp]);
)。当进入断点后a2却没有加,还是零的,而且断点还打不在a2上。 2# 香水城

使用特权

评论回复
地板
s_f_tan| | 2012-6-29 21:57 | 只看该作者
是不是开了优化,这a2没有用过,怕是被编译器忽略了

使用特权

评论回复
5
figo20042005| | 2012-6-29 22:32 | 只看该作者
那你给A2定义前加volatile,看是不是还是0

使用特权

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

本版积分规则

8

主题

93

帖子

3

粉丝