[STM8] 求救 STM8 ram问题

[复制链接]
3076|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没有用过,怕是被编译器忽略了
figo20042005 发表于 2012-6-29 22:32 | 显示全部楼层
那你给A2定义前加volatile,看是不是还是0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

93

帖子

3

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