uCOS-II消息邮箱的使用
具体使用方法与信号量的方式大同小易. 首先建立一个OS_EVENT结构体(事件控制块)的指针: OS_EVENT *MSBOX;
然后建立消息邮箱,返回值为事件控制块的指针: MSBOX=OSMboxCreate((void*)0);
然后就可以随时使用此邮箱了.比较常用的有等待消息邮箱与发送消息邮箱: 具体使用方式见以下程式.
#include “stm32f10x_lib.h”
#include “includes.h”
OS_STK os_sysinit_stk[60];
OS_STK os_ledshow_stk[60];
OS_STK os_ideluser_stk[60];
OS_STK os_uart_stk[60];
OS_EVENT *UARTBOX; //为串口数据建立一个事件
void os_sysinit_task(void *pdata)
{ sysinit();
initGPIOA();
UARTBOX=OSMboxCreate((void*)0); //初始化串口的信箱,值为空
OSTaskSuspend(2); //挂起自已,暂时不让它运行了
while(1) { }
}
void os_ledshow_task(void *pdata)
{ while(1)
{
OSTimeDlyHMSM(0,0,0,20);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); OSTimeDlyHMSM(0,0,1,0);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);
}
}
void os_ideluser_task(void *pdata)
{
INT8U date;
while(1)
{
OSTimeDlyHMSM(0,0,1,0); date=’S';
OSMboxPost(UARTBOX,&date);
OSTimeDlyHMSM(0,0,2,0); date=’B';
OSMboxPost(UARTBOX,&date); //发送一个消息,注意待发送的数据是一个指针形式的就可以了.无值的指针形式可以指向任何类型数据;注意函数的参数
}
}
void os_uart_test(void *pdata)
{
INT8U senddata,ERROR;
INT8U *ss;
while(1) {
ss=OSMboxPend(UARTBOX,0,&ERROR); //等待消息的到来.并将此消息给SS这个指针;注意函数的参数
senddata=*ss; //再将此指针指向的值传递给SENDDATA uart_txb(senddata); }
}
void os_creat_all(void)
{
OSTaskCreate(os_sysinit_task,(void *)0,&os_sysinit_stk[59],2); //建立一个任务
OSTaskCreate(os_ledshow_task,(void *)0,&os_ledshow_stk[59],3); //再建立一个任务
OSTaskCreate(os_ideluser_task,(void *)0,&os_ideluser_stk[59],4);
OSTaskCreate(os_uart_test,(void *)0,&os_uart_stk[59],5);
}
uCOS-II消息邮箱的使用的更多相关文章
- 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
一.实验说明: 消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量.通常该指针指向一个包含了“消息”的特定数据结构. 二.实验截图: ...
- ucosii事件控制块------消息邮箱与消息队列
UCOSII 使用叫做事件控制块(ECB)的数据结构来描述诸如信号量.邮箱(消息邮箱)和消息队列这些事件 #define OS_EVENT_EN (((OS_Q_EN > 0u) &&a ...
- DE1-SOC开发板上搭建NIOS II处理器运行UCOS II
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II 今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
- μC/OS-II 任务的同步与通信 --- 消息邮箱
简介 如果把数据缓冲区的指针赋给一个事件控制块的成员 OSEventPrt,同时使事件控制块的成员 OSEventType 为常数 OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱, ...
- ucos ii 46个系统API函数解析
源: ucos ii 46个系统API函数解析
- RTX——第16章 消息邮箱
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 前面几个章节主要给大家讲解了任务间的同步和资源共享机制,本章节为大家讲解任务间的通信机制消息邮箱,RTX ...
- FreeRTOS 任务计数信号量,任务二值信号量,任务事件标志组,任务消息邮箱
以下基础内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 计数信号量的另一种实现方式----基于任务通知(Task Not ...
- FreeRTOS 和uCOS II的简单比较
转载:http://www.viewtool.com/bbs/forum.php?mod=viewthread&tid=114 这是两种RTOS, 现在粗略比较一下. freeRTOS比uCO ...
- ucos ii 百度官方介绍
μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的.可裁剪的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处 ...
随机推荐
- PHP SECURITY CALENDAR 2017 学习总结-更新中
这篇文章主要以审计代码为主来分析每道题目中所存在的漏洞点,记录一下自己的学习: 1.Day 1 - Wish List class Challenge { const UPLOAD_DIRECTORY ...
- C#学习笔记11
1.List.BinarySearch():BinarySearch()采用的是二分搜索算法,要求元素已经排好序,其特点是假如元素没有找到,会返回一个负整数,该值的按位取反(~)结果是“大于被查找元素 ...
- typeScript入门(四)泛型
泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...
- js带文字的圆随机运动
首先是html代码(其实就只有一个画布,记得要把外部js引入写在body底部 <!doctype html> <html> <head> <meta http ...
- HTML表单(form)的“enctype”属性
Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...
- ie 9 渐变背景色兼容问题
/*窗口背景*/ .window { background-color: #fff; background: -webkit-linear-gradient(top,#EFF5FF 0, ...
- Windows7中Java64位环境变量配置:javac不是内部命令或外部命令,也不是可运行的程序或批处理文件。
按照默认设置安装完JDK(Java Developement Kits)后,一般默认路径为:C:\Program Files\Java\jdk1.8.0_05_x64\文件夹. 然后配置环境变量:&q ...
- SharePoint 2010配置PDF文件全文检索
一.安装Adobe PDF 64 bit IFilter version 9合Adobe Reader 9下载地址: http://www.adobe.com/support/downloads/de ...
- 6.Zabbix 3.0 MySQL 监控
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=94cd760a4848939d33892b7464cc0401&sub=8B6EDD27671 ...
- Git 版本管理器学习笔记
难点:使用 git revert <commit_id> 操作实现以退为进, git revert 不同于 git reset 它不会擦除"回退"之后的 commit_ ...