硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1520|回复: 3
收起左侧

[FreeRTOS] FreeRTOS中任务函数的局部变量

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-6-11 23:21:26 | 显示全部楼层 |阅读模式
在FreeRTOS的任务函数中,比如Task1函数中定义了一个局部变量,那这个局部变量是放在系统栈还是任务栈?
heap_x.c文件中定义了一个静态全局数组ucHeap[x]作为FreeRTOS的堆,然后创建任务的时候,用pvPortMalloc()给任务申请了任务栈。
如果任务函数里的局部变量用的是任务栈,是不是意味着这个局部变量存放在了heap_x.c中定义的那个静态全局数组ucHeap[x]里?
如果是的话我有点想不通,因为这个局部变量的创建也没用到pvPortMalloc(),为什么会放到ucHeap中去?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-12 01:27:14 | 显示全部楼层
1、用的任务栈。
2、这个有必要学习下这个视频了,不限制OS,任何OS都是这个视频

【ThreadX视频教程第2期:通俗易懂介绍Cortex-M内核的OS特性,双堆栈,非特权级,PendSV,SVC,Systick等,争取人人都可以掌握】

https://www.bilibili.com/video/B ... d4a0c9df5e79c9b33df
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-6-12 01:41:54 | 显示全部楼层
eric2013 发表于 2024-6-12 01:27
1、用的任务栈。
2、这个有必要学习下这个视频了,不限制OS,任何OS都是这个视频

太感谢了佬哥。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-6-13 01:04:22 | 显示全部楼层
eric2013 发表于 2024-6-12 01:27
1、用的任务栈。
2、这个有必要学习下这个视频了,不限制OS,任何OS都是这个视频

佬哥,我去B站学习了你的视频了,大概理解就是任务函数中的局部变量是由于PSP,所以才在任务栈里申请空间。不过现在有一个新的疑惑:假如说我在任务函数里调用一个其它地方写的普通函数,那这个普通函数用的是系统栈还是任务栈。我的猜测是普通函数因为是在任务里调用,用的还是任务栈,不知道对不对?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 02:55 , Processed in 0.039637 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表