STMCU小助手
发布时间:2022-5-18 22:00
|
一、准备好UCOSIII的源码0 s0 j, g, R8 j# a ①进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号( S% Z2 Q$ d8 P. x+ o7 b9 Y
+ k) D7 x8 q( L# O; G5 i( _: x 这里点击STN32F4xx进去选择自己需要的下载即可( N+ Y: g! |) Y- l. a+ N# O4 {
②提供一份我已经下载好的UCOSIII源码 二、UCOSIII移植6 x. m* J( o E& i5 T8 M( d% d' |. Y ①准备好需要移植的工程: k6 C; z! b8 u/ U 在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_III文件复制到新建的这个文件夹中。 8 Z! p8 `7 b5 Q0 h3 D" Q
, P4 o6 O4 |( [+ o8 `: ?* l 还需要在UCOSIII文件夹中再新建两个文件夹:UCOSIII_BSP,UCOSIII_CONFIG,上图所示,已经建好了。" `' ~# n6 P$ n6 B ②向UCOSIII_CONFIG添加文件& x+ S6 i5 m! ]" J2 C9 t 路径是:UCOSIII 3.04\Micrium\Software\EvalBoards\ST\STM32F429II-SK\uCOS-III,添加的文件如图所示:
③向UCOSIII_BSP添加文件. h5 F: p V' e3 b8 L' \ 路径是:UCOSIII 3.04\Micrium\Software\EvalBoards\ST\STM32F429II-SK\BSP
④打开工程文件,向工程中添加分组,需要添加的分组文件夹如下" }4 D% X1 H- r) E1 C6 S" E, \. E + c/ f0 L- W2 n
7 p# @3 }( B% ^+ {5 r& p: `$ B ⑤文件夹添加好后,再向各文件夹添加源文件 1、BSP添加路径:UCOSIII\UCOS_BSP里的bsp.c添加进去,添加后如下图所示:8 O) L3 x2 n/ x5 \" N4 i
2、CPU添加路径:UCOSIII\UCOS_CPU里的cpu_core.c添加进去,并继续进入目录ARM-Cortex-M4\RealView选择cpu_a.sam\cpu_c.c两个文件,添加后如下图所示: ; ^5 b8 x. t- I' |8 j" v |" f
3、LIB添加路径UCOS-III-LED\UCOSIII\uC-LIB里的
7 q9 p0 P, T$ V! M# ?0 V4 U4 A
4、CORE添加路径:UCOS-III-LED\UCOSIII\uCOS-III\Source,添加所有文件,添加后如下图所示: 8 U+ K# U$ E" A' t
5、PORT添加路径:UCOS-III-LED\UCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView,选择All file,添加所有文件,添加后如下图所示:( Y0 S7 L- y$ q" r# n
& Q1 i, ]& n$ z2 @( Q3 h 6、CONFIG添加路径:UCOS-III-LED\UCOSIII\UCOS_CONFIG选择All file,添加所有文件/ s( `4 D4 X3 C1 Q5 S7 L8 ^
注意,此时部分文件会带有一把钥匙,代表不能修改,修改方法:返回工程文件,右键点击UCOSIII文件,选择属性,把只读去掉即可进入工程中对其修改9 j3 _1 e! Z! G- x. u( c6 R ) ?3 I3 C% n9 t5 E+ t, [ ⑥添加相关头文件路径 * f0 `+ Y/ G9 D
! b, u( W% l. l4 P7 h$ G& w$ T ⑦修改bsp.c和bsp.h文件,这里直接下载已经修改好的文件 ⑧修改os_cpu_a.asm汇编文件,这里直接下载已经修改好的文件 - q" L( |: m, _* m8 m7 i; F/ L ⑨修改os_cpu_c.c文件,这个主要是修改堆栈函数,这里直接下载已经修改好的文件, d' _& {2 f: W / x. b" I. D2 `& z* h( ?: j ⑩修改os_cfg_app.h文件,系统裁剪和内核有关的,这里直接下载已经修改好的文件+ k: v# K0 D( |: U% c( d ) e2 H) P9 S; W% A9 u + d4 c. K. V. m7 B 此时编译一下,会出现以下问题' i5 A9 M% Y6 o* L9 x$ c, Z 1、PendSV_Handler是做上下文切换的,重复定义,而STM32F4xx_it.c只是给的一个框架,屏蔽掉即可
7 m- ?7 r6 c& z# A/ A# J3 f 2、搜索到是os_cpu_c.c里面的堆栈函数,由于在汇编文件已经定义,所以这里屏蔽掉即可& w* A0 S* F% R I, C( a1 |
十一、修改sys.h# ?$ W7 B6 | f1 Q1 W/ Y# y9 l. X 这里要使用支持UCOSIII的SYSTEM文件夹/ O Y' `! Q; ~+ ?# _9 b4 f# w8 K0 O
' r* r- H$ r1 R) X 编译后出现的问题: 中断服务函数重复定义,同样,STM32F4xx_it.c里的屏蔽掉即可! I% N6 p" F" A 1 {" r# t- e5 v% L, ^1 i7 L+ A1 T" c
6 g) G7 P+ B5 G 十二、最后在主函数创建任务进行测试5 a7 }) |/ g5 Q' f' z- @% ^+ A2 t 注意在os_cpu_c.c中添加#include "includes.h" //添加头文件 (1)、创建一个start_task任务,Start任务用来创建其他任务。. Y- D( ~" Q; z+ k , r6 F/ D; }) ? (2)、创建一个led0_task任务,用来控制LED0的亮灭。 (3)、创建一个led1_task任务,用来控制LED1的亮灭。 (4)、创建一个float_task任务,用来测试浮点计算。 . u/ z+ v q" c" W; C) I 如何移植不同版本的UCOS系统?2 C& v( q& L! W) m 只需要将源码的UCOSIII\uCOS-III下的Source文件夹,直接替换掉移植好后的Source,比如我把3.03版本的Source文件夹复制替换掉移植好工程里的UCOSIII\uCOS-III下的Source文件夹编译即可,这样就将原来的版本替换成3.03的版本了。 6 |. l( x. x7 V" H0 ~2 \6 p: @ 3 v# q1 E- [9 c) m% d) R/ X % U( Y8 ?" \2 \/ \& r. z. C 1 G z, X7 d* Q6 x0 L' M |
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版