【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
一、实验说明:

/*
* Name : main
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
/*实验现象:
打开串口工具putty.exe,按下ARM.KEY按键,终端显示此时任务1的运行次数;松开按键,停止显示。
*/
int main(void)
{
system_clock.initialize(); //系统时钟初始化
led.initialize(); //LED初始化
usart6.initialize(); //串口初始化
key.initialize(); usart6.printf("\x0c"); //清屏
usart6.printf("\033[1;32;40m"); //设置字体终端为绿色
usart6.printf("\r\n Hello, I am iCore4!\r\n\r\n");
LED_RED_ON; OSInit(); //UCOS初始化
OSTaskCreate(start_task, //创建开始任务
(void*), //任务参数
(OS_STK*)&START_TASK_STK[START_STK_SIZE-], //任务堆栈
START_TASK_PRIO); //任务优先级
OSStart(); //开启UCOS
}
/*
* Name : start_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr; TaskMbox = OSMboxCreate();//创建邮箱 OSStatInit();//初始化统计任务 OS_ENTER_CRITICAL();//关中断 OSTaskCreate(AppTask1_task,(void*),(OS_STK*)&AppTask1_TASK_STK[AppTask1_STK_SIZE-],AppTask1_TASK_PRIO);//创建AppTask1任务
OSTaskCreate(AppTask2_task,(void*),(OS_STK*)&AppTask2_TASK_STK[AppTask2_STK_SIZE-],AppTask2_TASK_PRIO);//创建AppTask2任务
OSTaskSuspend(OS_PRIO_SELF);//挂起start_task任务 OS_EXIT_CRITICAL();//开中断
}
/*
* Name : AppTask1_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void AppTask1_task(void *pdata)
{
int timer = ;
char cnt[]; while(){
if(ARM_KEY_STATE == KEY_DOWN){
timer++;
sprintf(cnt,"%d",timer); //数据转换
OSMboxPost(TaskMbox, &cnt); //发送邮箱
}
OSTimeDlyHMSM(,,,); //延时500ms
}
}
/*
* Name : AppTask2_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void AppTask2_task(void *pdata)
{
u8 err;
u8 *s; while(){
s = (INT8U *)OSMboxPend(TaskMbox,OS_TICKS_PER_SEC,&err);
if(err == OS_ERR_NONE){
usart6.printf("\r\nThe number of task1 : %s\r\n",s); //打印出邮箱的值
}
OSTimeDlyHMSM(,,,); //延时500ms
}
}
iCore4链接:

【iCore4 双核心板_uC/OS-II】例程八:消息邮箱的更多相关文章
- 【iCore4 双核心板_uC/OS-II】例程四:软件定时器
一.实验说明: 一些应用程序执行它们的任务时需要延迟一段特定的时间,因此uC/OS-II为我们提供了一些相应的 延时函数,本例程我们使用软件定时器定时500ms点亮相应的LED实现三色LED循环闪烁. ...
- 【iCore4 双核心板_uC/OS-II】例程二:任务的建立与删除
一.实验说明: 本例程建立三个任务,通过任务寄存器来实现任务的建立与删除功能.红灯和绿灯同时以固定 频率闪烁,当任务寄存器为5时,删除绿灯闪烁的任务LED1,此时只有红灯闪烁,当任务寄存器的 值为10 ...
- 【iCore4 双核心板_uC/OS-II】例程十一:内存管理
一.实验说明: 应用程序在运行中为了某种特殊需要,经常需要临时获得一些内存空间.而作为比较完善的操作系统uC/OS-II,也具有动态分配内存的能力. uC/OS-II对内存进行两级管理:把连续内存分成 ...
- 【iCore4 双核心板_uC/OS-II】例程十:信号量集
一.实验说明: 在实际应用中,任务常常需要与多个事件同步,即要根据多个信号量组合作用的结果来决定任务的运行方式.UCOSII为了实现多个信号量组合的功能定义了一种特殊的数据结构——信号量集. 二.实验 ...
- 【iCore4 双核心板_uC/OS-II】例程九:消息队列
一.实验说明: 前面介绍通过信息传递可以进行任务间的交流,信息也可以直接发送给一个任务,在uC/OS-II中每一个任务在它们内部都有一个消息队列,也即任务消息队列,用户可以直接给一个任务发送消息,不需 ...
- 【iCore4 双核心板_uC/OS-II】例程七:互斥信号量
一.实验说明: 在介绍互斥信号量前,我们先简单地描述一下什么是优先级反转.使用实时内核心,优先级反转问题是实时系统中出现得最多的问题.假设任务H优先级高于任务M,任务M优先级高于任务L.任务H和任务M ...
- 【iCore4 双核心板_uC/OS-II】例程六:信号量——任务同步
一.实验说明: 信号量是一个多任务内核提出的一个协议机构,上一个实验中我们介绍了信号量访问共享资源 的功能,其实信号量最初是用来控制访问共享资源的,它还可以用来同步一个中断服务函数和一个任 务,或者同 ...
- 【iCore4 双核心板_uC/OS-II】例程五:信号量——共享资源
一.实验说明: 信号量是操作系统中的一类事件,是实现任务间通信的一个中间环节.当系统中的多个任务 在运行时,经常需要互相无冲突地访问同一个资源,或者需要互相支持的依赖,甚至有时还要互 相加以必要的限制 ...
- 【iCore4 双核心板_uC/OS-II】例程三:任务的挂起与恢复
一.实验说明: 当一个任务正在运行的时候,由于某种情况可能需要终止运行一段时间,终止的这段时间就是 所谓的任务的挂起,可以由该任务自身或者其他任务来挂起一个任务.当被挂起的任务需要再次运 行的时候,可 ...
随机推荐
- AGC 014E.Blue and Red Tree(思路 启发式合并)
题目链接 \(Description\) 给定两棵\(n\)个点的树,分别是由\(n-1\)条蓝边和\(n-1\)条红边组成的树.求\(n-1\)次操作后,能否把蓝树变成红树. 每次操作是,选择当前树 ...
- BZOJ.3631.[JLOI2014]松鼠的新家(树上差分)
题目链接 树剖/差分裸题.. //28260kb 584ms #include <cstdio> #include <cctype> #include <algorith ...
- Scrapy基础(五) ------css选择器基础
基本语法: * 选择所有节点#container 选择id为container的节点.container 选择所有class包含contai ...
- C#中的集合之ArryList
List泛型集合 集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一. 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接 ...
- yii去掉自动排序功能
Yii去掉自动排序功能并自定义排序 public function search($params) { $query = SvnManage::find()->addOrderBy([ 'cre ...
- PHP 中的魔法常数
PHP中的魔法常数 PHP中有很多描述当前状态的魔法函数,可以很方便地获取运行时的局部环境 测试代码及结果如下 <?php namespace NS { function writeln($v= ...
- Vue(十七)模块化开发
模块化开发 使用vue-cli创建项目 1. vue-router模块化 引入vue-router cnpm install vue-router -S 1.1 编辑main.js imp ...
- Cenos7 部署asp.net core站点
系统版本 rpm -q centos-release --- centos-release--5.1804.el7.centos.x86_64 安装libicu yum install libunwi ...
- 演练:调试 Windows 窗体
Windows 窗体是最常见的托管应用程序之一. Windows 窗体创建标准的 Windows 应用程序. 你可以完成此演练使用 Visual Basic 中, C#,或 c + +. 首先,您必须 ...
- 图解 Git
https://juejin.im/entry/5917c463da2f60005de84195