如何将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 -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

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

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

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

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