os_mail_send
所属模块:通信机制 | 类型:邮箱发送函数
函数简介
os_mail_send 用于向指定邮箱写入数据,
支持私有邮箱(8bit)、公共邮箱(8bit)以及扩展邮箱(16bit)。
该接口为非阻塞发送,适用于任务间轻量级数据通信。
函数原型
char os_mail_send(u8 id, u16 data);
参数说明
| 参数 |
说明 |
| id |
邮箱ID(自动区分私有 / 公共 / 扩展邮箱) |
| data |
发送的数据(16位) |
源码实现
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);
}
}
}
注意事项
邮箱为单值结构,新数据会覆盖旧数据,如需队列请自行扩展实现。