* X; W' j, V* k! Z9 }* h; h1 Q% W9 K RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。 RT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能。 今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。 别的就不多介绍了,上图了。。。" t6 o' r& j* c* b! q9 t: A" f : s9 E8 W6 Q# h& T: F5 T# I. m" p& R# V ) S w+ ^! B) k3 Q* N1 W% N. r
5 `. y8 o. H' _2 b# T( t1 m+ m' m 3 n3 o0 a" [+ e% u* B. |! S 配置串口2+板载led PA5 5 h. o" Z. X$ t) R+ k ' `. u) d5 r5 p/ |6 R& Z) A
系统使用内部HSI时钟 64Mhz 4 S( N, K y8 P7 M# W: q0 K% y : S: e' A' c* D: S
好了,使用CubeMx直接生成工程后,我们需要到 Manage Run-Time-Environment 添加RT Thread Nano RTOS到工程里 " E' {" a2 X% S; e5 O
8 `( X; W# `5 y: g 添加好了,RTOS接着就需要对他进行对应的配置) P! p& c9 s' m8 v; J 我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数' V: `9 C7 ^; ^; R& `6 p; d, O 进行必要的修改。。 * ]( a/ Z: |9 g8 S8 p 我们需要对stm32g0xx_it.c里的以下函数, 进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。 7 C% B9 a5 `% m( X) s //void HardFault_Handler(void)4 H; O4 q# l+ S/ ]& G //void PendSV_Handler(void)" ]% U+ Q$ ]; R" R: ` //void SysTick_Handler(void) 1 L2 O8 k! E) h* G- L3 J$ D
2 D# I J% d) a7 l+ } N 然后还需要到Main.c里注释掉8 n3 z, `" S5 a1 U // HAL_Init(); // SystemClock_Config();; ?+ a( \" n+ g // MX_GPIO_Init(); // MX_USART2_UART_Init();/ O. [# r& U b$ ]# K & B. O& I0 @5 L5 o
4 P4 x3 X/ j& z) Y3 c 准备工作做好了,接着需要,配置. A* m+ t* m2 w& E- m( @7 l; d, t rtconfig.h文件,来配置对应的接口 ; T0 z' A& M" l6 o1 ]* j
u- X# X: F$ b8 L
4 k4 X6 b! G, W% h/ @! }- @" M
1 S: ]. c) @' @" z) d/ n 然后需要在board.c! O0 X. H, o( ^4 C. o6 Q: b3 r/ K/ _7 h/ A #include "stm32g0xx_hal.h"9 V7 X, i' ~1 r" n; t9 C8 L
然后把main.c里注释掉的系统初始化,都添加到) q! i. h- G% u* B5 ? void rt_hw_board_init()函数里* K6 K( V& ?& _0 }$ N " V6 L7 v% l( s
: d5 X7 m! g& O C+ Q5 T0 S! } 然后把stm32g0xx_it.c里注释掉的 中断函数都添加到 void SysTick_Handler(void) 4 u' O& ]+ @" G0 [2 o! `
好的了配置好了rt thread的系统配置,我还需要回到main.c添加 独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。 o X+ V% p' R6 H; s1 p
$ F# J8 T: |8 o* _" ?& f5 @ _ 然后创建一个led闪烁线程。。# q4 X8 J4 p7 t& j$ w" } rt_thread_create("led1",led1_thread_entry,RT_NULL,256,3,20);/ P) M% ~% n5 x $ D/ M( V W+ }- C' U4 s! E 然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。1 ?8 `- o9 B5 h" f; O( I r( @! b / }4 J! ~% s, T: }* ~' r- E5 f
好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了! F- [2 e( ]* r2 {$ ? 5 X6 h9 B+ r1 W9 L+ l
1 R! ~" }) D8 J$ @0 y, l; ~ 好了最后上传一个Nucleo-Stm32G71RB的官方原理图:
Nucleo-Stm32g071RB.pdf
(4.84 MB, 下载次数: 9)
|
微信公众号
手机版
你的KEIL MDK 版本是5.26吗? 我的5.25中下载不了RT-Thread Nano。出现下面提示; g: E' K1 _2 f, E$ v
Cannot download file http://www.rt-thread.org/downloa ... tthread.3.0.3.pack: Cannot download URL (connection interrupted)
; k6 Z! C9 ~- b3 C, ]. v/ E
: K% ] p/ Y+ ^1 r7 z; m
我的5.23。多试试,
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
对的。我后面直接登RT-Thread的官网,然后下载。( m" H. P. W7 B( P7 ~, Z- C! {: W
" w1 u8 q. p# ^5 t5 K3 J0 ^! f
不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
3 u; u* H$ }8 r3 t4 N+ d
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。