8220|18

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32F仿真时提示堆栈溢出,怎么办? [复制链接]

老大,整是搞不懂,为什么要用IAR???MDK不是挺好的吗?不管怎么说,我用MDK,十分爽,一切都很顺利,MDK配带的example我基本都看了,自己建工程,编译,在ram中debug通过。关于MDK,想和我交流的话,用qq:656749469
MSN:********@msn.com这个不能提供,呵呵
此帖出自stm32/stm8论坛

最新回复

                                 这个问题我碰到过。一般是单步调试太多引起堆栈溢出或者程序太大,程序调用太多,使用堆栈空间过多,更改链接文件里的堆栈空间即可。lnkarm_flash.xcl//*************************************************************************// Stack and heap segments.//*************************************************************************-D_CSTACK_SIZE=1000-D_HEAP_SIZE=200   详情 回复 发表于 2008-6-3 14:37
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

我也不想啊,可是我买了一块万利的开发板

                                 上面集成st-link2只能用在iar环境下啊。
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

麻烦大家仿真运行一下我这个工程

我运行个几圈就跑飞了,可是这程序这么简单不应该有什么问题啊。难道我用的iar有问题?我用的是iar4.42 32k限制版 

我编译通过的整个项目
相关链接:https://bbs.eeworld.com.cn/upfiles/img/20077/200771616552164.rar
此帖出自stm32/stm8论坛
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 

诶,仿真器正在调试中

                                 不用仿真时运行结果对不对
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 

不应该有问题

                                 不管用 IAR 还是 ARM/KEIL MDK,都不应该有问题,因为它们应该都带有STM32的例子,使用这些例子作为模板应该很容易做的
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 

把堆栈改大点不就行了。

把堆栈改大点不就行了。

不喜欢KEIL,IAR用得很好。

51,AVR,MSP430,ARM统统都用IAR。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 

请问你是在Flash中调试还是在RAM中调试

                                 编译时是如何选择运行空间的(Flash或RAM)?
此帖出自stm32/stm8论坛
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

8
 

iar

                                 十分不喜欢iar
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 

调试器终于调试成功,可以帮你测试一下了

我用的是IAR 5.11 + OpenOCD调试
下载程序时,OpenOCD收到了"m7FFFF00,80"命令,是要从0x07FFFF00读取128直接,由于该地址没有数据,所以JTAG操作出错
另外,你的项目中是否少了几个文件啊?cortexm3_macro.s和stm32f10x_vector.c去那里了?
stm32f10x_vector.c文件很重要,Flash第一个32位数据是堆栈地址,你的项目编译后,第一个32位数据是0x00102000,这个不在RAM里吧

to LS:
偶也不稀饭IAR,不过没办法,IAR提供的Kickstart免费版本可以使用32K,而MDK只有16K,所以才选IAR地
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 

个人觉得 IAR比MDK好用



无论是51 AVR 430 ARM7 ARM9都能用IAR. 很专业的编译器.
连堆栈都不知道怎么设置就不要埋怨IDE
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

11
 

回复

回5楼:我不仿真时候也不对,程序走不下去.
回6楼;我就是想知道我做的项目和例子区别在什么地方才自己建的项目.
回7楼:我把堆栈的容量改成2K结果还是出错.
回8楼:我是在FLASH里运行的,我在IAR的设置里选了那个什么**_FLASH.XCL
回10楼:cortexm3_macro.s和stm32f10x_vector.c都在PROJECT文件夹里.
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 

设置堆栈

                                 设置堆栈是在lnkarm_ram.xcl或lnkarm_flash.xcl文件中。根据调试的方式选相对应文件,改变文件中-D_CSTACK_SIZE的大小,即可设置栈的大小。默认flash调试的栈是2k,ram调试的栈是1k.一般是够用的。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

13
 

这2个文件没看到你加在项目中

可惜我用的IAR版本和你的不同,没法给你直接使用
Vector中定义的__vector_table很重要,即使不用中断,但这张表的第一个32位为{ .__ptr = __sfe( "CSTACK" ) },也就是堆栈地址,所以你的程序每次设置的堆栈地址都是错的(你编译生成bin文件,看看第一个32位数据是什么),所以一旦程序读写中断,会引起异常
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 

首先感谢楼上几位朋友的指点

回13楼:我尝试过修改lnkarm_ram.xcl或lnkarm_flash.xcl两个文件,没什么效果.
回14楼:我现在就去看看Vector文件
回15楼:我用的是FLASH调试,BOOT跳线都在0位置.
此帖出自stm32/stm8论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

15
 

MDK 16k

偶也不稀饭IAR,不过没办法,IAR提供的Kickstart免费版本可以使用32K,而MDK只有16K,所以才选IAR地

呵呵,16k  不是吧,
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

16
 

你的配置没有配置对

要定义VECT_TAB_FLASH在配置里
应该在main 主函数里加入
void NVIC_Configuration(void)

#ifdef  VECT_TAB_RAM  
  /* Set the Vector Table base location at 0x20000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif
}
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 

我的程序里缺少NVIC的初始化

                                 谢谢!楼上各位,我发现有这问题,正在修改
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

18
 

我对照ST的例程修改了我的程序,现在程序已经正常运行了.

                                 我正在分析我出问题的原因.
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

19
 

我碰到过

这个问题我碰到过。一般是单步调试太多引起堆栈溢出或者程序太大,程序调用太多,使用堆栈空间过多,更改链接文件里的堆栈空间即可。lnkarm_flash.xcl
//*************************************************************************
// Stack and heap segments.
//*************************************************************************

-D_CSTACK_SIZE=1000
-D_HEAP_SIZE=200
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表