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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置
& J* g3 w, f) d$ @* S  B1、在官网下载安装包安装; k+ U1 Y- }$ l0 I7 b6 w. T

+ |0 {- t1 c4 O: p2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;
- F. g$ z1 U8 q
, m% N9 Y0 U+ O5 y8 [如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。
3 P4 m. y% W5 h( g1 I6 L& l6 r- O. W/ Z
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。3 G6 Y0 x3 h9 [- h5 l0 p" [6 M

0 P( z, I2 z% ?# D; l$ _或者在主界面点击(INSTALL/REMOVE)安装本地固件包。
( |! n0 p6 Y, M% V
2 n* P9 B# p* E  v  \" U6 v$ |0 F
20200418175903466.png
; R3 @9 |# o3 [. F; t+ C( U+ M
, V6 ?- l3 F9 L+ ~4 s
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。: a9 T  l" x2 @* }# J

9 L- O$ O2 o4 M5 K9 ~CubeMX界面认识
) @; P& I' J8 ~6 x- Z/ W5 m. a9 O4 @
20200418183040744.png
# Q& S' F, U, D
1 M7 ]' i0 H7 R; D; h# N: Z: ]& l" F
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
* \/ ~& S' E$ ?+ ~% T. x+ r. X3 G) S$ f7 l: B
Clock Configuration:时钟树设置。(之后会慢慢讲解)4 u, d! s. S4 R* T; J+ M+ a

# |% e8 ?! T* A" v/ j' \" \Project Manger:用于工程项目设置,输出代码设置。/ x% X8 ]1 z0 v9 ?" O

: Z/ {# H0 o7 |' mTools:用于电源管理。
' A2 t) y: D# w7 M3 X$ J
: [; B( T8 H. X8 b9 P9 t0 J* s0 J; s上面“GENERATE CODE”用于生产代码工程。* W% h. L+ V" [
$ J0 C) ?" `# m  e: x
我们来讲一下"Project Manger"里面的一些设置
& R( S: _  @) X$ O0 g% \* n( h# P, Z. p/ s, q4 f5 E1 I
CubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
% K6 J/ g- R* d. M4 G4 s6 n: H- v. u  o2 G& a4 o
Project(工程管理)
  a3 b6 n* H% K3 L* x6 |. X
; \- [) }5 Y, `+ S& C' ?* `! r/ N
20200418184246389.png
. q2 k; ?4 k3 Q

# n5 ]1 ]$ R3 q$ J6 }7 j3 A/ I" n Project Name:工程名称, W2 o2 R: m* K0 z$ h- D
Project Location:工程存放路径
) B1 y9 N% {; U: Z: H. t6 ~Application Struture:应用程序结构) @3 I) E7 e7 C( Z' X5 I( Q
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。' {6 N% k' h3 n$ ]4 H% j3 c
, _. R2 P2 m  Y4 J6 B7 w. h! i' N
Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。
4 Z) ]! P" k/ w4 Q; a2 t# k" v: R* b( \$ }" H) n8 g  V
Toolchain Folder Location:工具链文件夹路径4 F8 m( A$ e# i
Toolchain/IDE:工具链/开发环境选择( g9 h& U( B) l) H
安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。' D! }5 M' e3 \" j9 h: _
3 N8 L! h8 H% Q$ B  O- g
堆栈设置:Heap堆为0x200,Stack栈为0x400
# q6 L$ E) |7 _2 f+ P! Y$ MMCU参考型号
2 J: |1 d! P  c3 J3 z固件包名称与版本& Q, n$ g- ~+ T: C+ `( w. I
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
, q2 h0 _7 s; X
4 @4 E7 t( n5 T' O( r使用默认固件包
% l+ F9 P/ f/ h* O* t5 A( Z2 ~9 S# y. x9 J& m3 K' X  ^8 _
Code Generator(代码生成)
1 R. e0 h" O+ j0 k5 c5 @
+ K* t0 |& R6 ]4 J  J) B
20200418185548983.png
# a% C* ^' k% }

2 L" d& a; e' F' eCopy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。+ Q# Y( g, d+ [$ q
Copy only the necessary library files 只复制必要的库文件。- K' l* ~0 V1 @6 y( E! B
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。
4 A$ U3 m- I! j, \" r1 m0 O# s  m6 @" n7 W, x) I
Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考
, S$ Y4 G$ ?, k6 H  ^" oGenerate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
9 Z& N: i) Z% ~不勾:所有初始化代码都生成在main.c
' h$ F9 ?6 R! ^) \  ?3 r2 l$ B: c6 e3 Y% k
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
5 ?3 o9 k$ ?; |( v
+ T/ g4 K$ G) P; GBackup previously generated files when re-generating 在重新生成时备份以前生成的文件
9 \( H) z8 j) [" O$ x重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
9 p* n7 A" b4 `: j; ~- Z1 J
4 f. A9 E3 t0 C& A( PKeep User Code when re-generating 在重新生成时保留用户代码
9 ~. Z- r1 u4 F+ ]; E/ r3 f9 J1 Z) {比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。
. J9 L2 `4 e& [$ t4 ^
" u" H  M5 k/ I2 o注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
6 W8 v- {5 R  n, U( S
! \3 e9 [6 e( fDelete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 - A2 L+ g) R+ M. H/ V; h9 b
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。
, W  t4 o1 E# Z! p7 M. g# T8 |$ A" _
$ m2 ~, s  E& d1 A$ ~5 FSet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
# r- h- p3 g1 E$ E* y) @5 N这个做低功耗产品时这个选项有必要勾选。  x/ Z$ a+ Q- m8 L
8 ^3 O6 n- b; S: y" [
Enable Full Assert 使能所有断言% Z6 w2 j$ F+ I* q# k
Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)/ f: e* S4 b7 Y2 h

! d, U" v! C' I" {* V
" |9 I- |/ B, O6 j  Q
Advanced Settings(高级设置)
; t/ O! _6 F0 M9 a1 e1 M2 G: ?3 f1 D: h3 e! U; @" k
20200418190332622.png

- e6 |  b8 c+ l8 w6 Y+ x& n9 h% a
2 C9 p5 u2 S4 |, X! c, YHAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。
8 _' r; n* r' P9 J8 }
4 R9 Z. y( K% W- eNot Generate Function Call不生成函数调用
0 v6 P! F, [& @也就是你代码不调用对应初始化函数。1 q1 p* N# U: A
8 p' c: }: _( F  r
比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。! A% b1 `- G% Q( o, Q# H. ~; P
" `' A7 [% _! Z  W0 I4 w
Viility (Static)可见性(静态)# Q) e8 A& B# A
这个就是初始化代码声明为static。0 i, z8 }- C" M% K' A8 w

, i6 c8 C6 }5 |提示:* @/ S* i+ L6 N1 m
: K/ E6 h8 j% T: d
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.7 E, ]5 f/ y3 ^: e7 a/ J) E
2 Y2 _' x; Z4 p) V
B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。
; r  x3 _; d0 I* B! X
2 w- W1 U% v0 R2 p4 P3 ^7 D# `/ f) |. V# H0 Y/ s/ A  P
MDK-ARM软件安装
. H. M. ]/ {; |" t5 s  d; c2 j/ _好了,我们先回到MDK-ARM软件的安装。& n7 l# H* e. M% I0 z3 A+ ~
, o, L8 v) G3 J
KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。- x% j9 ]0 V& S9 A- |& S# C3 p1 ?

