【深入实践ucos-ii】第一个示例程序代码

本篇博客演示了ucos-ii的第一个示例程序代码,代码简单易懂,意在带领读者快速实战ucos-ii编程。

很多同学玩过单片机,单片机在裸机环境下,一般是一个main函数,里面有个大while循环,然后程序就在这个大while中循环执行。在这个代码中你将会看到,两个大while循环“同时”执行。这种运行已经不同于我们单片机下程序简单的裸跑了。

且看如下代码:

/****************************************
project:ucos-ii demo
author:arvik
csdn:http://blog.csdn.net/u012819339
email:1216601195@qq.com
*****************************************/
#include "SystemConfig.h"

/* 定义任务堆栈*/
OS_STK App1Task_Stk[App1Task_StkSize];
OS_STK App2Task_Stk[App2Task_StkSize];

int main(void)
{
    OSInit(); // 系统初始化

    OSTaskCreate(App1Task, (void *)0, &App1Task_Stk[App1Task_StkSize-1], App1Task_Prio);//创建其他任务App1Task
    OSTaskCreate(App2Task, (void *)0, &App2Task_Stk[App2Task_StkSize-1], App2Task_Prio);//创建其他任务App2Task
    OSStart(); // 启动ucos-ii

    return 0;
}

/* App1Task */
void App1Task(void *p_arg)
{
    p_arg = p_arg;
    while(1)
    {
        printf("this is App1task!\n");
        OSTimeDlyHMSM(0, 0, 3, 0); /* 任务调度*/
    }
}

/* App2Task */
void App2Task(void *p_arg)
{
    p_arg = p_arg;
    while(1)
    {
        printf("this is App2task!\n");
        OSTimeDlyHMSM(0, 0, 2, 0); 
    }
}

SystemConfig.h内容如下

#ifndef SYSTEM_CONFIG_H
#define SYSTEM_CONFIG_H

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>
#include <assert.h>
#include <includes.h>       

/****** TASK PRIORITIES ******/
#define App1Task_Prio 14  //App1Task的优先级
#define App2Task_Prio 16  App2Task的优先级

#define OS_TASK_TMR_PRIO 5 

/****** TASK STACK SIZES ******/
#define App1Task_StkSize 320
#define App2Task_StkSize 320

extern void App1Task(void *p_arg);
extern void App2Task(void *p_arg);

#endif

我们会发现,“this is App1task!”会按照2秒每次的频率循环打印,“this is App2task!”会按照3秒每次的频率循环打印。这样我们“同时”执行了两个任务。

至此,ucos-ii的第一个示例程序已经跑起来了。

源代码下载地址:
CSDN:http://download.csdn.net/detail/u012819339/9428838
github:https://github.com/arviklinux/ucos-ii

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值