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

【NUCLEO-H533RE评测】4.RTT Nano在Cubemx中的使用

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。: o" j" n% P5 `9 M; o  m
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:9 ]) d1 N+ R: P3 T3 }* q6 Z0 ?
4-2.JPG
, d% \! {& k1 ~" d( `! b3 B7 ]
' m3 a- }2 i* m" q2 e$ S' y图14 w) I/ W4 A$ y4 O& A7 T
输入RTT的网址,https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc,然后点击check,旁边显示绿色,既显示校验通过。点击OK,回到User Defined Packs Manager界面,再次点击OK。这时,CubeMx自动连接服务器,获取包描述文件,选择RT-Thread Software Components,点击install now,等待安装好后。
7 x$ e' f$ Q# X) q- H+ Y( A5 b: s' B' c
: e- X; j; v4 y 安装好后,显示绿色。如图2所示:
- O6 P* t  g+ U( s 4-1.JPG # E+ ?+ s+ N9 ]8 T

; v; A! G: c+ R  u图2
2 O  U; f- a4 \6 \4 A$ F然后回到主界面,选择芯片,双击进入工程参数设置。
3 U4 L. T! T+ y9 o  F( d2 X
$ j0 N# o  F3 m. M% ~0 X点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:+ w$ u$ @3 y9 a6 X
4-3.JPG
3 p: T# V, W% @1 u( v
0 b7 W1 G& r" L$ O4 `6 S0 w图3
" U8 w0 r. v' k  k3 T4 U回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:
& O/ v& h! \( N! c8 {- ] 4-4.JPG : }- n4 Y  z. ]: ]! ~1 a" H
/ x. m) |* X7 w8 h3 J
图4
8 R/ C$ a/ }7 G2 [9 K4 A 配置PA5作为输出测试引脚。配置时钟等,无需多言。
: ]! }% m2 W+ Y% m8 b- \" ^, X
7 a- Y, F7 c" @* S( H$ P2 @0 E/ |需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
; [: B% [3 a5 j9 a. r8 R 4-5.JPG ; U- e& c! \; `* _/ [) Y0 z
4 M8 T' S' }$ h, G7 c
图5  z0 g' R  b( O
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
& ?8 V7 U4 T, q) C! c7 D) { 4-6.JPG % G0 _! w% @. l, b

8 Y. j2 {. U+ f$ h图6- C, ?8 Q5 N$ D, G8 o1 t
然后配置Project Manager,Toolchain/IDE使用MDK-ARM.+ Q% j8 Y9 p  W" i7 A
' U) t! @3 ~# z3 \! E+ U1 |
Generate code.8 F% J% e4 u; N5 Q/ ]
; G6 O6 j" [7 P! j0 M" R+ h
在生成的main函数中添加#include "rtthread.h",编译。% ~3 x. r# Z" O

% J; g6 s+ x% @8 n' a5 c' [$ |会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示9 L# g# q4 r  \2 u0 T3 y4 p) \
4-7.JPG
& S' o, K6 R7 }; f) V$ b4 j/ u6 M. [4 i8 \3 W! A/ k$ F
图78 H) w" X1 o, `4 E8 t
按照参数进行配置即可。重新Generate code.1 m' W( u3 h) L- p$ s# c* K9 f

$ a3 f# f! d$ P; k  Q7 n. ^8 Y  E编译,正常
& b7 P  L4 G5 J& g! n' Z6 ?; A+ p% s4 h- m7 F' w9 C0 z9 ?, w3 w
在main.c文件中添加一个线程,如下所示:# Z, f6 S& j; @# S2 D0 F2 p* G9 T
  1. tatic struct rt_thread thread;1 @' W+ A3 L# g  u* h! N9 g
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];# v% x! `8 x& @5 C1 |
  3. void thread_entry(void *parameter)9 R: {' e4 j# `! G
  4. {
    / v' t& y/ i0 P- Z  H
  5.     while (1)
    : B& m( ?: a& J8 U( q% S8 E$ M4 x
  6.     {, y. a$ ~8 W# t- u# y* a0 q
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    % m: u7 H1 L2 m
  8.         ( U, M+ w; P1 e6 c
  9.          rt_thread_mdelay(1000); $ d* N$ o! l2 S4 f$ b
  10.     }
    % n0 N8 L1 v9 r8 E" [% u" ^
  11. }
复制代码

$ R& b, m9 d  M# {( p6 C) u
& P% D4 g+ l1 {+ zmain函数中启动线程,并开启调度函数,如下:
" r9 B* c& z6 s, j3 J
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    , K( B9 Y7 {1 x/ ~+ m
  2.         rt_thread_startup(&thread);
      V" L6 ^' D6 M! d( y1 @) `: r
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:
: D" Z' g* i/ \' v4 Y" V6 x 4-8.gif 7 G" ~* n' F7 F2 @/ q8 [
- i$ N+ P, u- ~$ r$ u0 |0 ?
移植没啥问题了,就可以多任务模块添加了。9 A, }5 ^* ^2 _
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看" A/ [) u0 V3 v' _* k5 ~+ ?

所属标签

相似分享

官网相关资源

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