[STM32F4] 传递的堆栈基地址是其低地址,而生长方向是高到低

[复制链接]
1550|7
 楼主| bqyj 发表于 2018-9-19 12:43 | 显示全部楼层 |阅读模式
建立任务时堆栈基地址是(CPU_STK      *)&AppTaskStartStk[0u],
堆栈生长方向#define  CPU_CFG_STK_GROWTH       CPU_STK_GROWTH_HI_TO_LO ;
传递的堆栈基地址是其低地址,而生长方向是高到低,这样会不会存在问题啊?
 楼主| bqyj 发表于 2018-9-19 12:47 | 显示全部楼层
为什么不用CPU_STK_GROWTH_LO_TO_HI ?
 楼主| bqyj 发表于 2018-9-19 12:50 | 显示全部楼层
程序长时间运行,一段时间后程序死机了,停止运行,会不会和 堆栈生长方向#define  CPU_CFG_STK_GROWTH       CPU_STK_GROWTH_HI_TO_LO ;配置有关呢??
zhuhuis 发表于 2018-9-19 12:53 | 显示全部楼层
针对ARM和绝大多数体系结构的核来说,栈的生长方向都是满递减 空递增,即从上往下。当然也有从下往上的
tian111 发表于 2018-9-19 12:56 | 显示全部楼层
早期的51单片机就是从下往上的。你看到初始化线程代码关于初始化通用寄存器的地方就明白了,虽然传递的栈底地址,但是在真正初始化使用的时候 stack(top stack) = stack bottom + 栈的大小。
songqian17 发表于 2018-9-19 13:00 | 显示全部楼层
如果对UCOS吃的不是特别透,建议用网上现有的成功工程去修改,不然的话出错了都不知道在哪里。
chenho 发表于 2018-9-19 13:03 | 显示全部楼层

这个在ucOS官网有现成移植好的。
 楼主| bqyj 发表于 2018-9-19 13:20 | 显示全部楼层

结贴了,多谢大家讨论这么多哈,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

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