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

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

[复制链接]
STMCU小助手 发布时间:2021-12-16 22:00
1.准备好UCOSIII的源码,可从官网下载。
# V+ H4 X6 j2 q3 o$ Z" T" D6 }' B4 }8 v1 n! n4 N  G7 j, P3 H/ L
2.在工程里创建文件夹UCOSIII等文件夹,并添加文件。+ `- ^6 _( H) {) }
) C) }# k7 }) }5 p3 ^
20180927210216237.png 20180927210239879.png 20180927211528216.png

& C. [. e' s8 S% x$ K2 H1 F
20180927211543797.png
% P) s  S- y+ n5 g, c% j
$ f& x" f1 @$ U& T' {
3.在MDK中创建路径并添加文件。8 t8 @3 t  D  l( J. Z0 T- r: S' ]  q

" O8 F% `9 S1 O, j' O- g3 e
2018092721263623.png 20180927212651333.png
4 q2 Q) Q/ [! T" s9 d$ t; M$ v9 v

5 Q% R( k2 Z' a2 @2 y$ w! w2 @
) w3 T5 \, N8 |! I2 }* C4 J4.修改相关文件, t' u! [1 ^7 ^) S- P

8 P# r6 C9 T6 Fa.
* W; M7 l' N7 r* b) V
1 z4 l; b: g1 G' ]; Kbsp.c和bsp.h:这两个为系统外设的初始化文件,其实可以不用。
* _/ J7 T! P: M3 E% {+ B' i
( G7 y- z2 M( Wb.
3 p2 E$ C' x0 a1 Z
* S0 |% H3 p7 d% Bos_cpu_a.asm汇编文件:8 Y) n5 c9 G7 l; h/ c1 b0 a2 V

1 z' n9 x0 v& V" ?- y9 a函数类型  PUBLIC改为  EXPORT
" D! g0 s9 `  E1 X. M% N
+ j- S2 K' z: m* |  B. P% `: lPUBLIC  OS_CPU_FP_Reg_Push 和 PUBLIC  OS_CPU_FP_Reg_Pop两个函数可以不用,可以注释掉。4 n: J/ X0 O9 \; Z5 B
8 X' W6 x1 ]6 N1 i! }' h7 D1 g
代码导引区中的
4 L# T+ K3 o4 V& O" u. N/ s
- l" x( g) w. t; s( E6 \1 h! tRSEG CODE:CODE:NOROOT(2)3 h0 e! g/ P- [- F& g. Y
   ;THUMB6 n$ V) x# F( M" X9 F+ f

6 Z; T4 h1 A6 i& t9 b0 b6 f$ T0 R; ?" a) n修改为
% x" ~0 `* `# `  b7 L* x4 N: ]1 I  o9 F- M( z" ^! ^" _  z. x% E
   AREA |.text|, CODE, READONLY, ALIGN=2( c" [. w' N3 y3 Y- q, A
    THUMB, L5 ]( o) s* X. }# C
    REQUIRE8
/ @: c8 c  m$ C8 S    PRESERVE80 u' n8 h$ T% C% G% d. `

8 \+ g7 v: o0 {) b% N$ F2 O这个格式跟下面的汇编语言格式相对应,并且函数名后面的冒号要去掉。
7 a* A+ D- @. A0 R9 Z! D( E8 ]2 k; E7 d# Z8 @0 G" Y
c./ H3 e, J. }# ~2 c
' P% l- ?0 M* p' M- n
lib_mem_a.asm汇编文件:
+ q  m9 ?* s2 ]; d. K3 ~# A( k: c) o  o' D: J
和上面一样5 V* r& h7 [: ~

# W; o% U+ e" k7 u: Gd.
4 l, h: D4 G) J5 {3 r1 [+ K& W( F$ M  T6 O& M, ^
cpu.h:
# n4 x* a- Q" A) z" y7 d' }: p" D+ I
注释掉不存在的头文件;修改
3 @$ T- W' A" v9 h  z7 o+ v2 _  F7 V- j$ Q, V6 f: K  H8 V
#define  CPU_INT_DIS()         do { cpu_sr =CPU_SR_Save(); } while (0)
, Q, ~0 ~3 d7 F/ _; b& V# A#define  CPU_INT_EN()          do { CPU_SR_Restore(cpu_sr);  } while (0) - }6 [5 f) E2 [2 ]7 i$ O, e" m5 K  L8 T
$ U5 g4 _1 q" a+ h5 N0 N# a) p
以及
) ?, h( n0 l( z) ?+ B. c/ ?
; {6 e8 w; K+ g7 A) Z5 f#define  CPU_MB()       _dsb(0xF)//__DSB(), U" S% g0 y. C: b& A
#define  CPU_RMB()      _dsb(0xF)//__DSB(). A5 {6 U$ r3 ~2 _
#define  CPU_WMB()      _dsb(0xF)//__DSB()5 u1 T7 T+ [; `) A1 c$ h
) t6 Z6 H1 Q6 i! f6 M
e.
+ c, h8 G5 X' _! ]' l- }0 j# ?/ Y! A) Z/ j  {. s% l
cpu_cfg.h:9 @3 o* x' _# S9 s

+ e& X) B0 X5 O  `8 v; K: d/ \! L#if 1                                                        
; t. Y' I8 x! q9 T#define  CPU_CFG_INT_DIS_MEAS_EN                     改为 #if 0
" o- y, @; G& W; i% L0 p#endif
' L, c" M6 N* M! U4 l) N$ K; _- F7 U4 k7 Y$ T4 g* E
f.9 ?2 C% x/ }- q( i8 g- l
6 y- J" E6 W5 D: y4 L6 x! C
os_cpu.h:修改
. Z6 L% R0 ]# {! ?( |
, w1 r+ h! `6 A# S2 W' R#define OS_TASK_SW_SYNC()         __isb(0xF)8 f- Q' V( D4 b* i: ^$ F# S
' [7 Z+ f2 P# m4 O3 F5 f6 H) A# v1 r
os_cfg.h:可以根据需要进行相应使能
$ n* ?. l7 Y" b! w5 _" K
5 \7 }; ~( o+ {5 r' A# Lg.在 上他们27xx_it.c文件中,进行滴答定时器中中断函数的配置,并保证工程中OS_CPU_PendSVHandler 和OS_CPU_SysTickHandler各处名称的一致。
: M9 I; q7 t' K: N
9 ]6 Y- \! k3 r6 E
  1. void SysTick_Handler(void)
    + R2 x  _7 o1 }3 v' p7 b
  2. {0 o3 S. H6 x: M' p- j0 v
  3.         CPU_SR_ALLOC();# e, ?) J. ?) ^. u0 Z: o! X* k9 w
  4.         CPU_CRITICAL_ENTER();: z+ P" ?9 m6 [/ q- U% E
  5.         OSIntNestingCtr++;7 V" [/ y) U7 }  F* o
  6.         CPU_CRITICAL_EXIT();1 ?; T. p6 H0 |2 y) G
  7.         OSTimeTick();5 [5 @& Q6 K1 m7 X1 K" l
  8.   HAL_IncTick();9 T: X- e& E, X2 @/ K
  9.   OSIntExit();
    8 e( u# m: m" o3 `
  10. }1 g% {* M/ _& k
  11. - I# |/ _) C0 y# h
复制代码
# R/ O7 [4 ]! B* j6 ~9 |/ ^
收藏 评论0 发布时间:2021-12-16 22:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版