sys/bios---邮箱

1 邮箱的创建
    邮箱的创建有静态和动态方式,下面以动态创建方式为例
1
typedef struct _MSG_POS{
2
    Uint16 Id;
3
    Uint32 Value[6];
4
}MSG_POS;
5
6
Mailbox_Handle gh_MboxPos;
7
Error_Block eb;
8
// Create Mailbox
9
Mailbox_Params mboxParams;
10
Mailbox_Params_init(&mboxParams);
11
gh_MboxPos = Mailbox_create(sizeof(MSG_POS),5,&mboxParams,&eb);
在Mailbox_create中,第一个参数表示邮箱传递消息的字节数,第二个参数表示邮箱消息的最大数量。

2 邮箱的发送和挂起
void task1(void)
{
    ...
    // send mail
    Mailbox_post(gh_MboxPos,&msg,time_out);
    ...
}

void task2(void)
{
    ...
    // wait mail
    Mailbox_pend(gh_MboxPos,&msg,time_out);
    ...
}
第一个参数为邮箱句柄,第二个参数为传递的消息地址,第三个表示超时时间。

3 具体应用说明
这里可以将邮箱理解为一个first in first out的队列,Mailbox_post表示向队列写数据,Mailbox_pend表示向队列读数据,如果队列数据存满了,那么就无法向队列再写新的数据。
如果队列已满,执行 Mailbox_post则返回0,在time_out为BIOS_WAIT_FOREVER情况下,则任务被挂起,直到队列可以写数据。
如果队列为空,执行Mailbox_pend则返回0,在time_out为BIOS_WAIT_FOREVER情况下,则任务被挂起,直到队列有数据。

{
3
    ...
4
    // send mail
5
    Mailbox_post(gh_MboxPos,&msg,time_out);
6
    ...
7
}
8
9
void task2(void)
10
{
11
    ...
12
    // wait mail
13
    Mailbox_pend(gh_MboxPos,&msg,time_out);
14
    ...
15
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值