
RT-Thread作为国产OS之光,实际应用中总会遇到的。如何结合Cubemx快捷移植RTT呢?下面结合H533板卡简单的测试一下,然后就是举一反三了。: o" j" n% P5 `9 M; o m 首先打开cubemx工具,点击help->Embeded software packages manager菜单,打开软件包管理界面,cubemx提供了离线及在线安装软件包方式,选择左下角From Url…,弹出的对话框中点击new,如图1所示:9 ]) d1 N+ R: P3 T3 }* q6 Z0 ? ![]() 图14 w) I/ W4 A$ y4 O& A7 T 输入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,等待安装好后。 安装好后,显示绿色。如图2所示: ![]() 图2 然后回到主界面,选择芯片,双击进入工程参数设置。 点击左边栏的Middleware and Software Packs->X-CUBE-RT-Thread_Nano,进入组件配置界面,选择RealThread.X-CUBE-RT-Thread_Nano,当前四个都选上,如图3所示:+ w$ u$ @3 y9 a6 X ![]() 图3 回到主界面,在左边的菜单Middeleware and Software Packs中,再点击X-CUBE-RT-Thread_Nano,选择RTOS RT-Thread,参数默认,如图4所示: ![]() / x. m) |* X7 w8 h3 J 图4 配置PA5作为输出测试引脚。配置时钟等,无需多言。 需要在NVIC中去掉三个中断,HardFault_interrupt,Pendable_request interrupt,System tick timer,如图5所示: ![]() 4 M8 T' S' }$ h, G7 c 图5 z0 g' R b( O 因为RTOS使用了systick,所以为了避免冲突,SYS->Timebae Source 选择TIM15。如图6所示: ![]() 图6- C, ?8 Q5 N$ D, G8 o1 t 然后配置Project Manager,Toolchain/IDE使用MDK-ARM.+ Q% j8 Y9 p W" i7 A ' U) t! @3 ~# z3 \! E+ U1 | Generate code.8 F% J% e4 u; N5 Q/ ] ; G6 O6 j" [7 P! j0 M" R+ h 在生成的main函数中添加#include "rtthread.h",编译。% ~3 x. r# Z" O 会发现提示board.c文件中,UartHandler错误,没有定义。是因为CubeMX中没有配置这部分。回到CubeMx中,选择UART2,如图7所示9 L# g# q4 r \2 u0 T3 y4 p) \ ![]() 6 M. [4 i8 \3 W! A/ k$ F 图78 H) w" X1 o, `4 E8 t 按照参数进行配置即可。重新Generate code.1 m' W( u3 h) L- p$ s# c* K9 f 编译,正常 4 h- m7 F' w9 C0 z9 ?, w3 w 在main.c文件中添加一个线程,如下所示:# Z, f6 S& j; @# S2 D0 F2 p* G9 T
main函数中启动线程,并开启调度函数,如下:
![]() - i$ N+ P, u- ~$ r$ u0 |0 ? 移植没啥问题了,就可以多任务模块添加了。9 A, }5 ^* ^2 _ |
初学者适合看看" A/ [) u0 V3 v' _* k5 ~+ ? |
拷打cubemx【002】——自定义还需基于芯片的工程
STM32电路知识学习
兔哥的初代M33【002】-H503Nucleo 内部flash操作
实战经验 | 进一步认识STM32H5的OBK
优雅至极!STM32H5咖啡机,高级GUI与安全功能之双响炮
【NUCLEO STM32F429ZI开发板】之点灯大师
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】PWNUCLEO-U083RC M 互补输出配置
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出