这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 2407 2407程序跑飞-——因为堆栈溢出??!!

共2条 1/1 1 跳转至

2407 2407程序跑飞-——因为堆栈溢出??!!

院士
2006-09-17 18:14:16     打赏
2407 2407程序跑飞-——因为堆栈溢出??!!



关键词: 程序     跑飞     因为     堆栈     溢出    

院士
2006-12-22 22:43:00     打赏
2楼
问 调试2407的SVPWM程序时出现的怪现象,各位大哥帮分析分析!

整个程序就是不断的定时器1下溢中断,计算电压矢量的输出位置。程序总是正确的跑一段时间后,就一直跑 nmi中断里去了。今天修改了一下cmd 文件的配置,发现修改.stack段的位置,能正常地跑久一点:

1)偶以前的cmd文件
-stack 500
MEMORY
{
PAGE 0:  VECS: origin =    0h,length = 40h  /*  程序复位 */
    PROG: origin = 1044h,length = 6f00h /* 在片FLASH */
PAGE 1:    
    B0B1:  origin =  200h,length = 200h
    SARAM   : origin = 0800h ,length =  0800h/* SARAM 块  */
}

SECTIONS
{
    .vectors : load=VECS   PAGE 0    /* 中断向量表 */
    .text    : load=PROG   PAGE 0    /* 代码 */
    .cinit   : load=PROG   PAGE 0
    .switch  : load=PROG   PAGE 0
    .const   : load=SARAM  PAGE 1
    .bss     : load=SARAM  PAGE 1        
    .stack   : load=B0B1   PAGE 1   /*堆栈段在BOB1*/
}

2)然后修改了一下.stack段那句为 .stack   : load=SARAM   PAGE 1
   即放置在SARAM,发现能正常运行得久一点(如第二张图)但仍然会跑进nmi中断!

想看看各位大哥对这个现象有没什么建议啊!由于要中断好多好多次才会到那个出问题的地方,好象挺难跟踪!



1: 不可能是堆栈了,都这么大了程序跑飞,建议你看看头几天我发的那个帖子。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]