$ A+ x# s. y7 L( z& C6 AuVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。( ?0 Y: S% \) @1 m

% C; F  l2 x0 FMDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。4 p$ }" i3 t& o( w
( h4 W, W4 Q% l! t7 x, V
1、安装MDK-ARM软件,下载链接;
$ L9 A0 p- p4 X! Q2 u3 M8 G$ Z/ R4 i6 {* S4 `1 K0 G
2、未输入许可软件为Lite版本,代码大小限制32Kb;+ a6 S  J) T* C: f' ]0 T: C* w

. R6 O- Z1 U& {: j3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。6 @5 D) A: F1 `+ n9 B3 f$ s+ j/ h+ P" K

0 a  j$ H1 c# J" P5 g. iST-LINK设置
4 b. O; O& [* j将st-link接入电脑usb,安装驱动。
% {1 M' C0 \/ m, T在mdk软件中,点击魔术棒工具"Options for Target",
6 F0 K5 \  _0 y% F/ A$ ^8 D在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting& i$ C+ T9 X  E1 ~, ~7 E  O
. ]2 D/ J+ {. V) u( `' A5 T
20200418191302857.png 20200418191345700.png
6 L! N; H# q: @

- H4 k4 g" q2 b" q3 ~% r/ `     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。( ], \& [: K! {, a9 g

5 `/ W- H8 e1 ?# ?6 z! r
20200418191425598.png
) |, F! l5 d6 N0 n- R% }2 w
3 U) a' ]. I1 Y
最后我们的开发环境已经搭建好了。
4 g  S& ]& v& G) j5 ~: a9 m2 V/ r$ l
% l, |4 J; G' d. S7 P3 S
3 j% P# x2 V4 m' \
收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版