uCOS 邮箱的使用
2022/3/5 23:16:41
本文主要是介绍uCOS 邮箱的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
邮箱存储的是一个void类型的指针
新建的时候
OS_EVENT *Key_Mbox;//声明OS_EVENT 类型的指针,指针名字是Key_Mbox,按键值邮箱
Key_Mbox = OSMboxCreate((void *)0);//创建邮箱
OSMboxPost(Beep_Mbox, (void *)2);//发送一个邮件
这里分析一下,把原本一个数字二强制转为一个void类型的指针值。
等效于下面
void *p;//p是一个指针变量,变量里面存储的值是4字节的地址
p = 2;//p变量值改为0x0000 0002
OSMboxPost(Key_Mbox, p);//发送一个邮件,就是把0x0000 0002存进去
void *msg;
msg = (void *)(OSMboxPend(Key_Mbox, 0, &err));//等待邮件
如果等到了
msg = p;
这时候它俩都是指针类型的变量
可以这样得到p的值
val = (u32)msg;//强制类型转换
这就可以得到p的值是2了
实际上下面这样更容易理解
char msg1[]="cmd1";
char msg1[]="cmd2";
OS_EVENT *cmd_Mbox;//声明OS_EVENT 类型的指针,指针名字是cmd_Mbox,命令字符串邮箱
cmd_Mbox = OSMboxCreate((void *)0);//创建邮箱
OSMboxPost(Beep_Mbox, (void *)msg1);//发送一个邮件,把msg1的地址发出去了
char *msg;
msg = (char *)(OSMboxPend(Key_Mbox, 0, &err));//等待邮件
等到的邮件转换为char类型指针
那msg[0] = 'c'; msg[1] = 'm'; msg[1] = 'd';
那如果,我邮件发出去后
有某个地方msg1[0] = 'd';操作
过一会儿邮件才收到
那么收到的时候得到的msg[0] = 'd';
所以邮箱传递的是地址,地址上的数据值在任何时候都是可以改变的。使用中要注意发送和接收处理的速度
上面两种方式我们可以总结
1.我们可以把邮箱记住的哪个指针值作为一个四字节的空间来用
2.正确情况应该是在下次发送前,邮件已经被取出。
搜索
复制
OSMboxPost(Beep_Mbox, (void *)2);OSMboxPost(Beep_Mbox, (void *)2);OSMboxPost(Beep_Mbox, (void *)2);这篇关于uCOS 邮箱的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享