完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ucosii启动两个任务分别在不同的.c中,两个任务通过邮箱传递数据,uCOSII消息邮箱的变量为.c局部静态变量,求教邮箱什么时候占用RAM和释放RAM?
|
|
相关推荐
8个回答
|
|
你定义邮箱的时候只占用一个消息邮箱结构体的ram,UCOS中的消息引用是指针引用,传递的是你消息的首地址,UCOS不管你的消息释放,你可以自己决定什么时候申请和释放
|
|
|
|
使用消息邮箱的时候一定要确保你的消息可见性,你的消息如果是用了static设置为静态的话应该是不会出问题的。发送消息的时候一般都是使用动态内存管理申请一段内存存放消息,等消息被发送并且正确的处理以后在释放掉这部分内存。当然你也可以做一个全局数组来存放数据。
|
|
|
|
ucos的内存块是静态变量还是全局变量呢?用系统的内存块RAM的开销是不是增大了很多?ucos的内存以前也是用static开辟空间,没发现什么问题。
static OS_MEM *MemCB; //内存块 static uint8_t Mem_Buff[10][100]; //内存分区 |
|
|
|
消息的可见性就是你的消息在被最终处理完成都是在ram中实际存在的,不会被释放掉,static就是将一变量定义为静态变量,这样在退出函数的时候不会释放掉这个变量的内存。
|
|
|
|
谢谢指点!那么说ucos消息邮箱的变量必须是全局变量或者静态变量,只是他比全局变量多了一个同步而已?
|
|
|
|
可以用全局变量或静态变量,但不是绝对的。最好使用动态内存管理,要发送数据的时候申请一段内存,当处理完以后在释放掉这部分内存。
|
|
|
|
凯哥,你说的释放内存是在发送消息的任务还是接收到消息的任务释放?如果是发送方任务释放内存,那怎么样才能知道接收消息的任务处理了数据?
|
|
|
|
要释放一个消息的内存,肯定要等到这个消息被处理掉才能释放的。所以一般都是在接受任务中释放的。
|
|
|
|
只有小组成员才能发言,加入小组>>
800 浏览 0 评论
1156 浏览 1 评论
2531 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2714 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1092浏览 3评论
197浏览 2评论
463浏览 2评论
376浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
458浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 08:14 , Processed in 1.110422 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号