) j0 ^% d6 b: ^* G4 F% m( L! t RT-Thread Nano 简介4 U2 R0 i& g" mRT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。 * K0 t. W* J1 ?# @: z! k1 U0 }RT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能。 今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。 % a% L X# Q& Z' h 别的就不多介绍了,上图了。。。 ) e- P/ l% W/ G4 f1 ~ - E. c/ z ]2 c7 Z/ U* S% g 6 }7 c! i M5 K* r# l& ~ 配置串口2+板载led PA5 9 i5 i6 S+ Q( V- D6 P ! F j% P9 M5 u. `! l9 ^ 6 `7 Q/ n6 a! |: [9 Q 系统使用内部HSI时钟 64Mhz/ l) `9 [; o% F1 [: f 8 U7 K4 e! k5 n$ e% p& D& U 1 X- p/ T- o: o+ }0 h 好了,使用CubeMx直接生成工程后,我们需要到 Manage Run-Time-Environment 添加RT Thread Nano RTOS到工程里5 w$ M5 W8 n, w5 f0 y 2 L' ]+ U, y# R0 c& ]0 _9 p0 o 添加好了,RTOS接着就需要对他进行对应的配置 我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数- t. q; h: w8 c. ` R4 A 进行必要的修改。。 ; ^/ @! Q9 q A; O0 p 我们需要对stm32g0xx_it.c里的以下函数,: J' `4 F2 t* |6 U; v1 S0 B: S. n 进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。5 Y2 U4 t' s$ x ; V; m4 P/ n6 I. a' ]. r //void HardFault_Handler(void), p/ A+ K2 p* C1 @" ^7 } v# v //void PendSV_Handler(void)0 h a$ S& b3 f0 E* r; I" l z0 g //void SysTick_Handler(void) d6 O5 B7 {5 ~7 F6 P( m , e9 M. C4 d8 W" h( u$ m + P9 i" l, r$ h, a! O2 [) C 然后还需要到Main.c里注释掉 // HAL_Init();0 |& ~. h7 R5 I, h" o // SystemClock_Config();3 G/ ?' [2 i, J4 a. Z // MX_GPIO_Init(); // MX_USART2_UART_Init(); & x v" U% i2 V3 H& S& q9 K / H; M5 A) J( L# K4 P" V" G$ L 准备工作做好了,接着需要,配置 rtconfig.h文件,来配置对应的接口2 U* h! T! y8 N; A( ] 2 n( C0 M. x9 W* c+ p) { + b& C7 j+ l1 y0 I1 T 2 w. O4 _) n' H4 w0 D$ w 然后需要在board.c/ X9 A- q) q9 x8 L: G; B #include "stm32g0xx_hal.h" 然后把main.c里注释掉的系统初始化,都添加到 void rt_hw_board_init()函数里 5 j. e: ~# y1 m 然后把stm32g0xx_it.c里注释掉的 中断函数都添加到$ t$ M; ~1 Q) ^0 ~& x; \ void SysTick_Handler(void) 好的了配置好了rt thread的系统配置,我还需要回到main.c添加% t& [) o- W$ k 独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。 9 }; B8 L+ y2 U% R; M$ N$ q 然后创建一个led闪烁线程。。 M B& } r6 }5 ^9 U0 l V# X# g 3 F2 a0 I0 m8 n% x- ^/ m7 ? rt_thread_create("led1",led1_thread_entry,RT_NULL,256,3,20); 然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。% \; U2 E+ V! v+ k8 u 6 }- ?1 \4 `7 `& r$ ^$ a1 E" V 好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了) x8 J# \& T- l' m8 j5 t3 V 4 J; e% ~& r2 v% Y+ F/ E+ q 好了最后上传一个Nucleo-Stm32G71RB的官方原理图: |
你的KEIL MDK 版本是5.26吗? 我的5.25中下载不了RT-Thread Nano。出现下面提示
Cannot download file http://www.rt-thread.org/downloa ... tthread.3.0.3.pack: Cannot download URL (connection interrupted), @0 W8 t! g" X
4 W; c$ x' Z- e0 Y% ?6 _- t/ i* X
我的5.23。多试试,
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
对的。我后面直接登RT-Thread的官网,然后下载。" R6 i) I) s- i- Z- r
7 S2 R& N5 V# @$ z: h8 T1 b' z
不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
# ^( T0 t; o3 k0 K- h# v1 I1 @% G
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。