Communication Core

邮箱通信(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);
}

系统意义

邮箱通信提供任务级异步解耦能力, 常用于事件通知、状态同步与数据流传递。