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

【经验分享】STM32G0学习手册——开发环境搭建与熟悉(CubeMX与MDK5)

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置1 ^, `/ W+ k5 }( X  D. T
1、在官网下载安装包安装
) Y' I# I6 c. p# ?+ V; M2 |2 I) n" |# Z
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;
- y7 J& H% G4 [* f% n  U) K7 ~5 s1 d+ e( `7 T
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。/ q! N6 `5 ~' T( n7 Z$ x( @: O

1 {- n6 k9 v# Q: D固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。8 c! E& ^8 K- U* W4 x1 J4 E
" l" c0 s( Q4 |5 h
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。) M. J: b( b( B

7 [. q: B1 u& {1 O1 q$ Q+ o; R1 h
20200418175903466.png
1 e! O& s8 y6 I% n0 b

, ?* s8 ~4 L. x) ~& o% u( n9 Q3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
! Q4 G& x# y) G& o- d/ K/ O- g
! J3 l, f9 f' ?/ H6 F+ mCubeMX界面认识# h8 o" J4 [+ B* P1 L
5 r( y, k% J7 @& s- j
20200418183040744.png

9 I! `2 B8 J9 b4 _2 x5 G9 ^9 \
5 Z/ H- W' ], j4 v. vPinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
0 i0 u& }2 ^  d* J" _: @# W/ x& o2 w# v; O
Clock Configuration:时钟树设置。(之后会慢慢讲解)1 P6 r, _5 W' Q0 _/ K9 x" J
8 m/ I2 x5 r* t
Project Manger:用于工程项目设置,输出代码设置。3 z) j- T& a# |* O, K5 b
/ H2 J: U9 X8 k, Z/ w
Tools:用于电源管理。. a; N$ O! `2 F0 D$ W9 K

' }7 K4 x. P: s" o6 Y1 E上面“GENERATE CODE”用于生产代码工程。
0 `' L* T" G. ^; v" j1 v/ D( T9 }  y$ A
我们来讲一下"Project Manger"里面的一些设置5 V9 @2 _; s* a+ b

7 V- y' e. ^9 p, J" A" f8 T$ w$ kCubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。+ b2 t1 h  L- _5 v6 ~5 b3 l. U8 V

) i& N! j1 d, xProject(工程管理)

1 s" S3 e9 t" v( C8 P" M2 P1 n% y  p
20200418184246389.png
8 y  s7 ~! M; ^/ s/ }( p8 o

5 v# s* ?! k- ^+ ?" q( Z. t! K) W3 A* i Project Name:工程名称
4 v) T+ S5 c, Y3 J* Y) ]9 |Project Location:工程存放路径
8 b3 P2 g9 y# i/ ^* d0 nApplication Struture:应用程序结构
: v( L3 A' K/ ]Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
3 X* |( t# u4 _, E/ ]7 _: s
2 t+ S9 e! Z% d* d/ |4 i; Q- gAdvanced:相反就是包含中间件,一般针对相对复杂一点的工程。
6 i; S& |, C, V1 t1 }5 y; }* N4 A
/ q# S8 a( d. T8 w3 l5 zToolchain Folder Location:工具链文件夹路径
$ ~1 k) ]/ u9 Q% t' D5 ~Toolchain/IDE:工具链/开发环境选择
( ^  b/ r8 V3 N0 {安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。7 X4 z  @% [2 c' t
) ^/ |" w. u  ?! ~7 a+ B" o
堆栈设置:Heap堆为0x200,Stack栈为0x400
9 f+ @& d: W# M' x% n* }MCU参考型号
# _1 Y' T) G# M- W7 F- i固件包名称与版本& c& }, G. A' V
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。7 h) q6 `. y1 T# x. w% T- F: [% Z
; r9 W, B, B6 S+ G( ?! C
使用默认固件包
9 f3 v2 W* c9 i2 i. t8 T1 r$ \
6 A& m8 f: Y( a% A5 m& p
Code Generator(代码生成)
( z; l2 u1 N. v6 p- p6 n% h, I2 q7 F8 y9 g) K5 @) g
20200418185548983.png
4 `/ v, d: {5 Z9 H% P
+ j, }7 j4 h1 a% C; p
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。9 W/ X/ j$ _6 K7 H. `# P# T
Copy only the necessary library files 只复制必要的库文件。/ \2 g" H4 u/ ?# l! x: r
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。1 @# @( u) x+ X4 n" S; z  k
' @  }+ }! Z# S: v! ]
Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考: z; o/ i. _% c- @
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
+ ?% e9 K# V4 G! u不勾:所有初始化代码都生成在main.c
1 a# ^+ ^/ T# w/ F2 @5 [& P- |7 A' r" o9 D" @7 P4 V; I9 ?0 P
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。8 r4 U* h% C3 T# w' c- c! R, H

& i% ?( i. u4 J' l# M" o) K% jBackup previously generated files when re-generating 在重新生成时备份以前生成的文件% B9 o  g6 Q: C5 [$ s: Z
重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。8 r3 P6 X6 Y$ C9 B
( a; i  a# f" p. I# t0 M( r8 ]
Keep User Code when re-generating 在重新生成时保留用户代码
4 A2 \; R" k5 U7 h; F比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。7 k5 A0 W$ q0 P4 j- P$ _# }
: `0 X, T: p- E/ N
注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
) m3 L/ R. k0 H2 G9 c$ h
# o7 k6 m. R2 UDelete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 9 E+ @4 n0 Z6 ^" F! S
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。
$ Q' G# c! z& p% d; b- h
1 u- P2 D8 N) |2 L% ]" o7 iSet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
  q% p* G6 p3 i$ Q7 K/ T这个做低功耗产品时这个选项有必要勾选。2 a1 n1 T- r* a0 x# y6 S

