一、准备好UCOSIII的源码
①通过UCOSIII官方下载:https://www.micrium.com/,进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号
这里点击STN32F4xx进去选择自己需要的下载即可
②提供一份我已经下载好的UCOSIII源码:链接:https://pan.baidu.com/s/1hqDpzDigy1kg3ZaftQBJhQ 密码:1e5d
二、UCOSIII移植
①准备好需要移植的工程,在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_III文件复制到新建的这个文件夹中。
还需要在UCOSIII文件夹中再新建两个文件夹:UCOSIII_BSP,UCOSIII_CONFIG,上图所示,已经建好了。
②向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKuCOS-III,添加的文件如图所示:
③向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKBSP
④打开工程文件,向工程中添加分组,需要添加的分组文件夹如下
⑤文件夹添加好后,再向各文件夹添加源文件
1、BSP添加路径:UCOSIIIUCOS_BSP里的bsp.c添加进去,添加后如下图所示:
2、CPU添加路径:UCOSIIIUCOS_CPU里的cpu_core.c添加进去,并继续进入目录ARM-Cortex-M4RealView选择cpu_a.samcpu_c.c两个文件,添加后如下图所示:
3、LIB添加路径UCOS-III-LEDUCOSIIIuC-LIB里的
,继续点击PortsARM-Cortex-M4RealView,选择All file,添加lib_mem_a.asm文件,添加后如下图所示:
4、CORE添加路径:UCOS-III-LEDUCOSIIIuCOS-IIISource,添加所有文件,添加后如下图所示:
5、PORT添加路径:UCOS-III-LEDUCOSIIIuCOS-IIIPortsARM-Cortex-M4GenericRealView,选择All file,添加所有文件,添加后如下图所示:
6、CONFIG添加路径:UCOS-III-LEDUCOSIIIUCOS_CONFIG选择All file,添加所有文件
----------------------------------------------------------------------------------------------------------------------------------
注意,此时部分文件会带有一把钥匙,代表不能修改,修改方法:返回工程文件,右键点击UCOSIII文件,选择属性,把只读去掉即可进入工程中对其修改
----------------------------------------------------------------------------------------------------------------------------------
⑥添加相关头文件路径
⑦修改bsp.c和bsp.h文件,这里直接下载已经修改好的文件
⑧修改os_cpu_a.asm汇编文件,这里直接下载已经修改好的文件
⑨修改os_cpu_c.c文件,这个主要是修改堆栈函数,这里直接下载已经修改好的文件
⑩修改os_cfg_app.h文件,系统裁剪和内核有关的,这里直接下载已经修改好的文件
文件下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb
此时编译一下,会出现以下问题
1、PendSV_Handler是做上下文切换的,重复定义,而STM32F4xx_it.c只是给的一个框架,屏蔽掉即可
2、搜索到是os_cpu_c.c里面的堆栈函数,由于在汇编文件已经定义,所以这里屏蔽掉即可
十一、修改sys.h,这里要使用支持UCOSIII的SYSTEM文件夹
编译后出现的问题: 中断服务函数重复定义,同样,STM32F4xx_it.c里的屏蔽掉即可
十二、最后在主函数创建任务进行测试,注意在os_cpu_c.c中添加#include "includes.h" //添加头文件
(1)、创建一个start_task任务,Start任务用来创建其他任务。
(2)、创建一个led0_task任务,用来控制LED0的亮灭。
(3)、创建一个led1_task任务,用来控制LED1的亮灭。
(4)、创建一个float_task任务,用来测试浮点计算。
这里直接复制main.c进行测试,下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb
----------------------------------------------------------------------------------------------------------------------------------------------------
如何移植不同版本的UCOS系统?
只需要将源码的UCOSIIIuCOS-III下的Source文件夹,直接替换掉移植好后的Source,比如我把3.03版本的Source文件夹复制替换掉移植好工程里的UCOSIIIuCOS-III下的Source文件夹编译即可,这样就将原来的版本替换成3.03的版本了。
上一篇:STM32的独立看门狗(IWDG)
下一篇:STM32Cube的串口配置与使用
推荐阅读最新更新时间:2024-11-12 18:19
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 AD7793BRUZ 的参考设计
- LT6656BIDC-2.5、2.5V 精密电流和升压电压基准的典型应用
- Luat_HMI-7I0-800480-A
- LTC7149IFE 24V 输入至 -12V 输出、1MHz 降压稳压器的典型应用电路
- AD9265-FMC-125EBZ、16位125 Msps的AD9265评估板
- NCP715MXTBGEVB:LDO 稳压器、超低静态电流、XDFN6 封装、评估板
- L78L08AB可调输出稳压器的典型应用
- 【训练营】rgb灯带+578329A
- C8051F410DK,基于C8051F410 8051 MCU的MCU开发套件
- NSV45060JDT4G 大电流 LED 灯串的典型应用