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

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

[复制链接]
STMCU小助手 发布时间:2021-12-16 22:00
1.准备好UCOSIII的源码,可从官网下载。% r0 {$ z( R7 b3 P- D. H
* J$ j7 h8 L: ]  V/ z# y
2.在工程里创建文件夹UCOSIII等文件夹,并添加文件。
( g5 x* L" Y( C: p) X3 E
# `5 g9 T# A5 ]. P% e7 ~
20180927210216237.png 20180927210239879.png 20180927211528216.png

6 n- J6 L, i6 o: f9 k) c$ a2 F0 S
20180927211543797.png

6 F' U: P# G/ |  H0 |+ Z) _& E# U6 g( ^' V+ }* T/ v
3.在MDK中创建路径并添加文件。
' N: g, Z4 }2 ?3 z1 ]( C% b9 G# [, }, R3 G1 o& g9 o/ C
2018092721263623.png 20180927212651333.png
* F5 h4 K; A: |9 d

3 _3 \, f4 F; b1 X" N9 C& I5 a6 K* M! Q- F% P/ z
4.修改相关文件6 F, E; C$ T2 A/ H! s* @7 z
) Q/ R6 q& H) a# K$ l3 f
a.
6 X+ ^) k- h# E, U  R) d# S. A! E
9 _5 m7 o5 K7 R: g$ j( obsp.c和bsp.h:这两个为系统外设的初始化文件,其实可以不用。# F7 H# C! n  |7 j/ `2 I: H
" E% R; u( b$ v4 N- u
b.) D3 R# D9 G' w
1 M3 b2 D* }0 A, C4 N! V
os_cpu_a.asm汇编文件:3 c+ v, x1 |) J0 B( J
1 q; Q) l. ?$ e6 B1 Z" p
函数类型  PUBLIC改为  EXPORT
5 V! S: s, Z2 m& F
" l8 |# s5 L0 P$ v$ uPUBLIC  OS_CPU_FP_Reg_Push 和 PUBLIC  OS_CPU_FP_Reg_Pop两个函数可以不用,可以注释掉。
0 v! _1 U& U, K
# v- t% O3 q9 Z# I代码导引区中的/ K$ |) G- q9 \) C1 L  v# m6 s
( Q. M* o, N# y) i6 ]9 T- f2 g
RSEG CODE:CODE:NOROOT(2)
8 ], C) l4 [! x- i   ;THUMB
% W6 E3 N1 {3 Z' ^/ p& `7 n% t; M/ e/ K. r; u
修改为
, i* u4 o9 O9 X9 T9 p5 P8 t" d8 N, f6 e
   AREA |.text|, CODE, READONLY, ALIGN=21 i- p( {# e5 m, s3 G
    THUMB' C4 H1 j. {' D6 o
    REQUIRE8
$ Z" w2 K6 m$ V# k: c7 d    PRESERVE8
8 U  q7 W9 F# A5 i; D5 m
* g! Y& Z3 \# H7 k& ]这个格式跟下面的汇编语言格式相对应,并且函数名后面的冒号要去掉。
; O, }4 @) Q) G6 M+ i# E; p
: \7 ]  A! `) y) Wc.
0 `- Z0 g8 e& |4 o
$ \6 {2 E5 s- J, O5 N0 Ylib_mem_a.asm汇编文件:
2 B- b8 T: R3 L/ @% Q( p! F, e
! t- I9 B& @7 l- j' a1 V和上面一样
4 |8 n8 `) m! g8 o. B# Q+ n: V/ v
1 n" w( U  A, S3 d% L1 B6 m* Cd.1 P4 X, z8 n5 l! J+ \1 }8 X* j% O3 I

' O# K4 [  O  t1 s( Jcpu.h:
" E" @* N+ u1 M5 A; r7 l* u, n; _. d% ^7 u; g
注释掉不存在的头文件;修改. P( Z+ g7 r+ s: W- C7 p% }

4 Y2 S0 P& C8 U4 Q; t, e6 h1 {  ~#define  CPU_INT_DIS()         do { cpu_sr =CPU_SR_Save(); } while (0): w$ n  ~$ F! {  v! D- U$ ~
#define  CPU_INT_EN()          do { CPU_SR_Restore(cpu_sr);  } while (0) . J# C) h" T* x; R: U- m+ F- Q' }
) M4 [( X' a' [
以及. H, C. f. @2 j" O% ?
+ I- q# H& k. m) a  T$ I
#define  CPU_MB()       _dsb(0xF)//__DSB()
- b8 p9 n0 v' ?+ b# A; s#define  CPU_RMB()      _dsb(0xF)//__DSB()6 _8 `6 C7 a, E9 Q; j" K7 c2 U
#define  CPU_WMB()      _dsb(0xF)//__DSB()
7 z2 H2 H7 Z' e0 H' d) X( R& m: K4 j' b9 |) ?5 y6 w
e.7 [8 M. z& O% i$ _) `9 R
( n' I* h. D6 ?( F
cpu_cfg.h:
8 z; h% \& [/ s, V# F& m" S4 Y! a+ i! E  a/ c0 ^
#if 1                                                        0 J6 v) ]& k6 U1 g# f
#define  CPU_CFG_INT_DIS_MEAS_EN                     改为 #if 0
7 R( J5 s3 q# w& }; m$ R#endif9 N) }' E0 E. ~6 V: Q2 e0 p
1 {  P* S1 B0 l' c0 V* T7 S- J
f.& ^  h- @" q" M% y/ W

  o! @. S6 Z0 W, b7 |& Nos_cpu.h:修改
: v0 x+ s; R) [+ j6 A, q  p6 ], i" y+ u6 D
#define OS_TASK_SW_SYNC()         __isb(0xF)! P3 r7 H: s+ K" V1 w: a

  @( B3 r2 F# F/ Sos_cfg.h:可以根据需要进行相应使能4 m( l2 r- {$ ^$ J' g$ H! J9 K

6 v, l( e# ^$ d6 ~g.在 上他们27xx_it.c文件中,进行滴答定时器中中断函数的配置,并保证工程中OS_CPU_PendSVHandler 和OS_CPU_SysTickHandler各处名称的一致。
) v1 E3 A1 M( f9 Q) B* @+ T7 J# B
2 q3 Z2 x/ o/ ]: p" @  ~( s& x
  1. void SysTick_Handler(void)+ A0 A5 l2 {  q" W' t# _
  2. {
    5 |1 s2 f' q) \4 E! c
  3.         CPU_SR_ALLOC();. Z. o  x. X( N/ t+ d; ?8 G' E
  4.         CPU_CRITICAL_ENTER();
    5 Z5 ^( D6 O8 {5 z( Y& j( i: o
  5.         OSIntNestingCtr++;2 S1 U+ ]5 Q# K. m9 b- Q
  6.         CPU_CRITICAL_EXIT();
    + [+ [* [! D; m1 N: Z
  7.         OSTimeTick();4 E0 t+ C* i2 Z/ H" W
  8.   HAL_IncTick();3 n" _+ [3 b# x" h7 H7 t! A' ?
  9.   OSIntExit();+ Q9 e4 [$ k. y/ d5 X
  10. }
    * y8 O5 S/ Y; v! E! {, v5 ?
  11. ! F* J; ?0 t$ o! R2 u
复制代码
& s0 o; h* i6 y6 g& L! _0 |9 `7 e
收藏 评论0 发布时间:2021-12-16 22:00

举报

0个回答

所属标签

相似技术帖

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