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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。$ D9 h- o; {0 c7 t' E
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:
. C# H6 u0 V0 F6 G2 F, [ 4-2.JPG
! w5 f: G0 c/ a0 z" E
3 F/ S: i5 \4 Q  v1 j% ~图10 b& k( B  }2 ?* h
输入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,等待安装好后。
' U" o* u1 z9 G8 {" T
3 K4 u5 n" H% t9 d1 M6 y% D$ s 安装好后,显示绿色。如图2所示:0 d4 }+ g. }4 p3 S  }; |9 F4 Z( Z
4-1.JPG - n" O  t. L. l6 Y. I& [" u" j& \

6 C. X  B! }0 K5 G, O图21 G  r( X, B$ Z5 @# `: e, f8 P
然后回到主界面,选择芯片,双击进入工程参数设置。
; J; _" B" h3 M' K0 Z" y
0 N( g. s: I2 K9 y5 y& Z点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:
) |' G0 R# v; x/ u: a8 a0 ^ 4-3.JPG
: p1 _/ f0 g0 H9 D  Z0 O; g
; L! T& K7 \2 }! e4 r/ J% q; i图3% @9 [$ b' i5 q/ S+ w/ ^; Z7 ~
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:) N; ~3 w4 W  q: D! a
4-4.JPG
, P2 x$ i# x+ F1 K' H  i' @( @, v3 f
图4
: a0 n' O; S6 P: t) F- R 配置PA5作为输出测试引脚。配置时钟等,无需多言。; K! c$ R$ ~5 j7 A$ F3 t) U& _8 o

) f' [8 m! z# Q# ]需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
. L' D+ m! J/ G9 ~) E& Z 4-5.JPG # w3 Z* J/ q# L3 r* I1 G& C# H- M
. P2 G! T, J# _
图5
: v/ B$ C- @+ G, P( c因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
/ u1 x, y7 @; E. S1 _, U4 e1 Q 4-6.JPG
! x: R- \; p8 m! Z7 l) c
/ S. W$ e  I* X( ^图6
- R+ u' I+ M# s) i" o- b然后配置Project Manager,Toolchain/IDE使用MDK-ARM.
4 `) S  z' @( g: o
3 b4 z$ [3 j4 f; QGenerate code.' C4 u2 h/ f6 r0 ^

, \$ l6 f6 Q, M. e在生成的main函数中添加#include "rtthread.h",编译。2 I8 J% U$ c$ R- A
% \( I! J% E* r
会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示* L7 o5 M- [- e$ s1 |  q
4-7.JPG
8 t) G" ^* B) H
2 Z: `1 X4 p- R; B# Q图7
* D( N4 w# B& f4 a7 E按照参数进行配置即可。重新Generate code.- y" r3 L; a* l8 x' B
& D2 V/ G. z8 d, x/ x
编译,正常
) x3 i9 ~9 j$ z2 R! J+ d; J  A! f4 u4 G+ h& h2 h, ~
在main.c文件中添加一个线程,如下所示:, u# Y3 _$ d# `# Q. q
  1. tatic struct rt_thread thread;
    / ^4 c, A: @4 ~! C; D
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
    4 q8 F$ U' P  D: w
  3. void thread_entry(void *parameter)# ~0 ^. O2 G+ u6 S6 X3 w/ u+ q
  4. {& `/ V- p% [1 I: {/ B
  5.     while (1)5 n$ a6 e8 q- [; ]& d9 U8 I
  6.     {
      O7 w! K: _# j- k; {, F7 o
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    : ], h4 X7 N/ k! C! E( x: g7 z
  8.         
    / v$ |1 t4 @) H+ e# W- T+ e- T$ F9 X
  9.          rt_thread_mdelay(1000); 6 C3 P$ C6 _( o% M* `
  10.     }
    ! G2 k/ c9 s  t7 F7 }2 h$ i
  11. }
复制代码

, x& c( y! s/ x/ s) H8 K+ Z" M; I2 G% f
main函数中启动线程,并开启调度函数,如下:9 @4 R! \  M7 s& n" K# }
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);' t+ S' z% u( R
  2.         rt_thread_startup(&thread);
    / i+ P) z* I2 J3 D+ b, q
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:
, P7 @+ o2 ^* A0 ?+ V( n0 B 4-8.gif
& G+ }' C9 g; T5 x$ q. P) }3 ?4 B
移植没啥问题了,就可以多任务模块添加了。, b( f0 h* W9 K% |& l9 M
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
5 [$ a* S3 c2 y# ], x* f, R

所属标签

相似分享

官网相关资源

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