8 n. {; d. C# K/ [; zEnable Full Assert 使能所有断言6 n# l. L: n5 g% a( _
Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
, I8 f+ W1 L, D8 G( Y9 f
/ e7 X; \, O, t

- j* m5 a4 h. K* dAdvanced Settings(高级设置)* K. {* r2 L8 m

; m1 H, W: _9 ?0 J
20200418190332622.png

- _7 @% q3 s; v8 S5 |0 n- [2 d) C* @( O- ?. K2 C2 k; y4 j, S! g* w
HAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。: ~; ^* C0 I' A4 i

& F# `9 X* R6 `# W; YNot Generate Function Call不生成函数调用/ g& f2 M6 K1 q0 S: o5 b
也就是你代码不调用对应初始化函数。
1 k" W6 W1 {' s/ e
  w; X. [8 x" R0 m% g比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。) |' X! z" W" C
# c; t. A+ x; P8 c
Viility (Static)可见性(静态)
( {$ |! \* X/ j& [7 f- w& G这个就是初始化代码声明为static。: E9 E# _0 H! P& g

5 Q/ g$ [0 a  z5 {  b提示:
( n5 n- N0 L3 Y/ H7 K- J' O$ `( B& z: d3 j. R
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.0 [$ O: a9 g. O1 p) o. v- @! J

+ K' F" \  b# B. A$ G: b- hB.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。
' |. W3 e6 h3 ], O/ D
3 Y) [% x0 [& h: M8 U: t# P; Q
* K$ x1 J3 N% ~+ fMDK-ARM软件安装
) ?! f8 \, ]0 |好了,我们先回到MDK-ARM软件的安装。
4 z1 q/ ~# p" V' n6 B. [% U; A
8 {( M8 A1 F& V7 Y& x0 I1 k* ^KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。$ h& L: E/ P1 L8 P3 h; p2 g, ~

, R) h" |3 s, B) SuVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
# B. s0 g7 u, C6 ]2 v. @- `: C, \) ~& h8 M' a
MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。: g" {& O# B' l6 n5 H, f
% @$ l* W5 o8 C0 D
1、安装MDK-ARM软件,下载链接;5 ~0 N: Y) D. d, V1 v* _* a
( S6 \' A* _/ |5 O) h! {2 [* x% ?
2、未输入许可软件为Lite版本,代码大小限制32Kb;# |' n) x5 V5 w+ C  |
% _# ]. R7 H9 d0 U. T4 F8 h
3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。
! N# c" e9 c9 M& m+ ~: t) v: R+ d5 K& r, Y2 \
ST-LINK设置
; l& O* g. q( i' D将st-link接入电脑usb,安装驱动。4 d5 ~% X/ @6 S8 j& @
在mdk软件中,点击魔术棒工具"Options for Target",6 @3 U+ ]2 V, I- R* @6 W
在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting
/ h' z# L  X: x& V6 R) b' P. F2 h- X0 W( a7 B8 h
20200418191302857.png 20200418191345700.png
2 _& i1 n" H: V# C( ]2 g
4 u: J& e- B) x
     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。
  `1 U7 L  {1 U1 J* O/ T4 M& G  Z1 V4 A* i& r/ K6 i
20200418191425598.png
; v8 o. ]; X6 _/ b

4 F4 B; @) }- N2 J# h  G最后我们的开发环境已经搭建好了。$ S+ @  ^' R- R+ n$ M3 X

5 ]4 R; i6 W; n# n: o  [' p: z0 r; `7 i" ]9 ~" A+ `
赞 收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版