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

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

[复制链接]
STMCU小助手 发布时间:2021-12-16 22:00
1.准备好UCOSIII的源码,可从官网下载。% `/ E' ~$ u( h1 Y) h
7 a  T) C6 @  }1 s, U
2.在工程里创建文件夹UCOSIII等文件夹,并添加文件。
4 u: A8 Z/ y) F# w; k5 T- o3 A8 Y0 G7 s: ]7 b9 N3 I# G+ \6 N; p
20180927210216237.png 20180927210239879.png 20180927211528216.png

& c+ F& ~& L- F/ `6 w. S
20180927211543797.png

% y8 Y# F& b- w. |* J" x  h3 P9 V% J9 q4 a) R& d, v
3.在MDK中创建路径并添加文件。. g) t  z: v+ P% I9 E/ I
, ~9 Z% ^" w, e4 Z$ p
2018092721263623.png 20180927212651333.png
! V. z: Y0 d' C5 G: H0 A! w

" n$ ~, R1 Y. t3 B* x2 `% R3 w( J$ c3 F! ~
4.修改相关文件
. \2 U$ J9 a; n, a
5 E6 X/ ~0 A/ q; @& W% Za.5 d1 `; c: A& S2 S+ M7 c

, v) j; ?- R7 S8 |2 \. _bsp.c和bsp.h:这两个为系统外设的初始化文件,其实可以不用。: o+ H3 j* A% }6 `; e, d, j

1 f) p$ i% M( _0 B1 D5 ?b.
* y; v* z/ X: B( |4 U2 {' `& E! G3 z! U; w( a
os_cpu_a.asm汇编文件:
/ U" v1 m+ P- \0 ]5 {4 E% `( Z
  B/ t' G) V* [' {6 l; C$ U# s% z函数类型  PUBLIC改为  EXPORT
( V- f" n; N  y" g
/ I, p1 T2 F$ u% LPUBLIC  OS_CPU_FP_Reg_Push 和 PUBLIC  OS_CPU_FP_Reg_Pop两个函数可以不用,可以注释掉。! ~: u% w3 b2 w5 ?

2 ?/ p& O' B; d$ k( |% U3 J代码导引区中的$ |: e4 p4 k$ n0 Q- D; F: _

7 O; ?/ g. \3 z$ [8 U! gRSEG CODE:CODE:NOROOT(2)  ^: B# i/ U+ b+ x8 v2 p" U" t
   ;THUMB
0 s6 h8 |' v' `+ |9 _
6 u7 V2 A: M5 a* a修改为
6 w0 ]% R9 J, o' u% z) x& K8 a: w! ]$ U: I& D. P" a- @; b
   AREA |.text|, CODE, READONLY, ALIGN=2  c% l$ i  m' Y( H  x6 T! d) f+ R
    THUMB
. i( @; U( }! H$ V8 _    REQUIRE8, D% o* `$ D5 A- p# k# h
    PRESERVE8
" r/ u! j2 s: @6 }6 x5 q" i  w, u1 K$ Z+ T. Z( H; x
这个格式跟下面的汇编语言格式相对应,并且函数名后面的冒号要去掉。. Y- b' H$ L+ h. K3 w

8 Y3 U, M1 x: m6 W, y. _' U, Dc.$ @$ }7 K7 T  U1 D7 e! q

0 l+ k1 G' Y* R# ]: rlib_mem_a.asm汇编文件:5 H! |' t  ?/ e% N8 q( \
. Y. N. g( B1 v' {8 J/ _+ l8 f- L
和上面一样
/ O  D- Z/ r* k* X7 B& P+ \0 y% `3 _" E6 o
d.( [0 W6 V+ n4 M& F& b3 _

* Q3 M0 ]" a1 q8 [- q2 p& Zcpu.h:1 y  m4 p0 ~* ?) r
- J' y; J9 A; S5 B, K2 s" C
注释掉不存在的头文件;修改
' H; C4 k. i9 K4 V$ O5 e" w$ [2 W: R: Y5 e7 }
#define  CPU_INT_DIS()         do { cpu_sr =CPU_SR_Save(); } while (0)
( l6 X+ @  _! @# t/ o) B  c#define  CPU_INT_EN()          do { CPU_SR_Restore(cpu_sr);  } while (0)
2 r- H3 J! C* N0 R9 C6 M  K/ S; B0 ?' N
以及
# O) }1 w2 I7 B
  n7 I/ W' S  G; H#define  CPU_MB()       _dsb(0xF)//__DSB()
* S' o, W- q! I3 E#define  CPU_RMB()      _dsb(0xF)//__DSB()  I2 L0 T6 y- Q* [) W- Q
#define  CPU_WMB()      _dsb(0xF)//__DSB()
4 U8 ]! {  f) _: h, u9 f) |% t) v1 s- n6 a5 B$ @; s/ |! ~
e.
9 D4 b- F5 T+ P9 u" M- N# Y
0 b8 ^+ C8 ~0 t& icpu_cfg.h:: t3 k( y( O9 u2 [/ M
" w) V7 Z. Y5 n: {& j
#if 1                                                        8 C5 i/ j+ t$ h5 t
#define  CPU_CFG_INT_DIS_MEAS_EN                     改为 #if 0
7 m" _- h& h5 i2 d#endif% f, [. A# U" o7 W! Y
# J. P3 E  G$ J2 s  ?; |* q, k  U
f.+ |5 l1 o& Y. I& ~" g! `

/ |) E) D; @) R" J7 Q. r; c8 w1 u* Nos_cpu.h:修改3 w1 V9 o' p0 h  h+ h  Y/ v
$ q: V. A* @' K! i8 W
#define OS_TASK_SW_SYNC()         __isb(0xF)( l2 a) a4 c! H4 q8 w4 s6 m7 h% }  C

0 t* d" z2 ]( p6 y7 ^1 @' [os_cfg.h:可以根据需要进行相应使能
4 x% a5 {  e- R/ V9 x1 {- C( W. d' ^5 L, N" E# m
g.在 上他们27xx_it.c文件中,进行滴答定时器中中断函数的配置,并保证工程中OS_CPU_PendSVHandler 和OS_CPU_SysTickHandler各处名称的一致。! K5 O1 x9 t7 N8 L1 j1 j: n
4 \7 a4 ^: u3 H
  1. void SysTick_Handler(void)
    : x# z8 q8 S* x% a  H1 K4 _- Z6 a
  2. {
    . W8 f: c0 p3 M! i! R
  3.         CPU_SR_ALLOC();- G( W8 g: w* J$ Z) u
  4.         CPU_CRITICAL_ENTER();
    $ R8 a1 _8 @8 @* @
  5.         OSIntNestingCtr++;
    / D- d5 p6 Y. ]2 P) R
  6.         CPU_CRITICAL_EXIT();8 M( }- A, q; g. R2 u
  7.         OSTimeTick();( q$ x5 N' a6 t5 o0 ]1 X) \
  8.   HAL_IncTick();9 x( N9 f; o+ @1 L  x0 H3 f
  9.   OSIntExit();
    % q$ N* G6 K* r
  10. }7 V6 w& }0 Z" T* {, J% e; h( r6 ~
  11. : T- X2 y4 C8 E5 ^5 H; m
复制代码

: n5 ^' c4 S& O4 f8 ]" P
收藏 评论0 发布时间:2021-12-16 22:00

举报

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