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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置
$ r" m4 V  P  h6 a; h5 H1、在官网下载安装包安装
6 O$ W! r3 i6 x, _7 d: o+ r, H
* V& d2 T1 `, u, H  `. _2 v$ \2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;+ P3 i: j( @1 y) K) o+ E

! \( ?. R* A' J如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。
7 v, G1 ^- Z; v6 f8 y. R; p2 B( h+ g5 `/ E, d2 m. U% R
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。2 Y# o" k+ G( z; f) [
2 Y# g9 \' a; ]$ q3 R
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。
( ~2 U* `& U7 G# P7 o) X
4 V3 t5 e) c: f9 s& E, r
20200418175903466.png
! J" @, s" e" o7 @% m/ C

( c$ U! ?' c) i4 ^' \4 M% d( l3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
* H0 I! W0 `+ s  W  c; E: s5 T* |- J- H" j6 M2 l
CubeMX界面认识
% R. i$ P* V( e; _: I% ~
' u4 Q3 \6 j# m8 K5 |* M( _
20200418183040744.png
( @7 c- f+ c" M: X
  o1 p" t6 H* z" R1 h: j! m
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解), X7 x) N  w$ V- ?# L, [) q6 \

/ ~/ S1 L' e" z9 c* y. ~Clock Configuration:时钟树设置。(之后会慢慢讲解)
3 q3 J; D. C  b# L) X
! u( h) {6 D& W4 Z5 TProject Manger:用于工程项目设置,输出代码设置。7 n' E- u6 U5 x' d3 f0 g; T

- [5 C& h0 I: P0 ^+ \% }& C; zTools:用于电源管理。8 u- s' S1 I/ d
: r* h; B1 d6 R. D
上面“GENERATE CODE”用于生产代码工程。3 K) A8 H& E. P3 M5 u( Y% J: ~: x- A

9 y5 ~7 z$ }8 }我们来讲一下"Project Manger"里面的一些设置( t( Z: G1 V( m2 Q7 b" Z% _

6 a$ r0 p5 }& uCubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
9 ?/ }% V8 Y' o) K/ o9 o/ x" m8 U, o1 M2 p5 \
Project(工程管理)
1 O9 c+ s* h, Y0 r( L

+ v0 n% K4 e, |4 b8 r" L
20200418184246389.png

8 I* o$ A+ I/ ^3 L$ a' V
! X5 I9 X% V0 a7 a Project Name:工程名称
  o; V) e4 H3 w0 Y) ^4 uProject Location:工程存放路径6 y/ b2 }) \, g* Z7 y$ H1 ]' `; s
Application Struture:应用程序结构
) {* a% Q# I- ]+ g0 kBasic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
. F  c9 h9 w9 Z) I6 c" }; n
- o8 O/ z/ `8 |2 ~* s0 H! I6 e- bAdvanced:相反就是包含中间件,一般针对相对复杂一点的工程。
! q. r. Y4 ~2 P2 D
/ N* P4 `% b; }! sToolchain Folder Location:工具链文件夹路径* @. S, M- `& z# }  R
Toolchain/IDE:工具链/开发环境选择
" }: v: r; H. j" j安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。
5 O2 P& `3 |7 v, z  Q! f, Y
; R1 D+ |3 L" @: r+ o; o6 `堆栈设置:Heap堆为0x200,Stack栈为0x400
/ ~  w. g4 r9 A9 l7 J4 PMCU参考型号7 Z; @& K6 h& v1 ~3 I$ O
固件包名称与版本
: B9 k1 I5 O) \如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
/ m: b/ _- Z- ^5 O/ D% \: y$ Q( l* d# r5 L- P  W
使用默认固件包3 P- z* M" g. \4 s) _
$ T6 m% y/ r2 v  B
Code Generator(代码生成)
) _: n# D; g$ a% h1 F  ?( T
5 R) X. q" J0 r
20200418185548983.png
- k' ?: y% A( v& k# B
; c) H: {$ n& o
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。
' }3 X7 E& `& P% ~: mCopy only the necessary library files 只复制必要的库文件。4 c9 t) T1 L0 O1 P
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。  j" e. ^8 y0 L$ g) O( q/ q) K

/ E/ m7 u& }& q! x) |# RAdd necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考
& D$ y# d. m( n5 k- t" x. F( gGenerate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
, w# }; E  I) |! q6 p; N不勾:所有初始化代码都生成在main.c
, ?* G6 q7 [% o  R0 r2 N8 q  R* t
0 Z9 {( z0 @# x+ ~7 o/ `' ]/ R勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
2 ?( M' G' a6 x3 \3 o, d2 n3 T1 n8 b; a% r, K1 `' w# Z- B
Backup previously generated files when re-generating 在重新生成时备份以前生成的文件
6 u* O9 t5 z, s6 ~' x. c重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
* c! B/ j( W% ^" n( S1 f# c) H: A1 ~2 T- W
Keep User Code when re-generating 在重新生成时保留用户代码
7 K3 z/ }) G8 o5 i0 o; o比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。/ P/ H6 ]: k( T9 N/ v; F* W5 b

2 C+ f; l8 ~9 O0 V注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
; n* O5 p+ j0 R( T1 W0 O
, i; Y  A4 {* [8 BDelete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件
( ~% A" S8 R# j8 [比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。
4 f! u" r! _/ ^7 Q+ |! Q1 r0 Q9 L0 j! q
Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
# q8 ]  l% l" k. |( T这个做低功耗产品时这个选项有必要勾选。2 z' {% `  J+ v" _# q/ v& u1 ~
( _+ k  A0 q4 p3 V* N4 n0 Q; r
Enable Full Assert 使能所有断言
0 B" s% q7 a' t  }Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
; \& l9 \& U8 L0 n+ W% Y0 _2 a' _1 A2 x* Y# R3 a* S# P5 s& o
& e, l& @4 |' ^- b$ u8 R. a
Advanced Settings(高级设置)" T4 F" m* J& P# e* A
- N8 I. g, z! P6 R
20200418190332622.png
+ {5 j; K+ j/ Y8 ~& ]$ Q

  C$ a6 f' b# v( KHAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。, U9 c) N$ F) c+ r

! [$ N- e% `: @Not Generate Function Call不生成函数调用
- W) J4 C& s4 {1 O" r0 P! D也就是你代码不调用对应初始化函数。8 ?. G3 q: w% v

: ?) B& d: @! v比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。8 t. `) D1 \( r* a+ N' P& o! a
0 H! G% C6 L" Y
Viility (Static)可见性(静态)* j+ i$ \$ p2 ?+ f, k' L
这个就是初始化代码声明为static。8 I* \5 S" R9 {! H8 h2 t

' x. j: _; @9 K: ]4 Z& i提示:
8 h5 p  p9 j5 y8 ]- M5 |* L
' O: I- s% l5 N2 l! E7 z6 W6 sA.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.$ l9 S* v, `  h0 Z
9 A# A9 x3 l2 h7 R0 H8 H- W
B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。
  G1 _6 c+ l0 H, v2 i4 i0 @  t9 j8 C. l& @

% N) H+ O3 T4 VMDK-ARM软件安装
+ q3 h' {) @8 \3 b# R. J: {好了,我们先回到MDK-ARM软件的安装。7 }. \+ d& f1 H; |: n$ K; M; J6 q% o

' |5 o+ i3 c/ `KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。
& O, h6 V4 ?0 W; _2 J1 t9 I
5 W/ V, e% t; [1 u' @3 ?: tuVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
- J5 x2 G7 l) [9 q% x* I3 E
, r$ Y4 _0 |, L8 {7 A4 ?! }" SMDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。
4 B( ~+ R! R! U2 f
0 J6 f. O8 B6 M' l1、安装MDK-ARM软件,下载链接;
4 ]; J8 g  D+ w! I: A1 Y
2 O2 `6 q" E0 P; e& ]# S0 C2、未输入许可软件为Lite版本,代码大小限制32Kb;
) N4 ^  T% y% V# i$ r+ ]8 _- l$ ^" z2 n/ p' K
3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。
5 [* y* F& K* D, L: L. i4 |' U; a' b, ^" y
ST-LINK设置; t$ V, p6 A1 j9 W7 w
将st-link接入电脑usb,安装驱动。. N* l. Y8 k  Q8 ]6 R; z
在mdk软件中,点击魔术棒工具"Options for Target",
) B) m7 ]& _* g6 ]$ g* R: Y在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting4 J0 O- S9 f- L
# y! N2 r# @: D- f
20200418191302857.png 20200418191345700.png
$ ?5 k5 @" g2 a5 W1 _# G

4 U3 U9 l" Q1 D/ ^( a     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。
2 p/ N8 E$ T+ n7 o6 V0 \* H; P. |% T6 S# O4 S! K. n
20200418191425598.png

+ a3 Q9 Q' E# n2 Y
$ I2 x1 b, A. z8 {6 `/ d5 L最后我们的开发环境已经搭建好了。
8 G3 v* X7 ?, |9 {9 d: `; k, F" d4 v: F6 F/ C8 ~3 N

7 K6 s% h9 y. r1 ^* A9 s
收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答

所属标签

相似分享

官网相关资源

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