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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。
3 o, X0 _% q) N) G+ N# S) ^首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:5 j$ \" g4 k$ T7 q, v. D) c6 j" k
4-2.JPG
& `" B. l: ^7 F( l2 U9 \, |9 v! c0 D" O# S3 y: C7 m- M( ^
图1
8 _4 y# ]  A( S! H8 Q 输入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,等待安装好后。4 c5 @& e/ Z$ {9 W4 ]
% Z: Z/ L* s, b  T+ G
安装好后,显示绿色。如图2所示:
1 l( R' T% ~! q 4-1.JPG
+ A0 ~. o! e) {# r, k# D
4 f# i$ d' T" ?( d2 G9 N) c+ {图2- p  Y- y+ a; D8 v' [) Z& e
然后回到主界面,选择芯片,双击进入工程参数设置。5 B- l6 }- U4 F& t/ D" g' b7 F

& c, D8 L& B+ m0 c6 _点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:
3 x! v2 ^. p  {, ?! | 4-3.JPG
; c9 i- G: w: R4 _: ~( Z  K, H8 s# ~! Z
图3& `9 T4 V1 ^% j8 J* O: P7 P9 T
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:
: n/ q' r& e8 \" P/ K6 Q  x 4-4.JPG
' B. C, H8 R, Q$ b& j4 B% m  Q7 o) ?5 n. G% l; C  P% @; E/ V  E
图4/ G* U& F, t: u! S# N9 h
配置PA5作为输出测试引脚。配置时钟等,无需多言。
* }. o" c' S- [/ a3 ~' E+ S" p+ O) P( x5 X/ `- D
需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:+ d2 S% L8 C& l; k: B5 H
4-5.JPG 6 y+ d/ u, T, ^3 b$ x$ T

, d# `4 z; Z2 |2 u/ k图5# e. B. |8 Y* y
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:7 b6 s+ ]9 M4 {% S3 Q9 J% R
4-6.JPG
$ }7 P: I& [/ L$ N$ X- C  y' q! W% j) x0 r8 f# R
图6' u3 S& a) I- {; x5 A  Z
然后配置Project Manager,Toolchain/IDE使用MDK-ARM.+ w4 ^6 ]- m/ D3 P0 r

4 G2 ]% l) B5 U" [2 `% S, M! A4 |# tGenerate code.* e2 `9 }, |; x5 B# B# P
- p1 N& [; c  j  ~* f7 v. @6 D
在生成的main函数中添加#include "rtthread.h",编译。" n4 ]( V( w; @: W& z" R0 K
* Q. G9 v! t% w; q2 A
会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示& Q3 {8 s# H2 T. E0 z  O
4-7.JPG
& c9 V% b0 K7 L: E
1 A' w' ~& }: J" `6 g, e5 J' v9 H图7
, \) `4 H% |( ?' [) E' B1 @  p按照参数进行配置即可。重新Generate code.2 h& r7 t$ L) z

) e) b4 o' _1 ?% ~2 `# B# \2 s编译,正常/ Z$ B. W/ K' R: D2 y) d1 {1 {

  E, b  E( s4 T/ _( L5 S在main.c文件中添加一个线程,如下所示:$ X! t5 x  ]- R, H  y/ Z5 A
  1. tatic struct rt_thread thread;
    # [% `5 _2 H: r, b
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
    7 {  ~  l. }( B5 ~) A( L
  3. void thread_entry(void *parameter); R0 p8 j) ^/ R" |+ w+ v
  4. {% C4 Y4 N# X: w! {
  5.     while (1)) o8 n  P, p/ P3 i6 ^0 \! Y0 b" T
  6.     {1 X& o- _2 A# d! i, q- k8 y3 ]
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);6 g5 S& M" v4 J2 F" d& ?
  8.         % t  x. p' `5 l) F0 Z2 `) a
  9.          rt_thread_mdelay(1000); 7 h6 V6 d  q. Y% P5 v
  10.     }# E9 q2 Y/ |2 E/ g2 [
  11. }
复制代码
* B6 B6 n' R! t' F* j0 G! K! w7 ^
9 H0 r8 O' }- V- e( j& g, I
main函数中启动线程,并开启调度函数,如下:
! n1 \6 q# K. B8 o6 V( N/ p
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);  P  ^- l; d, [5 }6 w& J: O1 {
  2.         rt_thread_startup(&thread);0 f9 Y3 S5 t7 c, n, h+ M$ }
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:; ?6 l) @$ b' ]( [- X% {; J4 _
4-8.gif ; v) N$ [: v1 y. R. |* T$ H% o
+ a% l, D9 x9 B) [( m
移植没啥问题了,就可以多任务模块添加了。! h, C0 m; u: R; M2 i$ v
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
4 y/ G; \6 p! M" L
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版