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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。0 Q2 W, [- i; E4 E& m  s# y
首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:
5 N( M+ }% M5 e 4-2.JPG
' Y6 F9 D" `1 o! y# C- ]! L  _8 M& y9 a" \# g
图11 M0 K: \& J/ A& u9 s" o6 ^0 l
输入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,等待安装好后。
6 }5 ?1 x- Y& S! T
+ |0 q) }! f* k! ^1 Z: E: ^, k: y$ d 安装好后,显示绿色。如图2所示:
! p+ B5 }- t  q1 i" d 4-1.JPG 9 y/ a7 V; q+ A' Z

( ~8 W- ^$ E* X4 w5 x图20 J! W6 g- A( d6 ]* t4 p5 j
然后回到主界面,选择芯片,双击进入工程参数设置。; w) {9 q6 ^' [; s1 U* }0 M7 C6 U
& G0 Z8 f! L  H' V  _
点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:
8 w% F& }- E. }' f) b4 w 4-3.JPG 1 H& L/ d. d/ s" \2 L9 C4 l
4 d6 S+ y! A, F7 ^% E
图38 ]" x& w- K/ R3 S( E9 T; v
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:, B2 q& a* t2 w6 w1 J6 x' R$ D) b/ [& `
4-4.JPG
8 W3 W! B( G! W4 l* s
# h- x  ?7 Q6 l* G! h图4
2 U8 v- _. c/ [8 r 配置PA5作为输出测试引脚。配置时钟等,无需多言。
+ h/ K6 @/ N  H2 Q
" f9 `% f0 ?$ N7 Y% L5 E需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
* F8 H& M7 D' N7 K1 E2 S7 F 4-5.JPG ) S" q7 p; a( ~2 l- N
. d2 x; ~0 O% \$ X, |- p/ G0 f7 y
图5
5 Z) u% M$ ]4 o/ B: P7 Y# m3 Z因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:4 e' k$ E8 [: J( b& _
4-6.JPG
) e& b$ I1 Y0 [6 i7 Q; V" c4 v8 I" x3 l' ?( @% x3 a
图6
6 s( U' A6 d# G" u6 g然后配置Project Manager,Toolchain/IDE使用MDK-ARM., z* u+ z# b. n2 R; |9 f' ?' Q' [9 U( A

. ?( u- a8 H3 @+ f  h9 f3 V# {' ~Generate code.1 X$ N: }" j9 y' _) E( M
8 T- F' A  |. n! f+ ?- Z
在生成的main函数中添加#include "rtthread.h",编译。
% |1 K! J$ g/ N+ }9 b, r, b6 w* t9 l. k1 k( C1 C* v1 D4 A( h
会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示
7 `% O' J9 w# d0 g8 D 4-7.JPG ( o% g/ w0 x8 x0 V+ C0 A
; l2 H& A. t* `( v2 b
图7
' _6 ?% e2 c0 a' K# M& B$ B8 Y按照参数进行配置即可。重新Generate code.
; U: x* @" E" Q/ f$ L7 K3 x$ [6 ^% n; h; w# |
编译,正常
' Z# D' w6 z, g% z! m2 P5 r
: T( ~' C/ K8 @在main.c文件中添加一个线程,如下所示:( S5 E0 H) {  J# L2 J3 j
  1. tatic struct rt_thread thread;
    ) L+ }" w/ S+ z9 I; T
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
    5 z; s5 K! K1 K# u4 |" y( @
  3. void thread_entry(void *parameter)
      l3 m8 v- {+ K( y1 N0 G
  4. {
    2 ?, S" |) Y; i. E: }
  5.     while (1)
    " k" \9 H' L9 A# F% J! U
  6.     {+ A% w) Q0 E" o3 I4 p/ I9 G& G
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    ; h  f2 g7 Q* g( L: _& U( G
  8.         . ]0 y' U' \' P
  9.          rt_thread_mdelay(1000); ! d2 S4 g: Q2 q3 f" y" t
  10.     }
    ( ~' E2 O/ }" |6 W; S7 P6 b+ y
  11. }
复制代码
6 N# @1 T" p  E& {2 E. k- Y$ B; ]- N
) U' K; R2 u7 q7 h; G
main函数中启动线程,并开启调度函数,如下:
/ ~. M- l' |* G/ \1 g
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    , i7 o/ O0 Q/ F5 u) N; U
  2.         rt_thread_startup(&thread);
    , M% t$ Z, M! D8 J
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:
: o; g- t! g8 E 4-8.gif 1 t9 F7 c3 V9 a, P: @1 c; z
, V7 T' \9 e; m3 Z/ n4 {
移植没啥问题了,就可以多任务模块添加了。
: q# L8 V% _" v9 T8 P
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
3 S: z! h% u, N" d- g

所属标签

相似技术帖

官网相关资源

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