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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。
/ g! Y$ V6 c8 r首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:; V- N. u6 I+ w2 A: O
4-2.JPG
8 D. p; y; w* w. w% K4 F7 j! y4 q+ a& p- _) W
图1
+ D) @6 D6 i( Y8 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,等待安装好后。
+ G* }0 }3 l2 {- m4 x; O: k3 T* Z2 B* t) r5 Q+ X. V! I9 {* Y7 ]: w2 h) q! a
安装好后,显示绿色。如图2所示:) [  [9 W# n$ W# e
4-1.JPG
# M& d) D7 @* X! D: X
* |, \) b# n" q  A2 ?+ k  Y! H! T( B图2
9 C/ d$ F3 j% ]9 a" q+ p( d% D然后回到主界面,选择芯片,双击进入工程参数设置。
4 T- l/ P. X/ c2 N5 _- [6 L, Q% w5 k1 v* x- w0 Y  G$ K* e" b* Q) {
点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:2 V- X8 U. x- D6 H* j5 o' L& v4 Q
4-3.JPG 0 H0 r# w) z  g7 i' V
3 w2 V* e1 Q. p. ~
图3
% v8 `( q0 l( c" s* u/ h( D8 r1 y回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:7 K# L1 P) }- o- w) n
4-4.JPG
; F) c3 i# A# ^" i8 L( P# c: ^" {" B+ m4 ~/ [  c( r" c! v. {  }; E, F
图4
: n; g; B  M( Y$ d, U* B& Q" k 配置PA5作为输出测试引脚。配置时钟等,无需多言。# @, z0 m/ \- j# q3 V/ b1 Q* {
# {9 i% ~3 s4 N7 c4 p  @: N
需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
& a3 |3 G9 d3 D2 Q  j 4-5.JPG + _7 q7 P# R& a  n; c( b

' a' }  Y- b% T, w图5# ~! U, |; ~9 F4 X! o
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
0 C+ W8 v( B# B' u 4-6.JPG
2 C. [% F4 P6 Z
) a0 N) ~1 t: z, e6 J1 w# M图6
. b0 P  [5 N" J然后配置Project Manager,Toolchain/IDE使用MDK-ARM.# I8 e( z+ l) }. P3 E- a# u

# Q9 ~$ i; E+ B. dGenerate code.
% d& V$ y( j3 O8 a! C" _+ `7 O+ K1 V. H1 v+ G0 i
在生成的main函数中添加#include "rtthread.h",编译。
' S5 D) Y3 W( ?- Y+ m0 ^! g& S. G/ [8 J
会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示2 `7 ]  [& A) b/ `
4-7.JPG 4 Y% R& `( ]" E; \& M

9 ?: j6 i7 K7 m  ?& t1 T图7& p- |. d0 y0 R- B8 O3 R
按照参数进行配置即可。重新Generate code.9 A/ R1 n" N* U1 X5 q$ j; j& E+ I; m
0 t* ^4 }: I) M( f: `0 C
编译,正常
3 o; d& M# A4 R1 P0 W$ C" M( \- h6 y" L4 X/ m& W4 k
在main.c文件中添加一个线程,如下所示:. P3 x+ X% j9 u2 P# z3 R+ S( Y
  1. tatic struct rt_thread thread;5 i6 W5 a: W! U3 c8 E
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];  z! s- t0 \; {8 Z, h: G# N
  3. void thread_entry(void *parameter)5 d! `4 v+ f2 M6 N/ K, q
  4. {
    5 V) ]0 v% w/ |& a0 o: C0 v; w
  5.     while (1)# w  n, c+ t! u) H; s! D
  6.     {
    6 W. ], D( Y4 j$ O
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    ( H( B! F3 a7 F' F, e$ T
  8.         
    ' S# C4 \0 X! d1 l) P- N, t
  9.          rt_thread_mdelay(1000);
      K. |/ n+ P. B1 d" U! s
  10.     }
    6 B. a( e) V# G* p( c  u
  11. }
复制代码

! T) @& c, F- O  n& z! \- Q* G0 z: w4 i6 F+ |& {/ `
main函数中启动线程,并开启调度函数,如下:
. ]' A3 }' K$ Y4 Q5 E8 W, E3 e7 D8 ^
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    % c+ I* B& V, E; f+ U
  2.         rt_thread_startup(&thread);
    2 H; V' D7 x$ Z+ a
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:
8 z2 A# g2 A- o( }" f+ ^& s: o 4-8.gif 3 H8 B! T; f7 X& |
: Q, X& P# M1 F
移植没啥问题了,就可以多任务模块添加了。# T3 y& Z  K9 [( M6 p# V
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
1 K  F) t$ S# Q/ R

所属标签

相似技术帖

官网相关资源

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