您的位置 首页 产品

如何将UCOSII移植到51单片机上

如何将UCOSII移植到51单片机上-一、准备工作

1. 开发环境: Keil C集成开发环境

2. 源代码:UCOSII的源代码,网上可以自己下载

3. 文件分析:

1)UCOSII文件中与处理器无关的文件:

OS_CORE.C

OS_FLAG.C

OS_MBOX.C

OS_MEM.C

OS_MUTEX.C

OS_Q.C

OS_SEM.C

OS_TASK.C

OS_TIME.C

UCOS_II.C

UCOS_II.H

一、准备工作

1. 开发环境: Keil C集成开发环境

2. 源代码:UCOSII的源代码,网上能够自己下载

3. 文件剖析:

1)UCOSII文件中与处理器无关的文件:

OS_CORE.C

OS_FLAG.C

OS_MBOX.C

OS_MEM.C

OS_MUTEX.C

OS_Q.C

OS_SEM.C

OS_TASK.C

OS_TIME.C

UCOS_II.C

UCOS_II.H

如何将UCOSII移植到51单片机上

以上这些文件在c51移植进程中只需给函数加上可重入性即可,即在每个函数后边增加关键字:reentrant

2)与运用相关的文件:

INCLUDES.H——其间包括51单片机头文件和相关运用头文件

OS_CFG.H——这个文件关于要运用体系中的相关东西,如邮箱,信号等,都要在这个头文件中把相关宏设置为1

3)与处理器相关的文件:

OS_CPU.H——相关的数据类型、关中止、使命仓库方向、使命切换宏界说等

OS_CPU_A.ASM——一堆的汇编和伪指令,我表明没去深究,可是是整个移植的关键所在

OS_CPU_C.C——OSTaskStkInit()函数和体系中止定时器的编写。

还有一个重要的思维便是c51仓库的规划,我关于这个有点头大,不清楚。

二、开端修正和编写代码移植。

我没有经历过移植的进程,所以我没有发言权,我只参阅51单片机牛人的代码,学着运用就行

因为在CSDN上忘掉移植者是谁了,我在这将重要文件中的代码贴出参阅参阅,只做沟通运用。

includes.h

#ifndef __INCLUDES__

#define __INCLUDES__

#include “uCosii\os_cpu.h”

#include “uCosii\os_cfg.h”

#include “uCosii\ucos_ii.h”

#include“reg51.h”

#endif

OS_CFG.H

#ifndef __OS_CFG_H

#define __OS_CFG_H

#define MaxStkSize 64 /*依据修正,每个使命运用相同巨细的仓库,这便是每个仓库的巨细*/

#define OS_MAX_EVENTS 1 /* Max. number of event control blocks in your applicaTIon 。.. */

/* 。.. MUST be 》 0 */

#define OS_MAX_FLAGS 1 /* Max. number of Event Flag Groups in your applicaTIon 。.. */

/* 。.. MUST be 》 0 */

#define OS_MAX_MEM_PART 1 /* Max. number of memory parTItions 。.. */

/* 。.. MUST be 》 0 */

#define OS_MAX_QS 1 /* Max. number of queue control blocks in your application 。.. */

/* 。.. MUST be 》 0 */

#define OS_MAX_TASKS 3 /* Max. number of tasks in your application 。.. */

/* 。.. MUST be 》= 2 */

#define OS_LOWEST_PRIO 4 /* Defines the lowest priority that can be assigned 。.. */

/* 。.. MUST NEVER be higher than 63! */

#define OS_TASK_IDLE_STK_SIZE MaxStkSize /* Idle task stack size (# of OS_STK wide entries),运用相同的栈巨细*/

#define OS_TASK_STAT_EN 0 /* Enable (1) or Disable(0) the statistics task */

#define OS_TASK_STAT_STK_SIZE MaxStkSize /* Statistics task stack size (# of OS_STK wide entries),运用相同的栈巨细*/

#define OS_ARG_CHK_EN 0 /* Enable (1) or Disable (0) argument checking */

#define OS_CPU_HOOKS_EN 1 /* uC/OS-II hooks are found in the processor port files */

/* ———————– EVENT FLAGS ———————— */

#define OS_FLAG_EN 0 /* Enable (1) or Disable (0) code generation for EVENT FLAGS */

#define OS_FLAG_WAIT_CLR_EN 0 /* Include code for Wait on Clear EVENT FLAGS */

#define OS_FLAG_ACCEPT_EN 0 /* Include code for OSFlagAccept() */

#define OS_FLAG_DEL_EN 0 /* Include code for OSFlagDel() */

#define OS_FLAG_QUERY_EN 0 /* Include code for OSFlagQuery() */

/* ——————– MESSAGE MAILBOXES ——————— */

#define OS_MBOX_EN 1 /* Enable (1) or Disable (0) code generation for MAILBOXES */

#define OS_MBOX_ACCEPT_EN 0 /* Include code for OSMboxAccept() */

#define OS_MBOX_DEL_EN 0 /* Include code for OSMboxDel() */

#define OS_MBOX_POST_EN 1 /* Include code for OSMboxPost() */

#define OS_MBOX_POST_OPT_EN 0 /* Include code for OSMboxPostOpt() */

#define OS_MBOX_QUERY_EN 0 /* Include code for OSMboxQuery() */

/* ——————— MEMORY MANAGEMENT ——————– */

#define OS_MEM_EN 0 /* Enable (1) or Disable (0) code generation for MEMORY MANAGER */

#define OS_MEM_QUERY_EN 0 /* Include code for OSMemQuery() */

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/345984.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部