Ucosii消息邮箱使用

发布时间:2024-10-12 点击:81
//设置任务优先级
#define led_task_prio 6
#define led1_task_prio 5
用到的ucosii函数
消息邮箱创建函数:
os_event *osmboxcreate (void *msg)
请求消息邮箱函数:
void *osmboxpend (os_event *pevent, int16u timeout, int8u *err)
向邮箱发送消息函数:
int8u osmboxpost (os_event *pevent, void *msg)//向等待任务表中高优先级的任务发送消息
广播邮箱消息函数:
int8u osmboxpostopt (os_event *pevent, void *msg, int8u opt)//向等待任务表中所有任务发送消息
按键扫描任务中,如果key0被按下,那么将向消息邮箱str_box发送消息1,
i=1;
osmboxpost(str_box,&i); //发送消息1
如果key1被按下,那么将发送消息2,
i=2;
osmboxpost(str_box,&i); //发送消息2
如果key2(wk_up)被按下,将向所有等待任务表中所有任务发送消息3,
i=3;
osmboxpostopt(str_box,&i,os_post_opt_broadcast); //向所有任务广播消息3
实验现象:
我们可以看到,如果我们按下key0,因为taskled1的优先级别高于taskled,所以当两个任务都在等待的时候,只有taskled1可以收到消息1,所以两个led都不反转。
如果按下key1,那么taskled1收到消息2,状态反转。
如果按下key2,那么taskled1和taskled都会收到消息,这个时候两个led状态都会反转。
osmboxpostopt()和osmboxpost()的区别在于前者是广播消息,所有等待任务都可以收到,后者只会高优先级的任务收到。
下面给出消息邮箱的使用例程
[objc] view plain copy print?


均衡型60g云服务器多少钱
阿里云服务器磁盘收费标准是多少
域名抢注赚钱吗?新手如何域名投资挣钱?
电脑怎么安装打印机_电脑安装打印机的方法
云服务器怎么租呀
腾讯云备案使用阿里云服务器
网站过期需要续费-虚拟主机/数据库问题
阿里云有免备案的服务器吗