邮箱通信(Mailbox)
邮箱机制用于实现任务间异步消息通信:发送任务写入数据, 接收任务阻塞等待,实现任务同步与数据传递。
机制定义
Mailbox = Send + Buffer + Receive + Task Sync
用于任务间轻量级数据交换,是 :contentReference[oaicite:0]{index=0} IPC 的基础机制之一。
执行流程
初始化邮箱
创建邮箱缓冲区
发送任务写入
任务调用 os_mailbox_send 写入数据
接收任务阻塞
任务等待消息到达(BLOCKED)
消息唤醒
数据到达后触发任务就绪
读取处理
任务获取数据并处理
演示代码
#include "hrtos.h"
#define MAILBOX_ID 0
void sender(void)
{
u8 msg = 0x55;
while(1)
{
os_mailbox_send(MAILBOX_ID, msg);
msg++;
os_delay(5);
}
}
void receiver(void)
{
int msg;
while(1)
{
msg = os_mailbox_receive(MAILBOX_ID);
if(msg >= 0)
{
P1 = (P1 & 0xFC) | (msg & 0x03);
}
os_delay(1);
}
}
void hrtos_main(void)
{
os_mailbox_init(MAILBOX_ID);
os_task_create((unsigned int)sender, 1, 3, 5);
os_task_create((unsigned int)receiver, 2, 2, 5);
}
系统意义
邮箱通信提供任务级异步解耦能力, 常用于事件通知、状态同步与数据流传递。