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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。; u% T+ j: X/ u
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:
  D, q4 B( R+ I3 v0 e 4-2.JPG
6 u9 }& g1 w( s! l, k) Y6 f) y) A! v) S4 @( v# g  N; o1 q
图1
4 u7 c9 B$ u, W. P6 h* W8 { 输入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,等待安装好后。- p" b% v7 O, s

  K0 f) a5 f) s, A4 q9 T 安装好后,显示绿色。如图2所示:
5 }" v; y' x" L. f. e 4-1.JPG   n  |, A9 v8 Y8 j7 W
- Z$ Y' J+ y' w7 ?1 a+ v2 U
图2
9 |. H/ \6 M! [" }然后回到主界面,选择芯片,双击进入工程参数设置。
5 h- D. ]1 n0 A* Z3 L; C; Q: v& I2 O; o
2 i9 A, l( w8 H1 ?7 w; _/ k  O点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:
% ?7 L5 M$ h! Y2 g& D' | 4-3.JPG
, k  \% B# Q8 O5 i( U
+ w/ z- y- t7 \4 R4 d) n图3
* |  k  T- M8 _9 A0 R8 D回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:# `$ }3 Y5 P& P( ^
4-4.JPG
# S8 s5 A8 O1 W9 z  O3 Y3 i4 e$ x, c  G% W; j0 _
图4' z1 t2 T/ |, S( `3 {
配置PA5作为输出测试引脚。配置时钟等,无需多言。
2 ^* P! e; G: Y& g# f% H) j) ~6 B8 u5 V1 a1 }3 W# F8 d3 M
需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:' m8 t, I2 C; f: _& s% m% [
4-5.JPG 9 x2 [/ v$ \6 g8 K0 R

/ D, W- n& e! W% N图5, ~/ k4 k. y% ~7 u' _
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:. V: B, i9 s  `) c* ~( g$ L
4-6.JPG % F$ ]) _' p. l" m' y5 j" c) l+ B$ X

: r& r! x. J1 ?, |图6
4 t1 b$ ]+ U' w3 |! `. _* h/ U然后配置Project Manager,Toolchain/IDE使用MDK-ARM.0 i7 h) L; `: ]. y, @+ e3 p" I1 K  s

- ]3 S! _$ g" ~' H3 s: p! ]Generate code.
) ]$ B. \& ^- }( q: e  t4 }( G4 u- P5 ~8 y  Q& I$ }
在生成的main函数中添加#include "rtthread.h",编译。$ D5 {8 u/ n! I) ^

' K+ {) G' Z2 E" \  Q8 _会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示
( C7 S3 ~- N6 Q+ X1 i 4-7.JPG : x7 `# Y( j' E( I4 h/ _- U5 M
5 [, g& _; k0 R: Q3 r: D
图7% I% O. q' k! v" c$ M+ k* \
按照参数进行配置即可。重新Generate code.
! j4 i6 a( X+ ~; V* h8 _( a! F3 {' ?, y4 n
编译,正常
+ n$ d( v  I( l
0 r1 D. v& P7 s; B2 G+ N在main.c文件中添加一个线程,如下所示:
0 s5 |$ C! Q; n+ j* K! O9 e
  1. tatic struct rt_thread thread;
    0 r; z/ D* e5 f3 }5 j" i
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];# b. \- e2 N" p2 x; g
  3. void thread_entry(void *parameter)
    ; d, K0 h4 u0 n8 N$ `! R
  4. {: @. L/ }& h$ o% ]! }
  5.     while (1)1 {9 Z& w5 I* C, w, p% S9 y9 p
  6.     {
    8 E  Y* m: J3 D
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    1 k' k$ q* t& x' b& D7 N
  8.         
    ; D) ~2 {+ m( o. X5 X
  9.          rt_thread_mdelay(1000); $ h3 w+ s, Y" l; x  _: I
  10.     }0 g- V- }  U2 f1 g4 D
  11. }
复制代码
% T$ s# [+ I% D+ }# Z

3 v4 {+ ]; _% y. A3 Dmain函数中启动线程,并开启调度函数,如下:
$ d9 o/ G+ P8 @, M& b
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);8 b; c, C8 S5 E2 ~. }- R* H
  2.         rt_thread_startup(&thread);8 j( h$ H" @9 V- v: z2 o5 ?
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:7 e* O! P' G4 e) }8 E/ e5 Y( {; V
4-8.gif
% z, }3 c: ~6 p1 N. G$ p5 E1 u
+ ^- e  M0 z! l1 |# [9 {移植没啥问题了,就可以多任务模块添加了。0 n: K1 v" Y) p4 v9 b
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
9 U1 L$ m; `( c( Z% K

所属标签

相似分享

官网相关资源

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