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

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

[复制链接]
jundao721 发布时间:2024-7-17 21:10
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。
+ l; |& A: s: y& `, V首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:5 u7 [/ q! t. u, N& O5 h
4-2.JPG   l# C5 ^4 ?/ A: Y' ~- C1 w
8 G- O6 C1 ^8 z0 u7 |1 N6 X" A
图1; a+ w8 A5 w) [  J8 K
输入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,等待安装好后。
& C  v8 b  w9 Y$ w' D3 A; ]7 o" F; ?5 |/ r* p9 [
安装好后,显示绿色。如图2所示:
- O6 d* d7 w) ^( v 4-1.JPG
9 M* y% i- g. o3 j; J6 B% N2 ?
* r/ v1 T  P9 B$ W- F' G$ q图2
" |. P5 m# O8 Z' W# X: }$ U/ _  B然后回到主界面,选择芯片,双击进入工程参数设置。( q. @9 x. i% I
7 m+ z# t) T3 _, T: e8 Y5 D
点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:. [1 Y6 b# ^0 U! ~
4-3.JPG
: x4 q7 I3 r; `/ S' L' |# j  j4 a1 }  M) _& @$ [9 B0 g% q5 p$ ~
图3# A7 B: Q7 E* W+ _( u
回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示:
2 Y( l6 k( P$ ]5 C1 N/ s5 _1 S$ @3 u 4-4.JPG
1 [0 y( ?; y. ^6 ^0 w0 T, k# z' u: N; p
图43 w6 T5 `( W$ }
配置PA5作为输出测试引脚。配置时钟等,无需多言。
" O6 x8 m  d" j3 J1 V
9 e$ H" P9 t7 ^5 W0 x1 S( n需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示:. V: @- \  I$ [: m3 e9 ^
4-5.JPG
; @  E( B* ^4 Q* {* |* h& h. O3 j0 I1 z
图58 f) N+ f' d, Y' v  |  y$ ~
因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示:
5 w1 a  \3 h7 [; I. z" J& y 4-6.JPG
! \1 _% T+ g/ V' `6 I# ^" G7 S* ?" b$ r  k
图6, T" F$ m* i9 R4 {
然后配置Project Manager,Toolchain/IDE使用MDK-ARM.' v) W4 f& |  L9 e3 S# v$ Z

- h" b, @- P$ t3 A% ]9 qGenerate code.
' r6 p. e$ _6 B# f+ ~8 g  [: `% @- ]  s# A. t5 O* L4 }5 ^. L) n( ~8 l
在生成的main函数中添加#include "rtthread.h",编译。
* i) a  |+ t4 y$ S1 v# F# V
& O5 {; e0 z+ B& r3 i会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示
* `9 H- Y9 W& e* \ 4-7.JPG . a: o. y0 b* |* {0 p* A

4 ?, K& [" P6 E) W+ J5 r; b; t图7
+ u( Z$ T6 q" D2 r: `按照参数进行配置即可。重新Generate code.; Y6 N& ^$ Y' }# Y! b/ i
* G6 h8 \# b8 p
编译,正常5 b7 R3 d8 ]0 Q; N& A

& [. C' R, c0 ?在main.c文件中添加一个线程,如下所示:
' Q% a' Z5 M! x. n+ Z7 O. W
  1. tatic struct rt_thread thread;
    - |# h9 I/ R6 Y# g
  2. static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
    & M2 J1 x. @. B: t
  3. void thread_entry(void *parameter)5 A/ J. p& f# d3 }
  4. {! F! ?7 r! X. V+ R- _+ B: c
  5.     while (1)3 K. \8 O- S/ o- W) T' e% {, G6 {
  6.     {- |2 v" \7 g9 v* Y& c
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);" o6 L! B+ R1 {1 e7 Q, R7 r$ I
  8.         
    ' G$ \" x/ S& C+ Y- l, n
  9.          rt_thread_mdelay(1000);
    , b1 i# x# j% n5 m, S
  10.     }4 t! H. W: z/ r; F  u  ]# @
  11. }
复制代码
$ i* H2 G/ S7 J8 I# {; f
( t! d/ }1 p1 z4 C; b' |" k
main函数中启动线程,并开启调度函数,如下:
3 S& [9 I1 U8 ^! \
  1. rt_thread_init(&thread, "my_thread", thread_entry, RT_NULL, thread_stack,THREAD_STACK_SIZE, 10, 10);
    0 L5 _: M+ p& B/ }
  2.         rt_thread_startup(&thread);+ {9 c- N7 j! y  w. m& }9 x0 P9 C& @" n" p
  3.                                 rt_system_scheduler_start();
复制代码
编译,debug,就是单任务点个灯,效果如图:. q5 b! }* J) g  z& n$ N; L
4-8.gif 3 k1 j: X6 P) y% v; c
+ o$ `1 t+ \5 K& ?/ M; J% v0 [& m
移植没啥问题了,就可以多任务模块添加了。
7 N1 x5 {, O! s9 g
收藏 评论1 发布时间:2024-7-17 21:10

举报

1个回答
yang9397 回答时间:2024-8-6 08:58:40
初学者适合看看
9 n$ M2 ]' [, C! t2 a* r* k# h5 K

所属标签

相似分享

官网相关资源

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