os_mail_send

所属模块:通信机制 | 类型:邮箱发送函数

函数简介

os_mail_send 用于向指定邮箱写入数据, 支持私有邮箱(8bit)、公共邮箱(8bit)以及扩展邮箱(16bit)。

该接口为非阻塞发送,适用于任务间轻量级数据通信。

函数原型

char os_mail_send(u8 id, u16 data);

参数说明

参数 说明
id 邮箱ID(自动区分私有 / 公共 / 扩展邮箱)
data 发送的数据(16位)

返回值

0 表示成功,-1 表示邮箱ID非法。

源码实现

char os_mail_send(u8 id, u16 data) { if(id < OS_INFORMATION_PRIVATE) { OS_INFORMATION[id] = (u8)data; return 0; } id -= OS_INFORMATION_PRIVATE; if(id < OS_INFORMATION_PUBLIC) { OS_INFORMATION_COMMON[id] = (u8)data; return 0; } id -= OS_INFORMATION_PUBLIC; if(id < OS_INFORMATION_PUBLIC2) { OS_INFORMATION_COMMON2[id] = data; return 0; } return -1; }

使用示例

void task_sender() { while(1) { os_mail_send(0, 123); } } void task_receiver() { int data; while(1) { data = os_mail_recv(0); if(data != 0) { // 处理数据 os_mail_clear(0); } } }

注意事项

邮箱为单值结构,新数据会覆盖旧数据,如需队列请自行扩展实现。

相关推荐