【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II
一、实验说明:
本例程移值入uC/OS-II,建立三个任务,红色和绿色LED分别以固定频率闪烁,并且打开串口工具,
输出浮点数据。
二、源代码下载链接:
链接:https://pan.baidu.com/s/1o9pY0uI 密码:5roo
三、核心代码:
/*
* Name : main
* Description : ---
* Author : zh.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
/*实验现象:
红色和绿色LED灯分别以固定的频率闪烁,并且打开串口工具,可以看到有数据输出。
*/
int main(void)
{
system_clock.initialize(); //系统时钟初始化
led.initialize(); //LED初始化
usart6.initialize(); //串口初始化 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; OSStatInit();//初始化统计任务 OS_ENTER_CRITICAL();//关中断 OSTaskCreate(led0_task,(void*),(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-],LED0_TASK_PRIO);//创建LED0任务
OSTaskCreate(led1_task,(void*),(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-],LED1_TASK_PRIO);//创建LED1任务
OSTaskCreate(usart_task,(void*),(OS_STK*)&USART_TASK_STK[USART_STK_SIZE-],USART_TASK_PRIO);//创建usart任务
OSTaskSuspend(OS_PRIO_SELF);//挂起start_task任务 OS_EXIT_CRITICAL();//开中断
}
/*
* Name : led0_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void led0_task(void *pdata)
{
while()
{
LED_RED_ON; //红灯亮
OSTimeDlyHMSM(,,,); //延时500ms
LED_RED_OFF; //红灯灭
OSTimeDlyHMSM(,,,); //延时500ms
}
}
/*
* Name : led_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void led1_task(void *pdata)
{
while()
{
LED_GREEN_ON; //绿灯亮
OSTimeDlyHMSM(,,,); //延时1000ms
LED_GREEN_OFF; //绿灯灭
OSTimeDlyHMSM(,,,); //延时1000ms
}
}
/*
* Name : usart_task
* Description : ---
* Author : liu.
*
* History
* --------------------
* Rev : 0.00
* Date : 07/12/2017
*
* create.
* --------------------
*/
void usart_task(void *pdata)
{
double f=0.1; while()
{
f+=0.1f; //浮点型运算
usart6.printf("float f=%.4f\r\n",f); //串口输出
OSTimeDlyHMSM(,,,); //延时500ms
}
}
iCore4链接:

【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II的更多相关文章
- 【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】例程八:消息邮箱
一.实验说明: 消息邮箱是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】例程四:软件定时器
一.实验说明: 一些应用程序执行它们的任务时需要延迟一段特定的时间,因此uC/OS-II为我们提供了一些相应的 延时函数,本例程我们使用软件定时器定时500ms点亮相应的LED实现三色LED循环闪烁. ...
- 【iCore4 双核心板_uC/OS-II】例程三:任务的挂起与恢复
一.实验说明: 当一个任务正在运行的时候,由于某种情况可能需要终止运行一段时间,终止的这段时间就是 所谓的任务的挂起,可以由该任务自身或者其他任务来挂起一个任务.当被挂起的任务需要再次运 行的时候,可 ...
随机推荐
- [SNV]奇怪的错误搜集
ld: library not found for -XXXXX clang: error: linker command failed with exit code 1 (use -v to see ...
- ;(function(){ //代码})(); 自执行函数开头为什么要加;或者!
我们有时候会在自执行函数中看到这样的代码;(function(){ //我们的代码.. alert('Hello!'); })(); !(function(){ //我们的代码.. alert('He ...
- 获取当前泛型类的传入,BaseDaoImpl<T> implements BaseDao<T>
public abstract class BaseDaoImpl<T> implements BaseDao<T> { private Class<T> claz ...
- BZOJ3644 : 陶陶的旅行计划
假设是序列问题,且$S<T$,可以贪心求解,通过维护下述信息进行区间合并. 对于区间$[l,r]$,维护的信息有: $v$:跳到了$\geq r$的位置后,可以花费$1$往右最多扩展多少. $f ...
- 3. Spring 核心之 IOC(控制反转) & DI(依赖注入)
注:此文摘自 http://blog.csdn.net/it_man/article/details/4402245 IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述 ...
- shiro入门教程
一.shiro入门 shiro.ini和log4j.properties要放在src下面,lib是和src同级别的,然后lib下面的jar包是必须的,lib下面的jar包需要add path,如果报错 ...
- java中 Java.lang.Long.parseLong()方法
这是在刷杭电一道水题中遇到的,当时用java没思路,便查了查题解,用到了Java.lang.Long.parseLong()方法 题目链接:http://acm.hdu.edu.cn/showprob ...
- Css3实现波浪线效果1
一.波浪线 ,常用 .info::before { content: ''; position: absolute; top: 30px; width: 100%; height: 0.25em; b ...
- pycharm 注册码/License server 2017年最新
两种方法: 1.选License server激活,输入:http://idea.imsxm.com 2.2017年激活码 时效1年BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUc ...
- Linux之网络编程:时间服务器
基于TCP-服务器 1,创建一个socket套接字 int socket(int domain,int type,int protocol) domain:IP地址族,AF_INET(IPv4).AF ...