基于GD32F470开发板移植ucosiii详细教程

  1. 下载ucosiii源码
    下载链接:ucosiii 3.04

  2. GD32F470官网例程
    下载链接:GD32F4XX例程

  3. 移植后工程
    下载链接:移植后工程

  4. 移植讲解
    4.1、准备基础工程,(跑马灯实验工程)可通过以上链接下载;
    4.2、UCOSIII源码,可通过以上链接下载,打开后有以下4个文件夹;
    在这里插入图片描述
    4.3、EvalBoards文件夹中,红框中文件是需要我们添加到工程中的;
    在这里插入图片描述
    4.4、 uC-CPU文件夹
    这个文件里面是与CPU相关的代码,有下面几个文件:
    cpu_core.c文件:该文件包含了适用于所有CPU架构的C代码。该文件包含了用来测量中断关闭事件的函数(中断关闭和打开分别由CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXIT()两个宏实现),还包含了一个可模仿前导码零计算的函数(以防止CPU不提供这样的指令),以及一些其他的函数。
    cpu_core.h文件:包含cpu_core.c中函数的原型声明,以及用来测量中断关闭时间变量的定义。
    cpu_def.h文件:包含uC/CPU模块使用的各种#define常量
    ARM-Cortex-M4文件夹:ARM-Cortex-M3文件夹下有三个文件夹:GNU,IAR,RealView,我们使用的是keil MDK编译器,所以只需要看RealView文件夹,RealView文件夹下有3个文件:cpu.h、 cpu_a.asm、 cpu_c.c文件,这3个文件的具体内容如下:
    ①cpu.h文件:包含了一些类型的定义,使UCOSIII和其他模块可与CPU架构和编译器字宽度无关。在该文件中用户能够找到CPU_INT16U、 CPU_INT32U、 CPU_FP32等数据类型的定义。该文件还指定了CPU使用的是大端模式还是小端模式,定义了UCOSIII使用的 CPU_STK数据类型,定义了CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXTI(),还包括一些与CPU架构相关的函数声明。
    ②cpu_a.asm文件:该文件包含了一些用汇编语言编写的函数,可用来开中断和关中断,计算前导零(如果CPU支持这条指令),以及其他一些只能用汇编语言编写的与CPU相关的函数,这个文件中的函数可以从C代码中调用。
    ③cpu_c.c文件:包含了一些基于特定CPU架构但为了可移植而用C语言编写的函数C代码,作为一个普通原则,除非汇编语言能显著提高性能,否则尽量用C语言编写函数。
    注意,上面的cpu.h 、cpu_a.asm和cpu_c.c这3个文件,是在uC_CPU文件夹中ARM-Cortex-M4文件夹下的,打开ARM-Cortex-M4文件夹如图所示:
    在这里插入图片描述4.5、 uC_LIB文件
    uC_LIB是由一些可移植并且与编译器无关的函数组成,UCOSIII不使用uC_LIB中的函数,但是UCOSIII和uC_CPU假定lib_def.h是存在的,uC_LIB包含以下几个文件:

    lib_ascii.h和lib_ascii.c文件:提供ASCII_ToLower()、ASCII_ToUpper()、ASCII_IsAlpha()和ASCII_IsDig()等函数,他们可以分别替代标准库函数tolower()、toupper()、isalpha()和isdigit()等。
    lib_def.h文件:定义了许多常量,如TURE/FALSE、YES/NO、ENABLE/DISABLE,以及各种进制的常量。但是,该文件中所有#define常量都以DEF_打头,所以上述常量的名字实际上为DEF_TRUE/DEF_FALSE等。该文件还为常量数字计算定义了宏。
    lib_math.h和lib_math.c文件:包含了Math_Rand()、Math_SetRand()等函数的源代码,可用来替代标准库函数rand()、srand()。
    lib_mem.c和lib_mem.h文件:包含了Mem_Clr()、Mem_Set()、Mem_Copy和Mem_Cmp()等函数的源代码,可用于替代标准库函数memclr()、memset()、memcpy()和memcmp()等。
    lib_str.c和lib_str.h文件:包含了str_Len()、str_Copy()和str_Cmp()等函数的源代码,可用于替代标准库函数strlen()、strcpy()、ctrcmp()等。
    lib_mem_a.asm文件:lib_mem_a.asm文件在Ports->ARM_Cortex-M4->RealView下,包含了lib_mem.c函数的汇编优化版。

4.6、uCOS-III文件
这个文件夹中有2个文件Ports和Source,Ports文件为与CPU平台有关的文件,Source文件夹里面为UCOSIII 3.04的源码,打开Source文件夹如图所示:
在这里插入图片描述在这里插入图片描述

5、ucosiii移植
5.1向工程中添加相应的文件

在这里插入图片描述在这里插入图片描述修改启动文件
在这里插入图片描述在这里插入图片描述

6、主程序文件代码

#include "gd32f4xx.h"
#include "gd32f470i_eval.h"
#include "systick.h"
#include "delay.h"
#include <stdio.h>
//#include "includes.h"

//任务优先级
#define START_TASK_PRIO		3
//任务堆栈大小	
#define START_STK_SIZE 		128
//任务控制块
OS_TCB StartTaskTCB;
//任务堆栈	
CPU_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *p_arg);

//任务优先级
#define TASK1_TASK_PRIO		4
//任务堆栈大小	
#define TASK1_STK_SIZE 		128
//任务控制块
OS_TCB Task1_TaskTCB;
//任务堆栈	
CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE];
void task1_task(void *p_arg
  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DHZFSYJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值