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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置
; f, K! p; @+ ^* ]1、在官网下载安装包安装
& r& Q) B7 \9 d7 }3 l$ [( s4 k( u$ z/ C, i7 f. B
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;
! K0 q# t4 s  G5 \; y; \+ g2 v* L. S7 Z4 r. \% m
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。
2 N. @- @  x2 @, V8 R4 |! V
1 k+ Q& U. `+ ~7 H固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。
( k  `3 {! @8 Y# _5 V! m
  |8 @$ \$ [% c或者在主界面点击(INSTALL/REMOVE)安装本地固件包。
" ~) ?0 ^; n% j' |! b. D* x, u# t$ ?2 |6 v* _5 M
20200418175903466.png

5 M2 a+ b$ T5 a2 V, J5 ], x6 ~6 F- v! x# h0 E
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
4 u% o- g0 }  }  g( N; @( o# W, W$ _# D3 w7 U  e
CubeMX界面认识
1 u! n) ~  w+ p, y! y
# D& k! \/ ]! P
20200418183040744.png

3 O9 B9 v. l) r0 f* M; p& x' }# L' u5 Q: j
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
4 M" G3 t* f. U4 r! Y5 u2 n6 M$ R  Y$ f' S* @5 G  s; Q3 F( {+ h
Clock Configuration:时钟树设置。(之后会慢慢讲解): X# m' m5 j% k. D7 }
$ p% z: \, b  G3 a2 l
Project Manger:用于工程项目设置,输出代码设置。
' b0 U( k$ Q" C& K& G& r" k( h
8 q) w$ e5 o$ W, T6 gTools:用于电源管理。* _# Q. e# T0 {4 s7 V6 s! Y

- P- k& f$ K7 D7 A) W; V9 c上面“GENERATE CODE”用于生产代码工程。4 N* b5 x* V9 u8 r
' x0 }. M8 M8 M$ r" ?& e4 H# \7 @
我们来讲一下"Project Manger"里面的一些设置- b% l1 n5 ?. ]' N

  M; e* t5 G. [9 m% t7 Q! RCubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
+ L  a8 |* |, H+ I; `8 s/ [; |+ K$ {6 ]$ B0 ?1 [+ z
Project(工程管理)

* w% v+ E! o9 S' o5 O
& F6 G7 b/ Q' O1 P. M
20200418184246389.png
0 _* W4 p7 |' z

# A- [/ P. V/ S) u1 H' B/ Y) O Project Name:工程名称; _% @, l  a" q$ L5 F# G
Project Location:工程存放路径
. U& v$ b. h: m  c& zApplication Struture:应用程序结构
: W3 Z2 J7 ?9 Y; [- |0 p- G7 A  mBasic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
) B3 x2 G! B9 u7 ~- g
$ ?- Y0 N/ w6 BAdvanced:相反就是包含中间件,一般针对相对复杂一点的工程。
+ L- d. a1 I- K* b. e! U. [
2 Q& H8 d8 \8 O- `( TToolchain Folder Location:工具链文件夹路径
6 o. D4 m. G# q! q7 QToolchain/IDE:工具链/开发环境选择7 N7 u! {1 n4 C) {2 o7 M
安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。! Y) T( x, J: [8 |8 ^
: V" ~& n+ H$ c2 `% z/ B
堆栈设置:Heap堆为0x200,Stack栈为0x4009 P8 Q3 K) Y( z+ c2 W+ K$ U
MCU参考型号
/ W+ N3 J( h1 Y固件包名称与版本8 }( ^" E6 Z# l
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
6 d5 ]4 `  a: [) X1 S6 Q( |  U9 i& h. i. n5 F6 H# v
使用默认固件包! l- t$ O2 S! ^9 {1 V

  V+ C6 P" M* i8 i; E
Code Generator(代码生成): q3 c, N0 x5 t- I0 i1 }/ y
* C; T' b& M2 |. `! f
20200418185548983.png
( X/ [6 P( w: G8 d( J+ y; Y
3 A* T+ l- B8 e6 [/ y
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。
- ?  C3 E. I( y* R1 n7 k; D6 HCopy only the necessary library files 只复制必要的库文件。1 M& O4 P9 @1 g2 q, O& U9 C  G
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。5 s8 Z- `% _0 ^$ z0 o  F

0 r6 Y# X6 K/ i; I9 a7 U% sAdd necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考+ }6 O  T4 U+ k1 r. H) \2 w
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件" ?" [8 z8 y2 e5 V+ g2 ^
不勾:所有初始化代码都生成在main.c
5 R* U1 B- _) e% \% Z1 f9 L. x: }, x
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
: @  }9 m7 Z* `# v
7 n# t. r; C0 c9 z" B* [Backup previously generated files when re-generating 在重新生成时备份以前生成的文件% }( s6 I0 {2 S: y' [$ ?& O
重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。1 v7 ^* Q6 I9 W% Z& T1 S
# O$ q8 r: J% p7 L% }7 v. m/ X
Keep User Code when re-generating 在重新生成时保留用户代码
( o) b2 z& d4 E7 k8 p, ~比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。
) U( i3 }9 `- ]) W* ^+ ?
2 N$ U2 r3 w9 @$ o$ g% X; c注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
4 ^  h, a/ o# Z' H: A9 e) u1 D1 h/ U, R1 ]4 s# d; O; [& a6 P
Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件
  u5 c# w- @- l比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。) S: ]2 n* p5 Q
; c7 U) g! D( M9 j% z4 V: [6 V
Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)$ n( V" _9 t& n! n+ u& A" O' ?
这个做低功耗产品时这个选项有必要勾选。
" R: _' o: A) |. P4 x3 e
7 A2 Y4 h7 J% `6 CEnable Full Assert 使能所有断言
. u6 @9 Y6 \: p% C8 rSelect a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
% N, t& O; v' |" M# l+ b3 @% B& L9 j

( ^5 h4 i$ Y1 ^2 E5 O: T5 GAdvanced Settings(高级设置)
' J' k$ ^* }5 K! B
  [; p; e, B% N) c- \6 @3 a
20200418190332622.png
3 Q$ O7 q% ~' q
. a; F) i1 Q3 f6 g
HAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。* B8 s& H, c3 J7 K

+ `! B+ Z* D8 X# V$ xNot Generate Function Call不生成函数调用& R5 X, b6 R) }% ^4 I8 z. `( f
也就是你代码不调用对应初始化函数。
6 W/ q" ?( D# S: i1 P2 F4 ?& x( k
+ E8 ]- b* |! I) ~3 v1 y# t比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
2 b2 P) s6 O  k1 }
; J$ y' N, E, e, _Viility (Static)可见性(静态). _" ^. _, }$ e2 b
这个就是初始化代码声明为static。
! b9 O, l1 ^) Q4 u6 D& t/ ~% K& S& O) I. w8 _
提示:$ E9 g0 M1 m5 r9 s+ y! s$ p
* O( {# ^  g8 |3 f2 m" R/ o6 H0 K
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.$ F2 j" G" x. z% ], Q6 ^5 w
% D* D7 ]+ {: A/ T1 A2 |5 H  o7 l4 ~
B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。) P+ x- E1 m6 l* S% q% Q
# I5 ]% f  _* W9 x- \& t8 O
# _, _/ [  R* x# k; ?: L. _# i
MDK-ARM软件安装
2 r' e4 l9 h- O9 k. @* Q好了,我们先回到MDK-ARM软件的安装。
0 W, s. @% g" I; p- E- o9 H5 K, Q* ?+ }- J+ Q0 v2 g" C
KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。
5 @3 i  V4 C& e4 t0 S+ l! s+ b! i; i
uVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
+ j# c% a8 Y, X' t! W! U# X; i0 M
0 X7 ^9 r1 {6 T' }1 l: n0 |MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。) A1 E8 i5 I: o. X+ @

, ?: D4 v; u% B3 Y  A% @1、安装MDK-ARM软件,下载链接;& y  K8 w/ {8 M/ w3 g; j( K$ O! v. I& s
# ^* M# o- b$ f8 I! _
2、未输入许可软件为Lite版本,代码大小限制32Kb;  ]$ T6 i# H7 s0 B9 R
* p* \8 s1 v5 n/ Q2 i1 R
3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。" E" h( v+ p( a1 t+ a# @5 g1 n
2 w2 Z. ~7 r: d$ l7 h8 M
ST-LINK设置3 e; p( I9 N  i/ N
将st-link接入电脑usb,安装驱动。# d2 R: L! D! @" m$ P: z
在mdk软件中,点击魔术棒工具"Options for Target",9 O, Z+ c. h; ?$ s, L* U2 {
在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting
" i5 K4 J& L% z& C
) L5 f! t+ G" r  H4 L9 u# O/ z  l
20200418191302857.png 20200418191345700.png

; }6 m  j* P9 V1 j' }5 G0 r* r+ i+ \- q. H* f" Q
     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。
; x* h& [$ p& M: u2 O9 V
3 z+ I6 e  t9 I
20200418191425598.png
. O  Q# U3 y8 \; t8 d0 R0 F, E
5 a" x2 s4 ]" P% g( Z# Y  t
最后我们的开发环境已经搭建好了。
+ H8 s7 w" t& s( f2 d. k1 G
6 ^: C' A/ h; [) m" g" E7 l+ l- B" H0 l, Z
收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答

所属标签

相似分享

官网相关资源

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