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

RT Thread Nano + Nucleo-Stm32G71RB

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

2 L$ H$ b; F, [' v1 z; Q& j
RT-Thread Nano 简介
/ g, U  d( z" h  d! _  o0 z4 s feature.png
$ e% ~8 d2 Z, ^1 ]! B! ]" m
" C7 X8 S( `, ^1 w# b7 I! r/ b
RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合

3 I- z2 [9 W1 ^7 qRT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device driverskernel shell (msh) 三部分功能。: J6 O9 I4 P/ J1 c) S$ P& J7 _

# G3 {" r0 _# Q: B) g) F% r今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。
3 X. d; O& P5 |* L: C4 c* F1 Z
1 h# d1 ^, Q3 `" q! T别的就不多介绍了,上图了。。。
. _5 H$ V) J6 ^( a" z7 i( {8 q* w. q- n2 A: m
4 Z6 {2 }( b) J' B) U
STM32_G0.jpg 9 N' f3 J" Y" D
7 p$ ?/ B# }* ?( n: L+ Z
. Z+ h8 l  @8 @8 M; ^$ H9 c/ g
+ h" t  p/ \9 D4 ~% V% ~
配置串口2+板载led PA5 7 H6 u2 w5 Q2 R( Q$ F5 x% G+ f6 l

% r+ C$ D' a* p% z- `+ G: p
) X* ~# v9 K" i& X

- j& D+ _  @1 G/ S0 u QQ截图20190101105556.jpg . U: D$ W8 |8 ~7 E! @# ^9 A% u
' M8 h. w5 \* U. t. ?

1 }9 l) G9 I, ?2 O3 s" ?

% ~" Z" o( W$ |1 t, `7 S系统使用内部HSI时钟 64Mhz
$ |5 c+ z* }3 A% H
  g9 e0 o! I1 u+ V/ k4 U' y, e, b

/ G9 {3 y$ K+ o0 k5 T1 |$ D5 Q3 L QQ截图20181230154726.jpg - G1 _4 X9 K- L: k, j5 U; l& y
) f2 u( m$ G+ D) Z7 g
好了,使用CubeMx直接生成工程后,我们需要到5 N9 t$ S: g0 Z: w  Q
Manage Run-Time-Environment 添加RT Thread Nano RTOS到工程里, d0 q! |$ L5 h

6 A5 v/ |7 q* t/ }' K9 Y6 h: a) ~ Nano2.jpg
# f3 R! K& S: {: _" u* E0 _  V% p2 R( W1 H5 I1 w9 r! X
添加好了,RTOS接着就需要对他进行对应的配置
7 |! R/ X. y2 G2 n我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数# A  @& T" T/ N% R8 b" K! [
进行必要的修改。。; z$ Y6 W5 S( j9 G( {
! R) T. K/ q5 M
我们需要对stm32g0xx_it.c里的以下函数,/ B+ l$ n, h1 B3 C& @9 s
进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。
+ n: o" S  \3 F9 a6 C
& G1 D  H  a) N. r/ z4 V2 E" v  Y0 P3 g& d) o& d
//void HardFault_Handler(void)
0 B- V* u0 d" O% x0 x  ^$ x//void PendSV_Handler(void)
: M, E6 F/ ~/ a) j+ k8 Z5 X% P  _//void SysTick_Handler(void)+ C+ [1 d; N9 w9 }4 g: Z

/ O1 d& a$ a, y' o
7 _5 ?' L2 w5 c/ N8 ] Nano6.jpg
: N& j: ~# \+ |! G) n+ v* z
/ ~) G, C" i, V9 f然后还需要到Main.c里注释掉
  ]3 j2 W" a- K0 }# k' c
" l! X0 Z$ p- v% y/ o//  HAL_Init();
) i/ o/ K- e7 g2 E4 l0 e' M- \//  SystemClock_Config();
& v/ i/ |$ ?3 _( t; t//  MX_GPIO_Init();' F* J5 N2 H( ^) z
//  MX_USART2_UART_Init();7 N( q+ Q/ X/ ~2 \9 l) C
2 l% Q: o  F" G( M& K
) R( o% d! ]0 I6 e8 K
Nano13.jpg 0 }! H/ H9 B* C6 n( Z; x

. |! e9 v8 U- P' c$ O/ {* j准备工作做好了,接着需要,配置
. G: |8 X: _! xrtconfig.h文件,来配置对应的接口# z& m% V3 l9 u/ X7 b" G0 C

) Z2 |6 |( b& Q' _3 r Nano5.jpg
; s1 i$ z: f* }. ]0 d5 Z, x0 O
# Z" n" s9 P; N9 @% c8 |. P& w" q. b4 [% x( Z
Nano3.jpg
) B# G6 t/ S( J2 z2 z5 h
3 p/ d6 h! s. r' D& N Nano9.jpg
8 O9 s9 N- I: G0 E+ f
$ s* C" k5 G; D Nano10.jpg
* ?& E! `' R5 b; w& L6 |) E/ R) N/ C8 u" b# {7 Z8 }" ]4 P  y1 ~8 V5 Y( Y; r; u
Nano7.jpg 2 [5 K$ ]  ^* G  Y
' M8 z1 [% D" e. z$ {
然后需要在board.c
4 x9 J; ^0 l) y5 J/ Z#include "stm32g0xx_hal.h". c( }+ R& I0 m  q

