打印
[STM32F4]

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

[复制链接]
1343|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和绝大多数体系结构的核来说,栈的生长方向都是满递减 空递增,即从上往下。当然也有从下往上的

使用特权

评论回复
5
tian111| | 2018-9-19 12:56 | 只看该作者
早期的51单片机就是从下往上的。你看到初始化线程代码关于初始化通用寄存器的地方就明白了,虽然传递的栈底地址,但是在真正初始化使用的时候 stack(top stack) = stack bottom + 栈的大小。

使用特权

评论回复
6
songqian17| | 2018-9-19 13:00 | 只看该作者
如果对UCOS吃的不是特别透,建议用网上现有的成功工程去修改,不然的话出错了都不知道在哪里。

使用特权

评论回复
7
chenho| | 2018-9-19 13:03 | 只看该作者

这个在ucOS官网有现成移植好的。

使用特权

评论回复
8
bqyj|  楼主 | 2018-9-19 13:20 | 只看该作者

结贴了,多谢大家讨论这么多哈,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