如何将ucosii移植到vs2008中运行

2024-06-06 06:08
文章标签 运行 移植 vs2008 ucosii

本文主要是介绍如何将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);		//任务调度}
}

 

 

编译,运行,结果如下:

不断重复输出上述内容。

 

这篇关于如何将ucosii移植到vs2008中运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035294

相关文章

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时