$ n' V2 O* ~. }1 h" V; x1 N2 S# O RT-Thread Nano 简介. _" V- V5 u/ Z6 H RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。 ( e& J: O9 _0 {2 p7 c& o5 @' gRT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能。 % D1 {% C7 f8 O 今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。 别的就不多介绍了,上图了。。。 " j5 j8 O p5 y& J7 O# G ' Z V( ]. i9 a( l* r ! ]1 q0 q1 Y/ o0 m" \$ }" y/ n 配置串口2+板载led PA5 9 |- j3 ~% R' d# d A% x! U# M7 D6 R - c3 D# |0 d3 }3 X) C* j3 R' L 4 L& L' i% n9 e+ c1 u* ` c* C 系统使用内部HSI时钟 64Mhz 0 ]$ Y4 t: T& R+ Z8 t' P+ T ' Z! k, L0 {' w5 i( n+ [; i0 S : c: v9 E; x7 N1 Q 好了,使用CubeMx直接生成工程后,我们需要到 Manage Run-Time-Environment 添加RT Thread Nano RTOS到工程里 3 R \2 j; Z! I5 P . v0 ^2 i5 x' M2 A& Y5 h- } 添加好了,RTOS接着就需要对他进行对应的配置; {# s) ^2 N3 a! s0 P0 p 我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数 进行必要的修改。。$ y8 a: N" r6 r& W - b- z- U; ?! K 我们需要对stm32g0xx_it.c里的以下函数, 进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。$ I5 b9 J% Q* `6 r( n //void HardFault_Handler(void) //void PendSV_Handler(void)4 }5 \* Y$ E& W: j //void SysTick_Handler(void) _: s& Z3 }# s9 u 然后还需要到Main.c里注释掉, H# y" j: ^9 T# Y // HAL_Init();4 @6 C: m% N0 V5 q4 ?& i // SystemClock_Config(); // MX_GPIO_Init(); // MX_USART2_UART_Init(); ! I: z7 c( f8 Q' @4 g' ~ 准备工作做好了,接着需要,配置 rtconfig.h文件,来配置对应的接口2 I' B! L* y5 p- i) v 4 m2 {4 ]1 U2 [% \ 0 Y. B* C. ~; V 3 J1 ~& s9 b' r% X0 N* \) X4 { / a5 V2 x& c1 c9 I 然后需要在board.c #include "stm32g0xx_hal.h"- j& W* k+ o; F* M @( L " I% O; z9 f# q7 } D 然后把main.c里注释掉的系统初始化,都添加到 void rt_hw_board_init()函数里 然后把stm32g0xx_it.c里注释掉的 中断函数都添加到 void SysTick_Handler(void)) d% T2 d% o; ]) y7 m 5 |% G0 C) i9 j# c6 h4 a 好的了配置好了rt thread的系统配置,我还需要回到main.c添加# m7 ^! }# ]6 y% ]: T) U9 O9 C 独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。- X0 v1 V) g6 Y+ D* J ) a1 \! {7 g5 f! y; H$ U! i u9 p+ v" @- [ 然后创建一个led闪烁线程。。 ; ?$ M: G) u5 m$ d" { rt_thread_create("led1",led1_thread_entry,RT_NULL,256,3,20); * Z, U! ^+ @1 u. v8 a1 [& {4 S6 U 然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。 ; H# ] q: u$ W 好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了, R* E9 X& h! p/ @ 9 i ]- R7 ~* p, Z+ z, c " v! G$ S% [& ]# M- F 好了最后上传一个Nucleo-Stm32G71RB的官方原理图: |
你的KEIL MDK 版本是5.26吗? 我的5.25中下载不了RT-Thread Nano。出现下面提示5 {/ A4 X. c3 u0 e. e4 M: z% ^
Cannot download file http://www.rt-thread.org/downloa ... tthread.3.0.3.pack: Cannot download URL (connection interrupted)
# @- r$ t! L ]- W
我的5.23。多试试,
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
对的。我后面直接登RT-Thread的官网,然后下载。/ G$ y5 P$ e" e3 v% q( A- x
不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。