STM32F103 UCOSII 移植实验

UCOSII 移植

一、向工程中添加相应文件夹

 1、建立相应文件夹

  在工程目录下新建UCOSII文件夹,并在UCOSII文件夹中另外新建3个文件夹:CONFIG、CORE和PORT,如下图所示

STM32F103 UCOSII 移植实验_第1张图片STM32F103 UCOSII 移植实验_第2张图片

  2、向CORE文件夹中添加源码文件

1)源码文件下载

   到Micrimum下载源码文件,注册账号,登录下载,如下图所示

STM32F103 UCOSII 移植实验_第3张图片

 

如果下载的是.html文件,将后缀改为.zip解压即可

2)添加源码文件

  向CORE文件夹中添加COSII源码文件,打开UCOSII源码文件夹中的Source文件夹,共14个文件,除去os_cfg_r.h和os_dbg_r.c这两个文件,其余的全部复制到CORE文件夹中,如下图所示

STM32F103 UCOSII 移植实验_第4张图片

3、向CONFIG文件夹中添加源码文件

将includes.h和os_cfg.h复制到CONFIG文件夹中,如下图所示(这两个文件来自战舰开发板实验源码实验51 UCOSII实验1-1-任务调度)

STM32F103 UCOSII 移植实验_第5张图片

4、向PORT文件夹中添加源码文件

向 PORT 文件夹中添加 5 个文件:os_cpu.h、os_cpu_a.asm、os_cpu_c.c、os_dbg.c

和 os_dgb_r.c。如下图所示(这两个文件来自战舰开发板实验源码实验51 UCOSII实验1-1-任务调度)

STM32F103 UCOSII 移植实验_第6张图片

二、将与UCOSII有关的文件添加到工程中

  在工程分组中建立三个分组:UCOSII-CORE、UCOSII-PORT 和 UCOSII-CONFIG。如下图所示

STM32F103 UCOSII 移植实验_第7张图片

 

向UCOSII-CORE分组中添加CORE文件中除ucosii. c以外的所有.c文件,向UCOSII-PORT分组中添加PORT文件中os_cpu.h、os_cpu_a.asm和os_cpu_c.c这三个.c文件,向UCOSII-CONFIG分组中添加includes.h和os_cfg.h这两个文件,添加完成后如下图所示。

注意:不要将ucos_ii.c文件添加到UCOSII-CORE分组中!!!否则编译以后会提示好多重复定义的错误!

STM32F103 UCOSII 移植实验_第8张图片

 

最后添加相应的头文件路径,如下图所示

STM32F103 UCOSII 移植实验_第9张图片

 

编译工程师提示如下错误:不能打开“app_cfg.h”头文件,如下图所示

 

双击错误信息,跳转到出错处,在ucos_ii.h 头文件中添加了 app_cfg.h这个头文件,而这个头文件我们并没有实现,所以这里将这行代码屏蔽掉改为添加 includes.h头文件,改完后如下图所示

STM32F103 UCOSII 移植实验_第10张图片

 

如下图所示,部分文件带有小钥匙的图标,该文件无法编辑,可能的原因是文件是只读属性,修改文件权限,也可能是操作系统未激活

STM32F103 UCOSII 移植实验_第11张图片

 

STM32F103 UCOSII 移植实验_第12张图片

 

修改完之后再编译一下工程,继续报错,错误如下:提示我们在os_cpu_a.o 和 stm32f10x_it.o 这两个文件中重复定义了 PendSV_Handler 这个函数。如下图所示

 

打开 stm32f10x_it.c 文件,将中断服务函数 PendSV_Handler 屏蔽掉,屏蔽后如下图所示

STM32F103 UCOSII 移植实验_第13张图片

 

 

 

三、修改 sys.h  头文件

 打开sys.h 头文件,里面有一个SYSTEM_SUPPORT_UCOS的宏定义,如果定义为0的话不支持 UCOS,我们将其改为 1 支持 UCOS。

将 SYSTEM_SUPPORT_UCOS 定义为 1 后编译工程,发现提示如下图所示错误,提示我们在 stm32f10x_it.o 和 delay.o 这两个文件中重复定义了 SysTick_Handler 这个函数。

 

将stm32f10x_it.c 文件中的中断服务函数 SysTick_Handler 屏蔽掉,屏蔽后如下图所示

STM32F103 UCOSII 移植实验_第14张图片

 

继续编译,程序无错误。

你可能感兴趣的:(STM32,UCOS)