如何将ucosii移植到vs2008中运行

本文介绍关于如何将ucosii移植到vs2008中运行,其中参考了CSDN下载频道xiahouzuoxin的一篇文章,在此对这哥们表示感谢。

step1:下载uCOS-II源码,只是一些源代码和文档,放在自己硬盘上即可,无需安装(原以为要安装什么操作系统呢尴尬)。

step2:新建vs工程

 

完了之后的vs界面如下:

 

step3:将step1下载的文件中的源文件uCOS-II整个拷贝到step2新建的工程文件目录F:\ucosii\Project\FirstTest

step4:将...uCOS-II\Other_Headers路径下的两个.h文件拷贝到目录F:\ucosii\Project\FirstTest\FirstTest下

step5:在工程中添加源文件:

1.  右击工程文件名,新建3个文件夹,

              

2.  往Source和Port文件夹中添加源文件,注意最好是添加路径F:\ucosii\Project\FirstTest\uCOS-II\Source下的Source和Ports\WIN32这两个文件夹下的源文件到相应工程文件中,完了如下:

          

注意只要将Source中的那两个源文件添加进来即可,不可其全部添加,否则编译会有错误。

 

step6:添加F:\ucosii\Project\FirstTest\FirstTest目录下的两个.h文件(step4拷贝的那两个)到Header Files工程文件夹中

step7:修改工程属性,右击工程名,选择Properties

          
             

 

step8:编译,结果如下

         

这是由于OSDebugInit没有定义导致,在os_trace.c中添加如下的代码即可。

 

/* 移植时所需定义 */
void OSDebugInit()
{
}

再编译就OK了。

 

 

step9:创建3个任务来感受一下吧

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.  编写FirstTest.cpp中的代码

 

 

// FirstTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "SystemConfig.h"


OS_STK	MainTask_Stk[MainTask_StkSize];
OS_STK	App1Task_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);
	}
}

void App1Task(void *p_arg)
{
	p_arg = p_arg;

	while(1)
	{
		printf("Hello,I am PC!\n");
		OSTimeDlyHMSM(0,0,1,0);		//任务调度
	}
}

void App2Task(void *p_arg)
{
	p_arg = p_arg;

	while(1)
	{
		printf("Hello,uCOS-II!\n");
		OSTimeDlyHMSM(0,0,2,0);		//任务调度
	}
}

 

 

编译,运行,结果如下:

不断重复输出上述内容。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值