[STM32F1] IAR堆栈溢出The stack pointer for stack 'CSTACK' is outside the stack range

[复制链接]
 楼主| zwll 发表于 2021-7-7 20:50 | 显示全部楼层 |阅读模式
用IAR编译的程序,第一次把程序下进STM32里后,不运行,但是复位后就能运行,或者掉电再上电也能运行。为什么把程序第一次下进STM32不运行?

BOOT1=0  BOOT0=0  从用户闪存启动,正常的工作模式。
   

    IAR中在的linker 中作如下设置
stm32f10x_flash.icf 对应生成的代码放在内部 flash 中运行

为什么会是这个样子?
ousj 发表于 2021-7-7 20:53 | 显示全部楼层
应该是仿真器问题吧
tian111 发表于 2021-7-7 20:55 | 显示全部楼层
这里打勾了没有?
tian111 发表于 2021-7-7 20:57 | 显示全部楼层
tian111 发表于 2021-7-7 20:59 | 显示全部楼层
对,打了没
 楼主| zwll 发表于 2021-7-7 21:00 | 显示全部楼层
Run to main  打上钩了。就是第一下进程序后,不能运行,要复位或者断电再上电就能运行了
supernan 发表于 2021-7-7 21:03 | 显示全部楼层
另外,和我加入UCOSiii没关系吧
 楼主| zwll 发表于 2021-7-7 21:04 | 显示全部楼层
我觉得不像是仿真器的问题,不知道那儿没设置对,哎,怎么个整呀!
zhenykun 发表于 2021-7-7 21:06 | 显示全部楼层
应该是哪里设置问题;
dengdc 发表于 2021-7-7 21:08 | 显示全部楼层
用KEIL也一样的;
dingy 发表于 2021-7-7 21:10 | 显示全部楼层
软件的仿真器设置部分;
 楼主| zwll 发表于 2021-7-7 21:13 | 显示全部楼层
我先说下现象,把程序第一次下进CPU没运行,复位后或重新上电正常运行,太奇怪了!
wuhany 发表于 2021-7-7 21:15 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| zwll 发表于 2021-7-7 21:17 | 显示全部楼层
在IAR的debugger方式下,出现一个报警
The stack pointer for stack 'CSTACK' (currently 0x20000E20) is outside the stack range (0x20001C18 to 0x20002018)
查了些资料,说是堆栈溢出,我就开了一个任务,点亮LED灯,用的是CPU的PC3、PC4、PC5引脚。
 楼主| zwll 发表于 2021-7-7 21:24 | 显示全部楼层
一步一步跟踪调试,发现问题就出在任务切换的时候,在空闲任务void  OS_IdleTask (void *p_arg)   ,在这个函数里死循环。
 楼主| zwll 发表于 2021-7-7 21:26 | 显示全部楼层
为什么复位后就能正常运行了,哎 。。。
chenjunt 发表于 2021-7-7 21:28 | 显示全部楼层
设置选项中有一个 Reset and Run,打勾选中后保持即可。
 楼主| zwll 发表于 2021-7-7 21:30 | 显示全部楼层
我用的IAR编译的,里面没有Reset and Run这项
ousj 发表于 2021-7-7 21:32 | 显示全部楼层
KEIL下载设置中有但不清楚IAR
ousj 发表于 2021-7-7 21:35 | 显示全部楼层
还有就是BOOT0,B00T1接高度电平的问题, 刚开始接触STM32时遇到过这个问题,但年代久远忘记了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

885

主题

11314

帖子

5

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

885

主题

11314

帖子

5

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