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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。
# D6 ^) Z% N% v+ q+ o首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:
: o0 f4 m5 R% ?2 K6 _ 4-2.JPG 3 ?8 G/ w! q6 a* _# Z7 ?4 R
* }1 P2 k: d1 W2 x8 i+ Y$ k
图1& U  G. e3 \) ~& ^$ n
输入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,等待安装好后。
! p% r8 F$ q! Q  p% `. y, F+ n. N' t- H& K4 h0 b$ S. y
安装好后,显示绿色。如图2所示:
" V' L( x( c$ {& c6 ~  [ 4-1.JPG
( f+ f7 F2 x& ^, w  L6 I3 K- S2 o0 |2 v- h+ z. {( @: P: s; a" _
图2
! N% v0 E. L2 P  Q' h9 _; \$ Z然后回到主界面,选择芯片,双击进入工程参数设置。4 v0 ^6 [* a  }: H' C, p% u

4 o+ u2 X! e0 N( |4 }. r点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:
) c! l  S& v3 J 4-3.JPG
- R  W/ {" ^: {' X$ d- |) g5 Z8 E( |6 F# J) }. _
图34 K5 K! S, |7 g
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:% o3 Q' I1 n9 U: _  h$ P2 r/ l
4-4.JPG . \- ^4 a/ p, |& z  S/ l8 Q9 k
' R5 Q- A( Q4 r' C& z) v4 U1 T4 g
图4/ d# v/ y2 j0 ]# K2 D5 j/ x' p% k; D
配置PA5作为输出测试引脚。配置时钟等,无需多言。  O1 J9 d% G9 y/ K
# R' B; w# A* T3 e
需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:
1 Z( y5 q8 m7 K- e3 [ 4-5.JPG
# T% W/ F' ]2 t& F; Q
: ]1 x# [; y' G$ J& N- s8 a% {图58 S1 e- O0 ?% g
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
0 g4 l" V9 F" M$ K( r/ y) D 4-6.JPG
8 i+ e, m( {: l8 Q4 w2 g* L- l5 e  T$ \! R# D: k' {1 W3 `; Y
图6
* V, D0 ], H. P  h. H) h8 \! D( Z. b( i然后配置Project Manager,Toolchain/IDE使用MDK-ARM.
0 B; s( l# N3 K; ^8 `3 i
1 J- C3 C4 k# a  i* e( @Generate code.$ K" h2 r8 |: Q
4 y0 |; M# V  W
在生成的main函数中添加#include "rtthread.h",编译。
! R+ _: M# f" t- f, s
  z6 |" I, [5 O7 j会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示
# W/ o1 `8 S, Z1 n$ m  Q1 j5 \' O0 j 4-7.JPG
! w0 w( `* R9 W' ?) O% J4 ]
+ S5 z. Y5 f; O5 q! X& b5 H$ y图7
* z) W5 X! h' g+ H. v6 C按照参数进行配置即可。重新Generate code.
1 @! i( B9 O5 d. _2 g' j/ m4 b
9 F8 b! j% _  R- K编译,正常
1 a0 B; S# t7 y1 d
5 B  D, ?2 c& ~, A2 J% M' a9 y0 `) V在main.c文件中添加一个线程,如下所示:
# Q$ O" g2 c, [+ M) D8 ^% {" Q
  1. tatic struct rt_thread thread;
    7 L: |. {$ Y; y$ |
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];* Z! x8 d6 x6 u# ?
  3. void thread_entry(void *parameter)
    % ~  U7 Z- W' k1 V1 B& r
  4. {
    / a2 |+ S7 ?) S! E' F
  5.     while (1)3 t/ `' P: n( ]5 g/ z
  6.     {
    & t# W% a# g! U. Q% k4 E" M0 z
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);: X1 J9 @7 R; L' s$ I! T4 c
  8.         ( T. T' O* w$ R6 G( i# D
  9.          rt_thread_mdelay(1000); ! e  \5 u8 D" B: l, K( R* @' y
  10.     }
    6 u! X' T' V) E/ a
  11. }
复制代码

% T/ J# y# G7 P! B0 a
% Q+ C- ?6 H& J9 _0 Z* h5 Fmain函数中启动线程,并开启调度函数,如下:
2 S# F" a( V) S& @  {9 B+ q; Y' N
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    $ z9 f" W# e9 W. u! P7 [
  2.         rt_thread_startup(&thread);$ D! r, T! S2 h; h
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:( R! f, p  D2 [9 V1 \
4-8.gif
# g9 n& r8 x3 ~, W7 y+ Z6 p# ^) m* I. U! p# H$ K7 c
移植没啥问题了,就可以多任务模块添加了。
% `) n! T! [: ~- \4 V2 n/ z
赞 收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
  p5 l" Q1 |9 e7 ]' l2 u

所属标签

相似技术帖

官网相关资源

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