你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】UCOSIII在STM32F4xx上的移植

[复制链接]
STMCU小助手 发布时间:2022-5-18 22:00
一、准备好UCOSIII的源码
    ①进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号

1YVP6Z{WS$E1Z]B_AEM`0]I.png

这里点击STN32F4xx进去选择自己需要的下载即可

@$Q%GI)KGK12)}XWB3(6XZ6.png

GVIHS$KSVGL%GSECE[_H@[D.png

    ②提供一份我已经下载好的UCOSIII源码

二、UCOSIII移植
    ①准备好需要移植的工程
在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_III文件复制到新建的这个文件夹中。

KBW)F%VNP0X2D{S[H[@$`FX.png `0H1J]6[[TG_KQR3S0AZHBO.png

还需要在UCOSIII文件夹中再新建两个文件夹:UCOSIII_BSP,UCOSIII_CONFIG,上图所示,已经建好了。

②向UCOSIII_CONFIG添加文件
路径是:UCOSIII 3.04\Micrium\Software\EvalBoards\ST\STM32F429II-SK\uCOS-III,添加的文件如图所示:

64BGN2V61PW8~F}%A@TJ`JU.png

③向UCOSIII_BSP添加文件
路径是:UCOSIII 3.04\Micrium\Software\EvalBoards\ST\STM32F429II-SK\BSP

[KXP840DFH[B)RL]`7Z7V05.png

④打开工程文件,向工程中添加分组,需要添加的分组文件夹如下

KZ[PN[BP)}UK]6$S`7}199T.png `GIT(@4BY$]}B40GP%M$YN1.png

⑤文件夹添加好后,再向各文件夹添加源文件

1、BSP添加路径:UCOSIII\UCOS_BSP里的bsp.c添加进去,添加后如下图所示:

L)IY7J3C}TG{1[M8FJXF@%8.png

2、CPU添加路径:UCOSIII\UCOS_CPU里的cpu_core.c添加进去,并继续进入目录ARM-Cortex-M4\RealView选择cpu_a.sam\cpu_c.c两个文件,添加后如下图所示:

HFT{]513HPC6)[J_XKFBLXU.png

3、LIB添加路径UCOS-III-LED\UCOSIII\uC-LIB里的

23I)3M_]MFLV19(85SE1{ZN.png ,继续点击Ports\ARM-Cortex-M4\RealView,选择All file,添加lib_mem_a.asm文件,添加后如下图所示:

7[V9R7US`9J41YNH~$_WR3A.png

4、CORE添加路径:UCOS-III-LED\UCOSIII\uCOS-III\Source,添加所有文件,添加后如下图所示:

_THC_PX[Y]6K8P{AF@5{T.png

5、PORT添加路径:UCOS-III-LED\UCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView,选择All file,添加所有文件,添加后如下图所示:

B$J`JK%CX9@T4O`HU4EG4VF.png

6、CONFIG添加路径:UCOS-III-LED\UCOSIII\UCOS_CONFIG选择All file,添加所有文件

XZTTIKQMC1L}T@HUWD021YB.png

注意,此时部分文件会带有一把钥匙,代表不能修改,修改方法:返回工程文件,右键点击UCOSIII文件,选择属性,把只读去掉即可进入工程中对其修改

⑥添加相关头文件路径

U2N{1ASPHJ)AD[E$YA_22}C.png

⑦修改bsp.c和bsp.h文件,这里直接下载已经修改好的文件

⑧修改os_cpu_a.asm汇编文件,这里直接下载已经修改好的文件

⑨修改os_cpu_c.c文件,这个主要是修改堆栈函数,这里直接下载已经修改好的文件

⑩修改os_cfg_app.h文件,系统裁剪和内核有关的,这里直接下载已经修改好的文件


此时编译一下,会出现以下问题
1、PendSV_Handler是做上下文切换的,重复定义,而STM32F4xx_it.c只是给的一个框架,屏蔽掉即可
EQ2MHA91@YK`[3%{KK41I2M.png

2、搜索到是os_cpu_c.c里面的堆栈函数,由于在汇编文件已经定义,所以这里屏蔽掉即可

7$VAE67YYI}KPCB3H%(]1ME.png

十一、修改sys.h
这里要使用支持UCOSIII的SYSTEM文件夹

6CT`L}{072DX0~71NE9_]O7.png

编译后出现的问题: 中断服务函数重复定义,同样,STM32F4xx_it.c里的屏蔽掉即可

{R_K)YD1Q}3(HN)`IM}TJTS.png

十二、最后在主函数创建任务进行测试
注意在os_cpu_c.c中添加#include "includes.h"   //添加头文件

(1)、创建一个start_task任务,Start任务用来创建其他任务。

(2)、创建一个led0_task任务,用来控制LED0的亮灭。

(3)、创建一个led1_task任务,用来控制LED1的亮灭。

(4)、创建一个float_task任务,用来测试浮点计算。


如何移植不同版本的UCOS系统?

只需要将源码的UCOSIII\uCOS-III下的Source文件夹,直接替换掉移植好后的Source,比如我把3.03版本的Source文件夹复制替换掉移植好工程里的UCOSIII\uCOS-III下的Source文件夹编译即可,这样就将原来的版本替换成3.03的版本了。





7I[K$}3SNOZL%AIE@D$F@PU.png
收藏 评论0 发布时间:2022-5-18 22:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版