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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。. n$ U% S, q. E0 |) z( M$ G5 R
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:  c- A( j: f( Z9 k, O* O
4-2.JPG
# I: c9 g- S' X; G, U% B$ a0 g4 y! Q) p1 {+ F/ t" |
图1
  T, H3 ?, G8 n. r8 ^  y! ?: i; [/ W 输入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,等待安装好后。' e* P% M- {3 c/ T

1 u/ R) S! t& E# X5 F 安装好后,显示绿色。如图2所示:6 A- {' `: B! O
4-1.JPG 3 c! H! h( C  J$ R3 t8 G6 G
% g3 N; n' N+ z& d& w( S
图2
2 h  b# ?! d1 K7 c# f然后回到主界面,选择芯片,双击进入工程参数设置。
9 ?9 e$ n) k3 `
/ X1 H6 \/ H* T2 ^) E点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:+ |/ ?: E1 |5 i: l& S) k
4-3.JPG + u2 ]" W: c2 N+ o7 A

; f- ^" C, I- n! C; e, o8 O2 {图3& H! o) m# y. n2 U7 y: `! \, v
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:- U. f) V# @0 p% a  e/ G' V
4-4.JPG
- a% p. l" G+ p) ~" d6 A% P  y, v1 o% X
0 U6 s! U* p1 A! N. j图4
$ J1 O& v" d$ ]# `  f# \ 配置PA5作为输出测试引脚。配置时钟等,无需多言。: c- }4 m3 g% F. |8 y0 G0 \
* W6 X  w( d; ?# I
需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
; D: `, ], M$ X9 c 4-5.JPG
, _2 M5 \* }2 c0 @2 |  T- I% I; [
; Q5 G9 J9 h" U图5: W) Z+ G5 o1 k( \8 r8 s
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:0 Q. ?# m8 f3 Z- j8 R) ~
4-6.JPG
# g" E: k3 \8 T% Q, s" Q7 Y) Z
0 V6 c' }  H& k: _, |% g- C; }, M图6- u) }4 G# L) Z7 F( l
然后配置Project Manager,Toolchain/IDE使用MDK-ARM.
) R. W* d. F; a" i) ~' Y( r% u$ L( N) n1 [
Generate code.8 T1 R# U) N& a% a* C, f7 f; i  ~

) a4 Y) Y; G3 r% X& }在生成的main函数中添加#include "rtthread.h",编译。
1 P+ X- g7 {- Q: m' k2 C2 e
" B. P8 Y  g9 P& S会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示
: f) M, h- c( M* B6 n 4-7.JPG
! Q$ Z3 q5 E* @  M( Y$ @' J: J! J) W( b# w7 ^8 T' |+ j
图7
2 ~$ F. z% b- v& T* |. H按照参数进行配置即可。重新Generate code.
% X4 r3 T& G/ w# i  a- M, d3 b
3 w# `: ~% H, t, m; Y  @( X编译,正常3 X" }$ ?/ |1 d! h8 N, f) b' N
* u5 [: I! t+ M: s/ }8 _# X
在main.c文件中添加一个线程,如下所示:0 C4 a6 E4 \  h( ~3 c
  1. tatic struct rt_thread thread;
    + I. }- ^0 B4 w! x0 D) L
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];( j/ x2 V  S, ^! {
  3. void thread_entry(void *parameter)* O4 ^! O9 {8 s& q' K$ V
  4. {, c" y% `( Y& b& @0 V- S4 [
  5.     while (1)' N% v' F. a* }% F. g3 O8 F. n4 a
  6.     {5 u( a4 k! x5 R3 {
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    ! G7 _8 _9 f. |) \
  8.         
    ) a5 [  z% ?& u$ E& @$ ^' y
  9.          rt_thread_mdelay(1000);
    , z( P3 t& k9 G3 y! Y
  10.     }" }- F* e9 P" z: w, w5 ]: w
  11. }
复制代码

( V: L* q% n* ~$ _7 A7 _3 ^  C4 r# \3 {7 d& \$ R
main函数中启动线程,并开启调度函数,如下:2 v5 p" c" ?1 m
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    0 z7 |& K5 e0 ~
  2.         rt_thread_startup(&thread);
    9 v5 u" w8 M4 ^5 f  ]
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:* ?' |6 v+ B& Y+ m
4-8.gif * T5 F- u+ i" c+ g, d
6 c" q2 v# o" [: l
移植没啥问题了,就可以多任务模块添加了。/ g8 ]( x  z" y7 }" k
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
0 I* o, [3 h% B* I, Q# O) N* d

所属标签

相似分享

官网相关资源

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