硬汉嵌入式论坛

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

请教下中断内局部变量在中断执行完后会不会失效的问题

[复制链接]

14

主题

118

回帖

160

积分

初级会员

积分
160
发表于 2019-4-24 22:16:33 | 显示全部楼层 |阅读模式
111112.png
大家好,如上图,是在FreeRTOS官方的一个serial通信的demo里截的图。想问下,在中断里定义的char型变量cChar,在接收到数据后,将数据存到cChar,
然后将cChar的地址放到RTOS的消息队列里,那么在其他的接收任务里,通过消息队列获取到该cChar的地址,从而获得数据,这是一个正常的操作。
但是,cChar是定义在中断函数里的一个局部变量,按理说应该是在栈空间里,当该中断执行完后,该cChar等局部变量所在的空间应该会被释放,那么,在
其他任务中获得该变量的地址后,就是一个危险的地址,很容易被其他函数入栈后修改该地址的数据,不知道有没有这样的风险,或者我这样理解对不对。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117535
QQ
发表于 2019-4-24 22:31:33 | 显示全部楼层
不是,FreeRTOS的消息队列传递是数据的复制粘贴,不是传递的地址,这个跟uCOS有所不同。
回复

使用道具 举报

14

主题

118

回帖

160

积分

初级会员

积分
160
 楼主| 发表于 2019-4-25 09:01:34 | 显示全部楼层
eric2013 发表于 2019-4-24 22:31
不是,FreeRTOS的消息队列传递是数据的复制粘贴,不是传递的地址,这个跟uCOS有所不同。

对,这个和ucos的混了,谢谢了,硬汉
回复

使用道具 举报

9

主题

113

回帖

145

积分

初级会员

积分
145
发表于 2019-4-25 09:53:51 | 显示全部楼层
这个有点眼熟啊,难道是CLI例程?
回复

使用道具 举报

14

主题

118

回帖

160

积分

初级会员

积分
160
 楼主| 发表于 2019-4-25 11:29:27 | 显示全部楼层
yanchao7788 发表于 2019-4-25 09:53
这个有点眼熟啊,难道是CLI例程?

FreeRTOS官方demo中的serial.c
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 09:48 , Processed in 0.043586 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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