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

【经验分享】UCOSIII系统移植到STM32F7中

[复制链接]
STMCU小助手 发布时间:2021-12-16 22:00
1.准备好UCOSIII的源码,可从官网下载。
9 f6 l0 ?6 J7 Y. O+ h8 |/ P: W+ d
2.在工程里创建文件夹UCOSIII等文件夹,并添加文件。
/ R% D2 n2 |, _1 E7 D$ F: Y7 n. A
4 I! s! p1 R8 p, x  A) o( t
20180927210216237.png 20180927210239879.png 20180927211528216.png

9 D/ K! h, f$ L3 z
20180927211543797.png

7 h* N+ z  M) M6 ]5 R. S: s5 n% G! M5 r) Z
3.在MDK中创建路径并添加文件。
4 l+ U% w0 p8 ^3 J5 R& w) }) L8 R: O3 W. ~9 G( I  W
2018092721263623.png 20180927212651333.png
6 h& x0 V# x" k4 ?$ d

5 @0 G6 `* R- U0 U  A4 a) K% D/ v6 B* j
4.修改相关文件
6 `3 _- s: j% @8 W8 s% D4 p: |* e# s+ e0 [  c6 @% d- D7 }1 C
a.. ^. s: j2 W& s" }/ n

$ w* [8 v2 P0 p0 B; \7 Obsp.c和bsp.h:这两个为系统外设的初始化文件,其实可以不用。5 ~/ R0 g5 V9 b0 F6 }
% ?. X9 P+ L& h9 P8 k0 o
b.
  \+ s5 F9 x6 L$ v1 E7 U2 I6 D+ N7 Q1 _
os_cpu_a.asm汇编文件:
7 g; O( h$ J& D) G  j8 [* |  @& S' C0 c  C1 R) J( t" j, @8 u
函数类型  PUBLIC改为  EXPORT
% l2 N! b3 Z% d9 d1 h
" J/ W5 K( t, c; ~PUBLIC  OS_CPU_FP_Reg_Push 和 PUBLIC  OS_CPU_FP_Reg_Pop两个函数可以不用,可以注释掉。4 P* j1 I. \6 f4 h/ u3 m

9 B6 v* `8 Y$ ^代码导引区中的
! F; G) n9 u- ^( Z9 c  `
, y* u' D9 w7 p' t7 Q4 M, ARSEG CODE:CODE:NOROOT(2)5 b5 T, H, |! q+ ]" q
   ;THUMB: g8 a: F' k' b  t, O% S* w  w

6 t  Y: k5 {8 I' ~修改为# C3 G2 Y/ ]! n
8 A) E9 C9 O9 e; D, Y6 C# W
   AREA |.text|, CODE, READONLY, ALIGN=2- a0 a1 H$ c3 p: p& y% Y. D, Y( z# L1 k% n
    THUMB$ J  I/ H) Y+ P  o) J9 B7 L
    REQUIRE8$ W+ v% n) P$ M3 \) B: |
    PRESERVE84 t- [+ |7 w5 r% I0 U' P8 o' z: V

' F: e7 p$ l; S$ Y' o# D这个格式跟下面的汇编语言格式相对应,并且函数名后面的冒号要去掉。+ I7 o7 n' r9 U* A/ g
( h" ?. j' Y& U
c.! \& b+ `% d$ P) y/ F
$ M4 `: J" A! ]% V0 W8 p0 c
lib_mem_a.asm汇编文件:
, V& D0 [: g# |) M0 T! C2 h. T& r! q" n1 p: U# S
和上面一样. S& K) c/ x3 i' @, c8 e* ^8 J

& j5 i* D& o. q4 k* n( }* md.
: a" a/ [% H1 ]  t2 \
  t3 x; h" q1 ~. E. B6 y; O8 ecpu.h:3 p- _! O' j" f. `' }

6 L; b/ V" H5 C& e# Q: a注释掉不存在的头文件;修改
, z5 k7 B+ |* ~! ?3 e% e/ f) Q5 r6 s9 H: Z
#define  CPU_INT_DIS()         do { cpu_sr =CPU_SR_Save(); } while (0): e( `4 z% w7 B# G$ L& |* }9 q/ r
#define  CPU_INT_EN()          do { CPU_SR_Restore(cpu_sr);  } while (0) ! Y( s0 x/ a8 c8 H' E- y

, e6 f# N8 S; L5 }3 r  i以及1 b% A! s+ T4 R8 ~5 F( q
! K/ M% b+ F! z9 t! k8 d
#define  CPU_MB()       _dsb(0xF)//__DSB()
6 q, f; m& h3 Z- I% {* K1 `! U6 c7 m#define  CPU_RMB()      _dsb(0xF)//__DSB()% o( C) u  G$ \
#define  CPU_WMB()      _dsb(0xF)//__DSB()+ G3 q. P* b: V8 c8 m# b7 i5 K1 q

1 F3 x4 ?% z1 s+ D; Se.
8 k1 E1 I7 z  E6 W) N$ B6 h2 q0 ?8 {  a2 b- J5 z1 e. ^* u+ |
cpu_cfg.h:& W+ c; g, D5 A: }$ a7 h
+ }+ |' [/ s# V: k
#if 1                                                        
1 Y" p, e# v( ]. m+ ~#define  CPU_CFG_INT_DIS_MEAS_EN                     改为 #if 06 `0 l* {  W% z. E" z3 U
#endif! V. r+ P$ M4 T2 ?0 e

4 x, O4 `! {( e2 D/ e4 D5 x* O9 X& [f.! G7 Z& ^5 C7 I4 K- ~
/ O0 ?6 m: f( g8 A
os_cpu.h:修改
: Y; E  z4 k( g! }2 f  f( h2 j) y& _" }2 f2 [
#define OS_TASK_SW_SYNC()         __isb(0xF): ]8 ?6 V4 _4 Q% b
2 N$ y$ p; n; _
os_cfg.h:可以根据需要进行相应使能
/ d) y4 Q8 {7 `! M8 s* @, @0 ^$ u  Q# ~8 C7 _  m
g.在 上他们27xx_it.c文件中,进行滴答定时器中中断函数的配置,并保证工程中OS_CPU_PendSVHandler 和OS_CPU_SysTickHandler各处名称的一致。
0 e9 {! H7 I/ |/ }2 B: s3 t. I" s: U% s" A( q
  1. void SysTick_Handler(void)
    ! Z0 I  i1 o; q9 c2 {' }
  2. {8 r- |4 b; y2 L
  3.         CPU_SR_ALLOC();
    " N4 _4 a; e0 z( D. O6 r
  4.         CPU_CRITICAL_ENTER();
    0 v# v0 L% _. m( q/ B& v' |
  5.         OSIntNestingCtr++;
    $ ?6 w2 ~  B) @; s( r! ]5 ]
  6.         CPU_CRITICAL_EXIT();
    . j- Y2 T( e# O4 t0 u
  7.         OSTimeTick();
    . p$ @* r4 d1 K
  8.   HAL_IncTick();8 Y; H! F+ x: Q) {9 [  T
  9.   OSIntExit();7 H& K( k6 ]/ U2 x" z! P
  10. }
    2 {5 z, k$ C: |  M& @
  11. 8 \  h& d6 M/ @1 E1 i( ^
复制代码
8 `, v/ x% {, c+ [+ c) C
收藏 评论0 发布时间:2021-12-16 22:00

举报

0个回答

所属标签

相似技术帖

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