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

RT Thread Nano + Nucleo-Stm32G71RB

[复制链接]
Paderboy 发布时间:2019-1-3 11:36
$ n' V2 O* ~. }1 h" V; x1 N2 S# O
RT-Thread Nano 简介
* B: l" X8 ?0 {3 B( t, f) r2 Q feature.png ; `% N# L8 C1 ?$ P! v
. _" V- V5 u/ Z6 H
RT-Thread Nano 是 RT-Thread 推出的极简版实时操作系统,适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合
( e& J: O9 _0 {2 p7 c& o5 @' g
RT-Thread Nano 是一个精炼的硬实时内核,内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。MDK5 以后采用 pack 形式管理芯片及各种相关组件,RT-Thread Nano 也是通过 MDK pack 方式发布,RT-Thread Nano pack 包括 device driverskernel shell (msh) 三部分功能。
% D4 y  g; e& Y5 [: n! h# `% D1 {% C7 f8 O
今天就趁着 Nucleo-Stm32G71RB 的热度,来一波RT Thread Nano的简单移植。。。分享。。
1 U$ x2 R) b+ b  k( d/ b% A# T
- [- w! X: n# {, t: P别的就不多介绍了,上图了。。。
' S( n' Z% l. `9 ^) q( g6 i( X0 {" j5 j8 O  p5 y& J7 O# G

: P- V7 z7 q. u) o0 Z STM32_G0.jpg $ m1 b6 C& C8 I/ O2 d8 J

3 d+ k+ X& G4 C' D  s" S' Z  V( ]. i9 a( l* r
! ]1 q0 q1 Y/ o0 m" \$ }" y/ n
配置串口2+板载led PA5 9 |- j3 ~% R' d# d
  A% x! U# M7 D6 R

* f; r# v+ t1 {; x5 M3 E  d8 ^* w3 d

; Y0 |. d# [/ D( i9 H' S QQ截图20190101105556.jpg
8 P8 [3 M2 A! X/ Q, a

+ k( n: N0 @( L5 C3 O5 |- c3 D# |0 d3 }3 X) C* j3 R' L
4 L& L' i% n9 e+ c1 u* `  c* C
系统使用内部HSI时钟 64Mhz
* }! S/ A8 j5 Z1 E' M+ J& O0 ]$ Y4 t: T& R+ Z8 t' P+ T
' Z! k, L0 {' w5 i( n+ [; i0 S
QQ截图20181230154726.jpg 2 u+ t+ p3 y- F- o0 ]
: c: v9 E; x7 N1 Q
好了,使用CubeMx直接生成工程后,我们需要到
/ H% y: S- \/ e6 j# J0 {- ?4 wManage Run-Time-Environment 添加RT Thread Nano RTOS到工程里
4 Y: B. O$ J. m3 `  v9 T; n3 R  \2 j; Z! I5 P
Nano2.jpg
3 J/ g# o- M2 a+ @$ s- D: J( w9 Y. v0 ^2 i5 x' M2 A& Y5 h- }
添加好了,RTOS接着就需要对他进行对应的配置; {# s) ^2 N3 a! s0 P0 p
我们需要对main.c和stm32g0xx_it.c的系统初始化函数和中断函数
, n* Z/ k) }) J进行必要的修改。。$ y8 a: N" r6 r& W
- b- z- U; ?! K
我们需要对stm32g0xx_it.c里的以下函数,
2 T- ]2 |5 s* v+ |/ a  T* @进行掉注释的操作,因为RT Thread Nano RTOS 将接管系统的中断。。$ I5 b9 J% Q* `6 r( n

7 t4 D  g2 |' Y- p3 M$ }5 X" ~
* P( d: {) P7 v; D//void HardFault_Handler(void)
0 C& k1 u6 Y6 \) L  H7 \//void PendSV_Handler(void)4 }5 \* Y$ E& W: j
//void SysTick_Handler(void)
9 D  x" v3 H5 |: e, J8 N( U
5 Z5 o2 c% `6 P& {& e2 Y9 `  _: s& Z3 }# s9 u
Nano6.jpg 7 V5 P  @. I7 S

( O: E1 R0 J8 M; R然后还需要到Main.c里注释掉, H# y" j: ^9 T# Y

) e' Y1 J  B  }$ W//  HAL_Init();4 @6 C: m% N0 V5 q4 ?& i
//  SystemClock_Config();
" ?0 [% V6 A5 F, d//  MX_GPIO_Init();
( j4 y* a0 X# B6 N% H( P/ e//  MX_USART2_UART_Init();
8 A( K+ O+ N8 Q; b' z: B
+ B/ \/ V0 D9 ~' F. P  I; [2 Q
) A5 [) k6 Q+ w) ? Nano13.jpg
" G4 V/ o/ E9 E; f& W! I: z7 c( f8 Q' @4 g' ~
准备工作做好了,接着需要,配置
5 E" C2 x' l3 g: u" k& X' Yrtconfig.h文件,来配置对应的接口2 I' B! L* y5 p- i) v
4 m2 {4 ]1 U2 [% \
Nano5.jpg
; {4 ^8 G, M; U/ Q( q$ M, x0 Y. B* C. ~; V
3 J1 ~& s9 b' r% X0 N* \) X4 {
Nano3.jpg
( i- D$ V  f8 V* F/ a5 V2 x& c1 c9 I
Nano9.jpg
7 W7 U9 Y3 @  L5 I
  J7 \; t# Z5 G8 `. l6 X4 T2 t9 H* P Nano10.jpg
3 ~( x$ k0 M" [
! O# M& J+ q5 ]/ K8 @ Nano7.jpg % B2 n9 p8 i+ `; N3 E7 Y

4 B8 c6 x  k* O' q; V0 o然后需要在board.c
6 L7 x8 _5 U- k* L3 H% n, k#include "stm32g0xx_hal.h"- j& W* k+ o; F* M  @( L

4 d; J. d0 g- ]4 }$ Z$ L. n# ? Nano8.jpg & \8 H3 z, f; Q  K' d( \" O4 S
" I% O; z9 f# q7 }  D
然后把main.c里注释掉的系统初始化,都添加到
5 x! h+ n) G) s; E- s2 Zvoid rt_hw_board_init()函数里
7 a, f$ m1 \1 D( m
- W1 A+ d6 M8 N' Z Nano14.jpg 8 U9 U4 D1 `4 k- u" C; a  z

# g0 q9 s, [" Q9 @' N然后把stm32g0xx_it.c里注释掉的
+ t1 i. W# A5 d中断函数都添加到
4 t- m( c* V5 Z2 l0 S) _void SysTick_Handler(void)) d% T2 d% o; ]) y7 m

' B7 I0 [* o" A7 z5 @ Nano15.jpg 8 C& t4 Z1 G& w' ]( h% m9 m
5 |% G0 C) i9 j# c6 h4 a
好的了配置好了rt thread的系统配置,我还需要回到main.c添加# m7 ^! }# ]6 y% ]: T) U9 O9 C
独立的串口转接函数,方便提供rt_kprintf()函数输出串口信息。。- X0 v1 V) g6 Y+ D* J
) a1 \! {7 g5 f! y; H$ U! i
Nano12.jpg
+ c1 D' q/ [% a1 Y0 V  u9 p+ v" @- [
然后创建一个led闪烁线程。。
9 ^7 Z  N, ], u2 Q0 N6 O; ?$ M: G) u5 m$ d" {
rt_thread_create("led1",led1_thread_entry,RT_NULL,256,3,20);
  l( ~9 ]* P( m* Z, U! ^+ @1 u. v8 a1 [& {4 S6 U
然后我添加了,显示内部UID通过rt_kprintf() 函数输出显示。。。
9 `  r0 I0 [# Y! C. Q0 ~# d# r+ |; H# ]  q: u$ W
Nano11.jpg
$ R; k: w' d/ z1 Y. Z
2 G* ~5 S6 d5 i2 v6 c7 v6 G& h* H! r好了,RT Thread Nano的移植就完成, 现在开启串口工具,就可以看到串口信息了, R* E9 X& h! p/ @
9 i  ]- R7 ~* p, Z+ z, c
Nano.jpg 9 t! j( K9 M5 W0 G2 ?- t) X$ n: p
" v! G$ S% [& ]# M- F
好了最后上传一个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 编辑 ! n+ F$ [& |0 T# f

5 y% K* `% x  ?* `4 o1 B你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示5 {/ A4 X. c3 u0 e. e4 M: z% ^
Cannot download file http://www.rt-thread.org/downloa ... tthread.3.0.3.pack: Cannot download URL (connection interrupted)
* X1 c+ ^/ @; w( {
8 k5 s9 U& }' h7 T# @- r$ t! L  ]- W
Paderboy 回答时间:2019-1-10 22:07:27
yang_alex 发表于 2019-1-10 15:53
$ i! Z+ f( X7 P你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示: {) X+ E  H1 s1 ]4 M3 r/ z
Cannot download file ht ...
9 `0 p% S( d0 M$ d4 g
我的5.23。多试试,
STM1024 回答时间:2019-1-11 18:29:49
yang_alex 发表于 2019-1-10 15:53! W2 [8 [" }; a8 L/ v% a/ d
你的KEIL MDK 版本是5.26吗?   我的5.25中下载不了RT-Thread Nano。出现下面提示4 i- \$ G  c  K6 x9 m
Cannot download file ht ...

. M7 h6 {2 W- ^/ ]$ k3 W是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了
yang_alex 回答时间:2019-1-11 21:01:21
stm1024 发表于 2019-1-11 18:298 |2 H9 d  ?7 d( V+ g
是不是你网路问题啊,直接去官网下载,挂迅雷,速度快很多,用keil的pack manager慢死了 ...

- f/ i, Q5 s* ?1 M0 V4 [" S对的。我后面直接登RT-Thread的官网,然后下载。/ G$ y5 P$ e" e3 v% q( A- x

  ~# e, F; z: d2 ~# ?: q* s( J不过官方下载文件组织的不是很友好,我是从一篇文章中找到下载链接的。
, G4 ^: w% C* X& x
3 m7 _, w) Q' `; U% f另外就是RT-Thread的官网中关于RT-Thread Nano的介绍太简单了。
湉湉 回答时间:2019-1-16 13:00:30
好东西     

所属标签

相似分享

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