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

RT Thread Nano + Nucleo-Stm32G71RB

[复制链接]
Paderboy 发布时间:2019-1-3 11:36

9 W; k/ o% M/ O0 f# `
RT-Thread Nano 简介% g; N0 o1 @2 c7 u
feature.png * i4 {1 s( q. c7 {! ^
* X; W' j, V* k! Z9 }* h; h1 Q% W9 K
RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。

$ |5 N/ l0 r3 i9 r' Y1 JRT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device drivers、kernel 和 shell (msh) 三部分功能。
) x9 p6 J5 d: q" ~, G
* m: r* ]5 z9 l/ w今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。
8 S# Z+ j  V& [4 i' }# `
6 X! T8 w( l- a, Y& L别的就不多介绍了,上图了。。。" 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
STM32_G0.jpg ' e" ~4 k: z# C- V
5 `. y8 o. H' _2 b# T( t1 m+ m' m
3 n3 o0 a" [+ e% u* B. |! S

6 S7 d' I8 ?4 ^4 B配置串口2+板载led PA5 5 h. o" Z. X$ t) R+ k

- d1 O/ k- p: r  z- M! \' `. u) d5 r5 p/ |6 R& Z) A

( v- h' K6 U: m( ]' x% k* ~: F QQ截图20190101105556.jpg ! s+ Z9 `' b& i' o; k$ [

% T& ?4 b4 |, r# m$ e4 ]1 f
- ^( H: v% H( x' M5 G

4 a( z5 {- V# K; r4 D% j$ s9 v系统使用内部HSI时钟 64Mhz
  Q1 B0 j4 }" u) u9 O4 S( N, K  y8 P7 M# W: q0 K% y
: S: e' A' c* D: S
QQ截图20181230154726.jpg
, Q: c. p( m7 w; z5 Z& Q
# g) B  l) `8 b- q7 C: ?好了,使用CubeMx直接生成工程后,我们需要到
$ n3 O8 R4 L$ [' M! |! lManage Run-Time-Environment 添加RT Thread Nano RTOS到工程里
# \# c, W6 t- {, W) M" E' {" a2 X% S; e5 O
Nano2.jpg   H$ B3 S7 S! }# a! x( A
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
进行必要的修改。。
5 r4 N$ u6 |6 i0 ~' R0 q* V, n* ]( a/ Z: |9 g8 S8 p
我们需要对stm32g0xx_it.c里的以下函数,
' L: @7 L" O/ o/ I" [进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。
4 o1 p- F% Q7 f2 p/ e7 O, v7 C% B9 a5 `% m( X) s

7 t" J# [6 o. v% B//void HardFault_Handler(void)4 H; O4 q# l+ S/ ]& G
//void PendSV_Handler(void)" ]% U+ Q$ ]; R" R: `
//void SysTick_Handler(void)
& R1 m- s" D: a- N0 M2 B1 L2 O8 k! E) h* G- L3 J$ D

/ @: T& O. Q6 E4 H9 w2 X* h Nano6.jpg
  a" W9 s7 b* O# u5 S. t( w2 D# I  J% d) a7 l+ }  N
然后还需要到Main.c里注释掉8 n3 z, `" S5 a1 U

1 R3 X0 Z4 d( |# O* ^+ }; m//  HAL_Init();
$ R3 Y0 O: {6 b3 H$ K: g//  SystemClock_Config();; ?+ a( \" n+ g
//  MX_GPIO_Init();
0 m  W' v- t) W3 ?' [( u" K6 e//  MX_USART2_UART_Init();/ O. [# r& U  b$ ]# K

! K" W" k& a. j- a5 X& B. O& I0 @5 L5 o
Nano13.jpg
; w& Q6 k/ N8 m: [# p4 P4 x3 X/ j& z) Y3 c
准备工作做好了,接着需要,配置. A* m+ t* m2 w& E- m( @7 l; d, t
rtconfig.h文件,来配置对应的接口
/ Z7 s1 a4 E8 ~, |) u3 P& L; T0 z' A& M" l6 o1 ]* j
Nano5.jpg 0 ], T  h, d) K, V! B6 t, p

) u$ D% \6 D7 g. z
7 @8 x- r% O' H' O1 m6 i; ~8 x Nano3.jpg ( A; `2 \# o/ Y8 G- C9 P( i0 |# W

/ G$ ^* b3 W+ S Nano9.jpg
; w" X8 F0 v/ f5 _3 {2 M# k  u- X# X: F$ b8 L
Nano10.jpg
  U3 h4 ]# M/ m0 v" Z4 k4 X6 b! G, W% h/ @! }- @" M