( B+ U/ s. C1 X; v" C Nano8.jpg
2 m+ R9 o5 ]' t4 k2 u( h% @- d1 f; W- w/ t# G4 k% ^
然后把main.c里注释掉的系统初始化,都添加到( p) D- X% D5 _$ K* l  X
void rt_hw_board_init()函数里
7 ~5 {) P$ _$ _% D
! W9 f' x0 }; h' w% ]2 r2 f! u Nano14.jpg
: x' J& w/ h) ?) E" ~# D  O* A+ H, a! Q: e2 _
然后把stm32g0xx_it.c里注释掉的
/ x. V% B8 Z  R+ B6 t" i中断函数都添加到3 ^' D  `, F! P
void SysTick_Handler(void)
' r+ L3 h7 y9 }/ g' \  T
4 R$ m# ]$ B& M- J Nano15.jpg
) p% `0 @( ?5 ]: o+ S4 D
* `7 z' |' W9 t2 O8 K好的了配置好了rt thread的系统配置,我还需要回到main.c添加
# V" m) d# u# `% S2 S独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。
" ?" V% ^4 V+ a. T1 P, K( F" i$ u/ z& B4 L' }4 m; m$ P
Nano12.jpg
- C# m, j, t( R0 `4 F3 N+ H! M
7 E3 @- k$ W! L# ^* a3 Y然后创建一个led闪烁线程。。0 y" Z9 j" Q( V2 D/ N, \
, E' N0 f8 e" Q9 F! f0 Z
rt_thread_create("led1",led1_thread_entry,RT_NULL,256,3,20);' s2 C1 }$ V: o9 i/ D+ p

, o( @9 r& }/ l$ @+ G! Q( a然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。2 C$ ~  T* _5 @  I* m0 s; J2 {

0 |6 D/ I1 `  f+ ^2 r Nano11.jpg " Q7 H/ [$ o$ N5 ]: r% p* }2 R. W8 W6 h

7 r9 w1 D" q( y0 w! b  K# c好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了
  n( |1 X3 C3 r  Z: |9 R9 c$ z- M
3 E3 @! P) n) Z2 v2 `# X Nano.jpg
+ g1 {5 y0 l: |; O. w, \( Y1 V
$ O, `1 M9 V& Z2 _' O好了最后上传一个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 编辑
1 e  `0 ]/ {0 q* a9 t
2 B* q# P4 _, w( ]  Y5 }5 Z你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
( x* R( n1 R" E, B2 ?3 eCannot download file http://www.rt-thread.org/downloa ... tthread.3.0.3.pack: Cannot download URL (connection interrupted)/ B# t9 T8 g6 [
  y7 g0 a/ g+ o2 |/ r! W8 v0 n
1 L2 ^3 t5 U/ j: K) q: r- Y. ]  C
Paderboy 回答时间:2019-1-10 22:07:27
yang_alex 发表于 2019-1-10 15:53& T$ x5 D1 o4 i- p, ?
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示
4 a# L$ K$ {! V2 ~# D* tCannot download file ht ...

- a* S# b' \9 N, f+ {. X我的5.23。多试试,
STM1024 回答时间:2019-1-11 18:29:49
yang_alex 发表于 2019-1-10 15:53& N6 B8 [& w. d1 `6 H
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示4 |4 B% b! q: L1 S& P- l
Cannot download file ht ...

; Y! F) ]+ L9 |+ x9 s; f是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
yang_alex 回答时间:2019-1-11 21:01:21
stm1024 发表于 2019-1-11 18:29
6 G  K5 A7 ]. I" r是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了 ...
& N6 j: a3 T2 T; P1 c
对的。我后面直接登RT-Thread的官网,然后下载。
& U: m; U- E; \2 |
; \9 {- f) h- u3 S- y( J* C不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
8 ?) a# v2 F8 G. ~& j" ^  ?& L& Z" Q- ?/ C$ I3 X* s2 f
另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。
湉湉 回答时间:2019-1-16 13:00:30
好东西     

所属标签

相似分享

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