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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
CubeMX设置4 x2 d: [7 J( y' r% X
1、在官网下载安装包安装,链接地址;
; P6 v! [; j; w& a! A8 ]
) C* u% `9 p: X8 m/ N: f4 o' A2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;! ^4 \& J3 c  M6 g; F9 _7 @9 e  x
, r5 Q/ m# {/ C: O
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。0 s% v$ L6 ^; R7 o% K
& K) a0 u: ~5 Q+ ?
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。, _9 E6 v% N1 h$ Z% B; [5 G* f
" K, e' y) u3 T
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。+ D: y$ c0 u  d4 C1 o
; F' H* a8 u' f# N% u1 M
20200418175903466.png
2 M% b) `/ H7 O
8 @9 r7 K# J- \5 Z5 G  p
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
' i8 p; H' ?+ {, `5 @2 d2 c" K) o, I$ r4 y6 ^
CubeMX界面认识
' B+ c+ G- h: R8 C5 J# Q" J! h  z- B* F8 U5 E4 ^  b, ]) _
20200418183040744.png
, Q- ^# B$ ~; O0 |2 y; U

& }% {9 N1 [/ h, Z% ]7 rPinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
% W: A: v( b, o0 \: V$ e8 @+ @  M# B# Q1 T/ w6 A
Clock Configuration:时钟树设置。(之后会慢慢讲解)7 b' |- H2 \) A1 G0 n

, N) V9 N' k- y% uProject Manger:用于工程项目设置,输出代码设置。7 u& g7 @" W4 H% W9 u

: v4 e. t8 X% z' C  I7 G3 {Tools:用于电源管理。
; |. P! }. `7 W+ s* `0 U0 c, v
  ?+ G6 D# p/ S' @3 I上面“GENERATE CODE”用于生产代码工程。
! c2 L3 h/ A! m; Q! s8 L0 }/ [) I1 ]) Z# D+ W
我们来讲一下"Project Manger"里面的一些设置
4 P* l2 C$ w7 f* j) M$ W
$ W  Q% q6 ~2 k3 |* zCubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
' @2 m. a1 `( D1 W/ m) ~
1 m% L2 `. x# J5 `, x- FProject(工程管理)  @8 f0 _) G+ I# j$ f
9 ~0 m( ?& [) b, l! C# g
20200418184246389.png

8 }# b$ T1 V) u8 E; `0 a9 o
6 ^9 I/ B. O0 w7 F8 V Project Name:工程名称
. h: O1 z0 d6 ?5 ~Project Location:工程存放路径3 b4 c9 H, Z; a- I6 T
Application Struture:应用程序结构
9 [) u# k* `  k! a, OBasic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
: p5 A/ G+ k! |0 m+ Q( T8 x. M( B+ _" b4 c7 L
Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。
8 M( w+ w( [* b8 I! n7 b5 q2 V+ a9 Z, d9 F! g2 e+ W
Toolchain Folder Location:工具链文件夹路径
2 I4 a: T+ V7 w# g  ~, R$ ]Toolchain/IDE:工具链/开发环境选择
- V# g( f) Z. @# q8 Z( l& a安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。. z9 l+ p" p0 e9 ~6 g' c" }5 {
" b6 Y6 {. q! v) `4 N+ Z+ l% F
堆栈设置:Heap堆为0x200,Stack栈为0x4000 e/ o- ^0 K, {: ^$ Q- r( W# F% r
MCU参考型号' t  j; i" Z! j
固件包名称与版本* `7 K- I# I2 r
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。: \& |$ F: E  u% j) R/ \
9 s) m6 c% e6 Q. K! z; c5 ?" `: C
使用默认固件包
: x: t) n6 H. L, ?# D" k' @Code Generator(代码生成)3 e5 N1 D, B: }- ]7 K- @- \5 Y, x4 \3 T

8 K! P. y% }; ^2 K+ k! w
20200418185548983.png
2 g( f& y0 q7 |$ q' ]/ U
$ \% {( q# w& s2 y
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。
( G& w/ M" q4 ]1 S- xCopy only the necessary library files 只复制必要的库文件。
8 p$ a) W! G: A这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。9 ~7 k8 e/ Y; ?4 \" x/ f% {  T

' w1 s& J5 N; a$ M% zAdd necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考
% w( u4 M! k6 M' c2 I& K0 S: c/ uGenerate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
) J1 ]/ Y5 e! S! V" u不勾:所有初始化代码都生成在main.c# G. D4 k" L3 B% }2 |
1 K6 j. R0 V0 ?- A# b9 u$ D
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
! r! w6 j% X( \0 j2 I4 w1 g& v1 J1 z  u/ L3 n' g
Backup previously generated files when re-generating 在重新生成时备份以前生成的文件
- k) Z: s! r5 a, B: X' Q重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
7 [. Q$ `8 W) Y& T+ U. I& z5 s% A6 }2 N; g- m7 J
Keep User Code when re-generating 在重新生成时保留用户代码# v8 N7 M8 {+ R$ }
比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。' s& S$ B8 }1 {; _; `) v8 z6 n: ?
8 t7 J; Q9 E) F
注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。2 d- n1 L/ P; F$ C
; L& ]% G4 i' ~- }( J/ i
Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件
7 P- q! r4 p' X4 j5 I比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。
0 `4 N0 U2 _: I, u5 W
/ L( L, Z9 Q  MSet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
. o$ X# z. V/ Y+ p. z2 u+ f这个做低功耗产品时这个选项有必要勾选。
5 o: P. U0 w0 @
& p5 Z+ `/ m0 b6 u3 K4 F5 z! M3 v/ ~Enable Full Assert 使能所有断言
+ Q0 F) v5 k: n2 kSelect a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
! w! m; @0 N' C0 h' x7 _) S- R: C& Z# K, i' S# }' i
Advanced Settings(高级设置)9 E$ Q% w! A1 H/ `, \( W
7 S3 V3 y) i' l) K4 j8 Q7 M
20200418190332622.png

. P4 \6 _8 i: O5 G( t; H
3 A! g" k6 A% OHAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。) G4 `9 e1 c" p! ~% x4 c; y& `
% u" [+ h  W& r% J# H
Not Generate Function Call不生成函数调用( H# Y! ?9 e/ c
也就是你代码不调用对应初始化函数。
+ q: L# G# M; z9 N1 r: W$ j* m3 ?2 s! |8 E9 A4 p) q8 v. ~
比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
/ Q+ j! W8 L8 A( W  Y: R4 q) W0 g8 O$ c! p
Viility (Static)可见性(静态)' u- `' x' b% d
这个就是初始化代码声明为static。
% g* |% _0 g, g* G; i4 x1 i+ o  s2 D
. K+ v0 h/ X1 i7 t( C. m% u/ e' A提示:) J% d% d) H0 g& E7 S+ ~# ^
$ ^) ?& ?6 x3 c/ Y) F
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.+ }" }4 H4 N  m0 Y

1 H* ]1 {9 `" n# O5 V: HB.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。" e" V" ]4 m( {* X5 r. q5 U5 a2 K
/ B6 q8 D$ n$ }- X
  C3 s* X" d7 e
MDK-ARM软件安装
+ N( s% ~( K" ?好了,我们先回到MDK-ARM软件的安装。% u2 q  V4 _& K, H/ q; h  J
KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。& x" U$ b; S6 F# f
4 o6 b* z/ `; G8 A8 t, Z! y
uVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
+ Q8 M1 i! r3 E5 k3 q1 Z2 U$ ?/ c/ X% I
MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。
; s6 G: ~( Q7 [6 `
8 t3 M& d% {- r; ?/ s& e) i" l1、安装MDK-ARM软件,下载链接;
1 u3 k5 O4 j- w$ Q$ Y& p4 G0 ^& c" b5 ~5 _) e
2、未输入许可软件为Lite版本,代码大小限制32Kb;
- N" m5 z6 J" U: t% A* n8 R- E' `$ M2 T9 R1 C9 N; P( M5 o
3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。6 X+ Q' e1 h. H: Q* @4 G+ v& S

- ^; s' t5 Y# v) W" g" z4 X9 NST-LINK设置
  m+ f: U/ M! @! \将st-link接入电脑usb,安装驱动。' S$ _6 T7 W" X, k# O
在mdk软件中,点击魔术棒工具"Options for Target",
  b( T6 _! m/ d+ ~, h在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting3 a+ u. A# h  `8 i. k& y; T

5 C4 Q: {% r1 G# {; L' |9 O
20200418191302857.png 20200418191345700.png

" I# K' `# w& A4 ^$ `, E: j5 o; f/ K4 g, e5 }8 a4 T
     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。
! B, L% R$ L1 c% s: S
. a) S; C9 F2 V0 q$ ^7 a" b# G
20200418191425598.png
2 f' |8 H% J5 I4 ^7 j, z' c

; S2 M5 n+ \6 I( ]- j: ?  {最后我们的开发环境已经搭建好了。
% k7 g" V6 e" d# ?' q* o
2 J' t' [* m8 `1 @$ M# b5 O: l& c$ c9 W3 C5 k" J' r3 I
7 F6 S. [5 w. P7 p$ S. g1 G) A

8 f' m6 X  @  _& [) H7 |# K) L" q8 P# d3 x% o! k) p& ~( c

1 e* k- x+ S. w
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版