打印
[其他]

UCOSIII---多任务系统中的栈

[复制链接]
1222|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2023-10-19 11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在一个裸机系统中,如果定义一个全局变量和子函数局部变量,当发生中断时,全局变量放在哪里?局部变量又放在哪里?如果是裸机编程那就不用考虑这些,但是如果是RTOS编程,就要明确这些变量是如何储存的,在裸机系统中,统统储存在栈中,即单片机RAM的一段连续的空间,其大小在启动文件中配置。

        但是在多任务系统中,为了保证独立性和任务之间互不干扰,需要给每个任务分配一个独立的栈空间,在RTOS中通常为一个预先定义的全局数组。

#define TASK0_STK_SIZE 128
#define TASK1_STK_SIZE 512
#define TASK2_STK_SIZE 512

CPU_STK task0_stk[TASK0_STK_SIZE]; // 刹车
CPU_STK task1_stk[TASK1_STK_SIZE]; // MILI接收
CPU_STK task2_stk[TASK2_STK_SIZE]; // MILI处理
多任务系统中每个任务使用自己独立的栈空间,任务之间数据互不干扰。在ucosiii中空闲任务的栈空间最小为128。
————————————————
版权声明:本文为CSDN博主「嵌入式小宁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_53592457/article/details/133648509

使用特权

评论回复
沙发
kjkujkj21| | 2023-10-19 15:22 | 只看该作者
为什么不用freertos

使用特权

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

本版积分规则

1886

主题

15541

帖子

11

粉丝