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

来源:互联网 发布:talkingdata数据造假 编辑:程序博客网 时间:2024/06/07 01:03

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

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

且看如下代码:

/****************************************project:ucos-ii demoauthor:arvikcsdn:http://blog.csdn.net/u012819339email: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 320extern 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

1 0