在VS2008中移植uCOS-II

在VS2008中移植uCOS-II

目的:我也是初学者,只为初学者建立环境,大家一起学习

参考资源:所有相关资源已经上传到CSDN下载版块http://download.csdn.net/detail/xiahouzuoxin/4389537

1、新建工程

在VS2008中移植uCOS-II_第1张图片

在VS2008中移植uCOS-II_第2张图片

2、拷贝uCOS-II文件夹到工程目录下;

将“..\uCOS-II\Other_Headers”下的“include.h”和“SystemConfig.h”两个头文件剪切到..\uCOS_Demo\uCOS_Demo目录下;

3、配置工程

在工程上单击右键“属性”,弹出uCOS_Demo属性页对话框。

1)附加包含目录配置

在VS2008中移植uCOS-II_第3张图片

2)编译代码类型配置为C代码

在VS2008中移植uCOS-II_第4张图片

3)添加依赖项”WinMM.lib”

在VS2008中移植uCOS-II_第5张图片

4、在工程中添加源文件

在VS2008中移植uCOS-II_第6张图片

5、编译试试,出现如下Error

1>ucos_ii.obj : error LNK2019: 无法解析的外部符号_OSDebugInit,该符号在函数_OSInit 中被引用

这是由于OSDebugInit没有定义导致,因此在os_trace.c中添加如下代码

/* 移植时所需定义*/

void OSDebugInit()

{

}
6、再编译工程试试,OK

7、创建3个任务:MianTask、App1Task、App2Task

(1)“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 MainTask_Prio 5

#define App1Task_Prio 7

#define App2Task_Prio 9

/*

*********************************************************************

* TASK STACK SIZES

*********************************************************************

*/

#define MainTask_StkSize 1024

#define App1Task_StkSize 1024

#define App2Task_StkSize 1024

#define OS_TASK_TMR_PRIO 65533

#define OS_IDLE_PRIO OS_TASK_IDLE_PRIO

#define OS_STAT_PRIO OS_TASK_STAT_PRIO

/*

*********************************************************************

* TASK

*********************************************************************

*/

extern void MainTask(void *p_arg);

extern void App1Task(void *p_arg);

extern void App2Task(void *p_arg);

#endif

(2)“uCOS_Demo.cpp”代码如下

//uCOS_Demo.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include "SystemConfig.h"

/* 定义堆栈*/

OS_STKMainTask_Stk[MainTask_StkSize];

OS_STKApp1Task_Stk[App1Task_StkSize];

OS_STK App2Task_Stk[App2Task_StkSize];

int _tmain(int argc, _TCHAR*argv[])

{

OSInit(); /* 系统初始化*/

/* 创建主任务*/

OSTaskCreate(MainTask, (void *)0,&MainTask_Stk[MainTask_StkSize-1], MainTask_Prio);

OSStart(); /* 开始任务调度*/

return 0;

}

/* 主任务*/

void MainTask(void *p_arg)

{

p_arg = p_arg;

OSStatInit(); /* 统计任务初始化*/

while(1)

{

/* 创建其他任务*/

OSTaskCreate(App1Task, (void*)0, &App1Task_Stk[App1Task_StkSize-1], App1Task_Prio);

OSTaskCreate(App2Task, (void*)0, &App2Task_Stk[App2Task_StkSize-1], App2Task_Prio);

OSTimeDlyHMSM(0,0,1,0);/* 任务调度*/

//OSTaskDel(MainTask_Prio); /* 删除主任务*/

}

}

/* App1Task */

void App1Task(void *p_arg)

{

p_arg = p_arg;

while(1)

{

printf("Hello,I am PC!\n");

OSTimeDlyHMSM(0, 0, 1, 0);/* 任务调度*/

}

}

/* App2Task */

void App2Task(void *p_arg)

{

p_arg = p_arg;

while(1)

{

printf("Hello,uCOS-II!\n");

OSTimeDlyHMSM(0, 0, 2, 0);/* 任务调度*/

}

}

运行结果如下

在VS2008中移植uCOS-II_第7张图片

【注】所有移植过程过程参考网上资源

你可能感兴趣的:(vs2008)