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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。4 S* D0 G. q- ?1 g+ H
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:. d5 y7 w9 `& M0 J& v; k* x' J
4-2.JPG
% D; Z: W* m# T. _) o) Z( P% d0 I: a0 [% q; \& b0 C
图1, u+ `3 R& p" r: }3 W5 o
输入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,等待安装好后。% ]. h. U8 a8 ^, o
/ @+ Z! D- }" z' O6 E& H/ o
安装好后,显示绿色。如图2所示:
8 _) N) U1 y5 H& c( P6 u 4-1.JPG
' [9 x* P1 ^% g( c% ~+ I9 I! X& ]( X& {0 [* @* n) ^  r
图2
' R% r/ t! i. x+ T% R' L- e然后回到主界面,选择芯片,双击进入工程参数设置。
1 j3 p) V/ \) W$ P$ o1 V5 E4 j7 S. g: r) c" {
点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:1 E. e( _, a5 K6 R! G
4-3.JPG 4 o- R6 E# y9 j
/ s' i' x- u' C
图38 p! e* }- Q8 y& g. {+ I
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:
- b. c5 L, {7 T* V2 q4 r 4-4.JPG
% ~& J: }9 D% n
0 k: h% F: j4 @7 K图4
; H* o. y* n+ l6 Z% y4 n. Z0 p 配置PA5作为输出测试引脚。配置时钟等,无需多言。
$ T6 i2 `# O" L/ W9 q8 w
# D" I( ]  o. F+ _9 r3 t* q需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
7 p! Z. _; |; x4 l: z8 U1 @( g 4-5.JPG
- A* V. y  U7 q6 q$ d) G- R, O& K3 u2 r
图5
5 C! i9 q# U2 K* b7 d( D/ X) Q因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
: v- @, T( n9 C3 V3 H- x* d! X 4-6.JPG
3 u8 m: b9 c; |0 z& n8 V" [% l
- ^+ M; i# Y, }' D% D  H$ f图65 X# t+ O, I4 u9 u! k
然后配置Project Manager,Toolchain/IDE使用MDK-ARM., m2 H6 g& f! a& q" E. U3 N9 i

2 [; ]9 h1 @8 I; ~Generate code.
- j/ D; C$ }) f6 Y+ {6 M3 o. p! W4 B7 x  O5 s$ B# S* s) X7 S
在生成的main函数中添加#include "rtthread.h",编译。4 r& _1 }5 R  w# T2 ]2 Z! F, B+ H  @
& Y; c9 Z0 q* }6 L
会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示: m, X1 y/ ?* T7 u" {" ?3 K, r
4-7.JPG
" r  D  E0 y, ^/ i4 h2 K3 ~3 `" Z* O  J  k) H" N2 P$ K
图7% T% G: t. s  h# l& y
按照参数进行配置即可。重新Generate code.
, T, [5 M) e: T! E0 ]+ s' N* f: L
5 n& G/ N# c  d. h3 t) H编译,正常
7 W+ x$ R/ {& a' V) ^
' T1 g/ e- t. Z4 C" n在main.c文件中添加一个线程,如下所示:
# v5 x& u9 `( {- K
  1. tatic struct rt_thread thread;$ t7 M2 s5 ~' A) I
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
    5 n6 v8 a& G. v2 C" J
  3. void thread_entry(void *parameter)# n" k; ]  r( h3 ^- e
  4. {  b4 e+ i- D" E2 i
  5.     while (1)
      _8 F* a- \4 b6 I
  6.     {
    + U, E2 t) Z6 S
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    6 V- i7 K6 |+ z% M8 L
  8.         
    6 }, H- ]# B$ [, _
  9.          rt_thread_mdelay(1000); + e1 ?1 O5 s( q' {# \3 y
  10.     }! V; H" R1 N2 ]: ]& I# I
  11. }
复制代码

" q# Q8 l1 p3 q- B' x  ^! Z! X1 l8 X+ c* {% y4 ^
main函数中启动线程,并开启调度函数,如下:
5 U5 [! e5 _& R' c. T7 |
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);3 o+ ]6 e( C8 ~5 S2 b& o. T" s
  2.         rt_thread_startup(&thread);
    5 R6 z* y% }3 q* T/ C
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:5 N4 c5 D) B& m4 d- `) [0 q
4-8.gif 4 D" `4 `, v2 g8 A$ x

! r' @9 r: W2 _/ |移植没啥问题了,就可以多任务模块添加了。
6 t) u% S  s* v, i4 ^5 Y
赞 收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看/ P7 h4 N* R5 R" P! {

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版