Nano7.jpg
: x" K4 ~0 R, r  W% f/ h. K1 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

" a: P& \0 S# x. m Nano8.jpg ' x* i4 X" n0 l/ Q" [

0 f$ L4 a4 w. Z) C7 H然后把main.c里注释掉的系统初始化,都添加到) q! i. h- G% u* B5 ?
void rt_hw_board_init()函数里* K6 K( V& ?& _0 }$ N
" V6 L7 v% l( s
Nano14.jpg
: z  n' F0 D9 A) s: d5 X7 m! g& O  C+ Q5 T0 S! }
然后把stm32g0xx_it.c里注释掉的
8 \* G9 ^3 L7 \中断函数都添加到
) o7 g, {8 c( K& I: |void SysTick_Handler(void)
8 a: F, K- E  S0 U, i0 q# Q; ~) k4 u' O& ]+ @" G0 [2 o! `
Nano15.jpg 9 U2 A; ?  i3 C- i- G

5 T* A# @8 Q' y/ |1 x2 ^好的了配置好了rt thread的系统配置,我还需要回到main.c添加
- x" K8 Z' g) `! y6 E8 D独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。
  ^( R. \* I& W7 N3 T( I, X  o  X+ V% p' R6 H; s1 p
Nano12.jpg
3 R% d8 c  S- s- i. x' b$ F# J8 T: |8 o* _" ?& f5 @  _
然后创建一个led闪烁线程。。# q4 X8 J4 p7 t& j$ w" }

3 @8 R, `1 l) V6 p6 nrt_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
Nano11.jpg
; W- A, \7 r' k5 }4 S: c
, S! k8 P$ D# z. C& j7 s好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了! F- [2 e( ]* r2 {$ ?
5 X6 h9 B+ r1 W9 L+ l
Nano.jpg - _% Y4 L' w8 g1 n. [2 V! w: O
1 R! ~" }) D8 J$ @0 y, l; ~
好了最后上传一个Nucleo-Stm32G71RB的官方原理图: Nucleo-Stm32g071RB.pdf (4.84 MB, 下载次数: 9)
赞 收藏 2 评论9 发布时间:2019-1-3 11:36

举报

9个回答
sincomaster 回答时间:2019-1-3 13:35:50
很详细,谢谢分享
子曰好人 回答时间:2019-1-3 14:25:12
学习了,前来支持,过两天用071跑跑电机
TLLED 回答时间:2019-1-3 17:15:33
谢谢分享            
zero99 回答时间:2019-1-7 10:56:50
楼主好棒,G系列这么快就玩上了
yang_alex 回答时间:2019-1-10 15:53:11
本帖最后由 yang_alex 于 2019-1-10 15:59 编辑
  M5 c: n2 w) N
$ q; h5 e; I7 @( `' ~你的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)
; V2 b7 c$ C1 @7 b+ N' n3 Z; k6 Z! C9 ~- b3 C, ]. v/ E
: K% ]  p/ Y+ ^1 r7 z; m
Paderboy 回答时间:2019-1-10 22:07:27
yang_alex 发表于 2019-1-10 15:53+ t8 i2 ~" x; A: |6 j" u
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
; J3 P: ?& s6 U/ UCannot download file ht ...

- B* n5 h- v0 B: P' {我的5.23。多试试,
STM1024 回答时间:2019-1-11 18:29:49
yang_alex 发表于 2019-1-10 15:53) J3 t' x, [- v. d$ N
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
* g! `$ h  ^! k7 x3 [) J( LCannot download file ht ...

) l8 O# y$ n- W9 {是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
yang_alex 回答时间:2019-1-11 21:01:21
stm1024 发表于 2019-1-11 18:290 M+ G0 k1 Y" e5 |( {) Q
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了 ...

* A8 L7 J( F  g4 N对的。我后面直接登RT-Thread的官网,然后下载。( m" H. P. W7 B( P7 ~, Z- C! {: W
" w1 u8 q. p# ^5 t5 K3 J0 ^! f
不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
* `% e5 `* j& ]' J2 q3 u; u* H$ }8 r3 t4 N+ d
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。
湉湉 回答时间:2019-1-16 13:00:30
好东西     
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版