OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3630|回复: 6

RTOS任务中的变量

[复制链接]

30

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2013-11-14
在线时间
7 小时
发表于 2015-11-27 10:49:40 | 显示全部楼层 |阅读模式
5金钱
假如我在A函数中使用了static类型的变量,在B函数中使用了全局变量,在C函数中只使用了局部变量,我将这三个函数都放在一个任务中,那么当任务切换过后,ABC三个函数中的变量都是存储在任务的堆栈上面的吗?任务切换过后对我这三个函数中的变量有什么影响呢?

最佳答案

查看完整内容[请看2#楼]

回复【5楼】电子小手: --------------------------------- 找找可重入函数的资料看看就可以了。 多任务中,尽量多使用可重入函数。当然也可以用不可重入函数 ,注意互斥保护就可以啦。
学海无涯,回不了头!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2014-8-6
在线时间
8 小时
发表于 2015-11-27 10:49:41 | 显示全部楼层
回复【5楼】电子小手:
---------------------------------
找找可重入函数的资料看看就可以了。
多任务中,尽量多使用可重入函数。当然也可以用不可重入函数 ,注意互斥保护就可以啦。
回复

使用道具 举报

12

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2014-8-6
在线时间
8 小时
发表于 2015-11-27 11:13:26 | 显示全部楼层
只有C函数的变量,是存储在任务的堆栈中。A函数B函数都是不可重入函数。
回复

使用道具 举报

30

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2013-11-14
在线时间
7 小时
 楼主| 发表于 2015-11-27 15:07:11 | 显示全部楼层
回复【2楼】jnfxt95:
---------------------------------
那在任务切换的时候,我的局部静态变量和全局变量会不会因为任务切换而有所改变呢?局部变量是不是就相当于局部静态变量了,任务切换回来的时候仍是上次任务切换之前时候的值?
学海无涯,回不了头!!
回复

使用道具 举报

12

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2014-8-6
在线时间
8 小时
发表于 2015-11-27 15:16:30 | 显示全部楼层
你是不是在另一个任务里也调用了A函数B函数?另一个任务也会改变局部静态变量和全局变量的值。
回复

使用道具 举报

30

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2013-11-14
在线时间
7 小时
 楼主| 发表于 2015-11-27 15:21:49 | 显示全部楼层
回复【4楼】jnfxt95:
---------------------------------
不是 我是初学者,不知道在哪里看到的说是任务中不能使用静态或者全局变量,所以有次一问
学海无涯,回不了头!!
回复

使用道具 举报

30

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2013-11-14
在线时间
7 小时
 楼主| 发表于 2015-11-27 16:36:13 | 显示全部楼层
回复【6楼】jnfxt95:
---------------------------------
为什么要用互斥保护呢?我想的话,只要我知道什么时候由哪些任务调用这个不可重入函数,就可以不用加互斥保护了么??
学海无涯,回不了头!!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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