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

RT Thread Nano + Nucleo-Stm32G71RB

[复制链接]
Paderboy 发布时间:2019-1-3 11:36
) j0 ^% d6 b: ^* G4 F% m( L! t
RT-Thread Nano 简介4 U2 R0 i& g" m
feature.png 1 w; e) U5 K% b

- D" C+ b" |8 L9 j, H* s
RT-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 driverskernel shell (msh) 三部分功能。
' N7 O' e  o. L  Q; _
) r1 S  D6 g4 u8 `! {1 ~- H今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。
. @( [0 H$ }  d* }* |% a% L  X# Q& Z' h
别的就不多介绍了,上图了。。。
  l5 L9 D2 Q: [7 Q  ]) e- P/ l% W/ G4 f1 ~

8 H. }! P6 @5 y4 w STM32_G0.jpg
# o- s( L' ^  R- E. c/ z  ]2 c7 Z/ U* S% g
6 }7 c! i  M5 K* r# l& ~

3 s# a' {  v0 Q% N( |7 m配置串口2+板载led PA5
6 N5 c/ i" x& o6 D6 K

" G, k) G/ Y5 L2 v9 i5 i6 S+ Q( V- D6 P
! F  j% P9 M5 u. `! l9 ^
QQ截图20190101105556.jpg 8 Y* V4 R6 S: e7 q4 u/ Q" Q
6 `7 Q/ n6 a! |: [9 Q

9 [7 K% a" n9 I2 a4 u

- _# x" u% H* P2 M  h0 ?系统使用内部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
QQ截图20181230154726.jpg 2 s/ ^* k2 {- R6 {, U% n; N/ O( Y+ [

5 }. B' T/ |  F# l. z& d7 v好了,使用CubeMx直接生成工程后,我们需要到
8 ?( m$ a; t" g$ `8 NManage 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
Nano2.jpg
- K5 h/ ?1 s( E0 s# d1 n3 u0 B
# {4 ]9 z) @8 F# v  n添加好了,RTOS接着就需要对他进行对应的配置
0 @8 [/ s- r6 e8 h8 c我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数- t. q; h: w8 c. `  R4 A
进行必要的修改。。
: Z* j6 C: o! Y; g" ], Y, W; ^/ @! 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

( R+ D: A; u+ ^$ M8 h3 {//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

. z5 @( ^- V! ~0 [, e9 M. C4 d8 W" h( u$ m
Nano6.jpg
; n- W. ^9 B1 s' \3 J- k( h& i! B+ P9 i" l, r$ h, a! O2 [) C
然后还需要到Main.c里注释掉
6 ]: ?! k% y' Y1 r! L5 d
2 n5 O; Q9 f! X) o3 E//  HAL_Init();0 |& ~. h7 R5 I, h" o
//  SystemClock_Config();3 G/ ?' [2 i, J4 a. Z
//  MX_GPIO_Init();
9 X( s  N& Y$ l//  MX_USART2_UART_Init();
) o/ x6 A$ a8 m6 B& x  v" U% i2 V3 H& S& q9 K

# V& T* z% e4 N3 o$ y Nano13.jpg 9 v, \  L9 }" s# `9 m( |
/ H; M5 A) J( L# K4 P" V" G$ L
准备工作做好了,接着需要,配置
% U# Z0 y* D% J" d3 }rtconfig.h文件,来配置对应的接口2 U* h! T! y8 N; A( ]

$ ^* e* Z( @0 m7 w+ a5 N Nano5.jpg   b! C) e& O1 k2 H. \) q; [, \
2 n( C0 M. x9 W* c+ p) {

& I- G' ~# ^5 P4 }! R Nano3.jpg 1 K5 e  x5 s- O
+ b& C7 j+ l1 y0 I1 T
Nano9.jpg
  M. R) ]. |* l, j+ i- e5 D# F( P
0 b9 l- j4 y5 S& U( ~7 g Nano10.jpg
* J5 }& ?" S! v3 n/ M6 C
5 Q$ a% F6 S0 _6 l( i4 x Nano7.jpg
" W( S' L2 C( O3 m+ j" L& f2 w. O4 _) n' H4 w0 D$ w
然后需要在board.c/ X9 A- q) q9 x8 L: G; B
#include "stm32g0xx_hal.h"
& A9 s- w2 e- `$ o+ e2 N8 |! f
8 P; `2 y( \# N5 B. r" _ Nano8.jpg 0 f6 H" z( p6 g- S" P  h

1 ^6 l; [/ A7 \: v/ q* j1 c0 G3 Z然后把main.c里注释掉的系统初始化,都添加到
- ~2 A9 g$ I6 [6 c3 b8 [$ Hvoid rt_hw_board_init()函数里
) @/ a# X. c6 V- P6 o, {" l5 j. e: ~# y1 m
Nano14.jpg
3 v3 d, V; }% x, b( H9 E
4 g" g3 z7 f6 d然后把stm32g0xx_it.c里注释掉的
9 h6 }& R& r  T/ \/ y# @中断函数都添加到$ t$ M; ~1 Q) ^0 ~& x; \
void SysTick_Handler(void)
' G. g$ B0 C# c8 R1 F4 n
* ]1 k- l: O# D1 l& B7 ~ Nano15.jpg
/ |( m* P1 w& X4 q
5 F5 @0 y) y3 n2 |; a好的了配置好了rt thread的系统配置,我还需要回到main.c添加% t& [) o- W$ k
独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。
0 {# ~% @8 N1 ^- A+ X2 r9 }; B8 L+ y2 U% R; M$ N$ q
Nano12.jpg
# N% }  z& C! P+ G9 J* G
  D# Q" z5 g# l  L' U$ r然后创建一个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);
0 n5 e3 F7 Z/ X/ N$ J. v
( M: C+ J+ p* f然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。% \; U2 E+ V! v+ k8 u

; U( Z& u' A- I8 Y3 d Nano11.jpg
5 ~: x: W/ h# j, ^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
Nano.jpg
0 g* t7 W& J& _  n, P0 A% c0 m/ d+ ~
, c+ _  y' T4 ^1 E8 x9 [6 D好了最后上传一个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 编辑
- R" E1 m/ I. A5 V; l/ H& f4 e
5 |- Y2 i/ g0 {. m+ @2 j2 H& m你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
2 O; Y' B) {8 @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

3 T& f/ ~, r- `$ |
Paderboy 回答时间:2019-1-10 22:07:27
yang_alex 发表于 2019-1-10 15:53. X8 N% b8 a9 F  I5 U
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
3 c; v3 ^, L" j, DCannot download file ht ...

5 D+ @6 I; p; {( |- D我的5.23。多试试,
STM1024 回答时间:2019-1-11 18:29:49
yang_alex 发表于 2019-1-10 15:53
' Q! l6 k' e$ l( f- @你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示5 X0 M$ `$ h+ _7 Z6 I$ c
Cannot download file ht ...
0 u8 M0 [' X& k% p. n) @/ i
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
yang_alex 回答时间:2019-1-11 21:01:21
stm1024 发表于 2019-1-11 18:294 u3 o+ k( U& m% \8 y
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了 ...

3 _: U& i+ o2 H% O' v$ I对的。我后面直接登RT-Thread的官网,然后下载。" R6 i) I) s- i- Z- r
7 S2 R& N5 V# @$ z: h8 T1 b' z
不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
/ U; \" d9 w9 k  h1 ~2 o# ^( T0 t; o3 k0 K- h# v1 I1 @% G
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。
湉湉 回答时间:2019-1-16 13:00:30
好东西     

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版