打印

关于UC/OSIII CSTACK问题请教

[复制链接]
3212|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lingge911|  楼主 | 2013-9-25 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的IAR版本是6.10。在MICRIUM官网上下载了STM32107的移植好的UC/OSIII代码。
然后我现在项目的芯片是SRM32103ZET,我在STM32107的平台上进行修改。主要是修改了配置系统时钟代码和串口USART2代码。修改完后发现USART2没有数据输出也没有响应接收数据,然后总是出现下面这段:
Wed Sep 25 17:58:18 2013: The stack pointer for stack 'CSTACK' (currently 0x20007A1C) is outside the stack range (0x20008B88 to 0x20009B88)
请问这个CSTACK怎么改才能不弹这个提示。这个提示是不是影响了我的串口的正常通信

相关帖子

沙发
craaazyfor| | 2013-9-27 09:11 | 只看该作者
在启动文件加大堆栈试试

使用特权

评论回复
板凳
nicholasldf| | 2013-9-28 01:17 | 只看该作者
应用程序启动时要有一个堆栈,不管是裸机,还是基于uCOS,,那就是CSTACK堆栈

uCOS-III运行起来后,每个任务有自己的堆栈,所以,当任务运行的时候,IAR编译器会识别到堆栈指针不在CSTACK之内,所以会报The stack pointer for stack 'CSTACK' (currently 0x20007A1C) is outside the stack range (0x20008B88 to 0x20009B88)

这个不是问题,是正常的,,

当然,uCOS-III官方移植中,中断堆栈也是独立的,专门用于处理中断,这个好处就是:每个任务堆栈不必考虑中断嵌套层数,从而不用为中断嵌套增加堆栈大小。所以执行中断程序时,也会报The stack pointer for stack 'CSTACK' (currently 0x20007A1C) is outside the stack range (0x20008B88 to 0x20009B88)

CSTACK只是在系统启动时使用,之后就没用了,,所以可以配置的小一点,一面造成太大的浪费。。

至于你程序的问题,,应该是其他原因导致的

使用特权

评论回复
地板
nicholasldf| | 2013-9-28 01:19 | 只看该作者
IAR才不知道你是裸机运行还是基于uCOS-III呢,所以一旦堆栈指针SP不在CSTACK之内,,IAR就会提示你可能程序是不是跑飞了?运行异常了?

使用特权

评论回复
5
lingge911|  楼主 | 2013-10-23 15:29 | 只看该作者
这段时间忙工作去了,一直没来,看到各位的回复很高兴。这个问题也早就解决了,nicholasldf说的非常对,IAR在多任务系统里面会报这个是正常的,非常感谢你回复了这么多。串口当时没通也是中断配置上没处理正确。

使用特权

评论回复
6
lotgjm| | 2015-1-29 11:33 | 只看该作者
解释一下怎么回事

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