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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
CubeMX设置. _4 _0 `, P+ b' n8 A' R
1、在官网下载安装包安装,链接地址;( r" Q/ k2 V3 w6 b

; t" Q9 H; N3 z. W4 _2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;+ M) }+ J- Q" v4 K2 y0 o  n8 }

% @6 Z2 @+ E- f1 y- ], E/ ~3 [" _. V+ O如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。
6 i3 D0 U# x9 J1 x. R$ g' ]0 V. m8 G) ?; }# e! K2 J3 X$ S
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。
2 J% U2 b4 O- @5 }; i7 |6 h
' e% g2 B& z1 }2 S& A: w8 v; x5 }2 l  V或者在主界面点击(INSTALL/REMOVE)安装本地固件包。
/ D: }  |6 B3 S2 C# p0 I4 L8 j& I! `4 M3 ]; f2 e+ ]0 C, D; c
20200418175903466.png
& k! J5 x( I/ N, c. ~" l$ N
# h+ {2 R, n$ Q+ ~1 G
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。4 [0 W" _3 G& p# t. M! M1 o8 M
$ D5 y' X6 a) d& I
CubeMX界面认识
. i9 Y* Q9 e: q+ N1 W# o, _
" x" ~8 |( m5 L
20200418183040744.png
9 u0 Q- N7 M6 F1 t6 x, f, f) Z; Y

$ e5 ]" k7 R6 ~- l0 U# [! @Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
& r7 X. u# U  Q3 |* H, L# ^8 u  g" O8 b3 C4 s# ^$ w
Clock Configuration:时钟树设置。(之后会慢慢讲解)' R9 {& _4 [2 _/ ~

: ]# O: k8 Y# GProject Manger:用于工程项目设置,输出代码设置。8 e4 E% _9 p" g5 n  |! n
3 \9 ~1 w/ Z5 r6 g3 h" i8 W
Tools:用于电源管理。/ X3 A7 a% G6 ^$ d! I0 s( j7 z3 [7 b

+ b  u0 L6 I% q& R: h3 N" [上面“GENERATE CODE”用于生产代码工程。" E# D9 _+ ~2 F$ l: J; x0 [

  H; _4 R- k# h  D/ g3 ?3 ~我们来讲一下"Project Manger"里面的一些设置
* D, ~5 l, n" @: n9 w1 G( ]' G
CubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。, U* k8 _4 c$ i4 v4 i* B
. {* H+ G4 Y' @; H) a* ^, p3 N
Project(工程管理); e2 o( @2 L# y* L; i

0 B4 K3 N6 h7 r, t/ j
20200418184246389.png

/ _0 i: {- g; u' U8 }
: J' ]* n7 m5 G$ n2 D# N0 E; s1 C Project Name:工程名称
2 W( x2 w# D, H0 j5 I: H+ wProject Location:工程存放路径0 H8 R) M7 E4 g+ ~0 d3 U1 C2 Q/ a
Application Struture:应用程序结构/ \* V7 [' m0 G4 ^9 j2 V
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
0 y7 I, _- v$ u5 A* L
1 l$ y: f% m2 j! H" lAdvanced:相反就是包含中间件,一般针对相对复杂一点的工程。
& c- }- }5 b. O* d7 ]. `5 u2 Q' N: |  i4 o0 u) _  B0 n4 O, r
Toolchain Folder Location:工具链文件夹路径6 }) U4 l' Q( {7 d0 N- E: R  X8 V
Toolchain/IDE:工具链/开发环境选择
% f. \3 A7 E1 H( W: `5 l; v( Z4 p安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。
% D8 E( Y- {% P. H) ^
( Q+ \+ \5 Q2 Y堆栈设置:Heap堆为0x200,Stack栈为0x400
) e: _) r+ [& @6 v$ F7 rMCU参考型号8 V, D( y* h: T0 a$ i* Z; C
固件包名称与版本
. }, D! E- w( f如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
) A6 G' O. @2 i9 S* f0 O9 H3 n& O9 N, V
使用默认固件包# W- v- \3 R5 t7 s1 L; u1 U% o% h7 S
Code Generator(代码生成)
/ `6 V% B! K3 M. i) H5 l' |: K
+ k3 v* m8 A7 t& s3 g& l
20200418185548983.png

" o3 u. Q, P  C  v* w* A# Y1 h! U0 P, y, |
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。) f/ m2 L- e) }" ?) P8 G
Copy only the necessary library files 只复制必要的库文件。( z5 w3 |3 n$ V" h, i1 ^0 K8 \
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。
8 Q/ C* @$ D9 a9 h9 I2 c- I
4 G4 [8 _" d$ i* }Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考; d7 l$ S& e' v! w! f/ E
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件" W, A) {( ?( z' t
不勾:所有初始化代码都生成在main.c
% R+ ^5 o: C7 r( E" H5 |  {- g1 ^5 `" t2 P( ]( y) y4 v. ~* T
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。3 V6 y3 ?; E9 N) V0 Y
+ I' U$ Z: e. v* M7 H3 G; E
Backup previously generated files when re-generating 在重新生成时备份以前生成的文件
  C; L5 a/ O' ^4 @% V8 X5 ]* c) g重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。, U- c; w  D, D! Y8 c5 Q
  ~. N# w: y( |
Keep User Code when re-generating 在重新生成时保留用户代码. E0 e; x( X0 ?" ^# O+ x, c
比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。
6 G& Y9 ?( b" S! s( Z0 B
) ]; M# z; l( Q, W8 G/ F注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。" P/ K( _) s1 a. X9 J3 t" C; S

  z' N: x- T  K" ~' Y& E6 rDelete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 + z0 A( V8 e- o/ A6 i0 t
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。/ e  R- {  u6 I* f, v, C# A* N% c5 W

$ b9 S3 A7 D! GSet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)" r3 F% K) v3 L2 n, L  `; J- s  b
这个做低功耗产品时这个选项有必要勾选。% G( t  T& }3 m$ H4 ]! B$ c4 d

: r" b  {4 T4 _; _% P- aEnable Full Assert 使能所有断言
4 }: P: L: @# T8 d0 c! i' YSelect a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
9 k/ y% d! `; f; h# C) x
- D: H+ e+ D- W  [
Advanced Settings(高级设置)
* R: E" A0 j6 h: f  o2 f8 R% J# J! P5 ?) j$ N0 k0 l
20200418190332622.png

8 c0 ~; w3 ?" }) w+ o; ^& a5 _  o1 O6 [2 y% Y5 h
HAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。4 K4 `) F' A4 i7 `* i* ]6 ?
9 D7 j, ]: o( l$ m- f& h, l( r
Not Generate Function Call不生成函数调用" l! {2 F3 h. P# H4 V( ?
也就是你代码不调用对应初始化函数。; P2 ^% w% Z9 B8 f+ [

$ w0 M8 @  Y0 f  g+ t5 e- B/ S$ J比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
' `0 P5 _6 Q4 [* d! u& A
+ b" g- Z( i( V! y8 s/ _Viility (Static)可见性(静态)3 R" Y4 Q6 L& a$ ]
这个就是初始化代码声明为static。5 i  d. k9 ?: w. k* {

2 M9 s; L! s- C  m2 Q提示:2 n" X' ^6 j, g) j4 H- x1 o2 w
5 I, s* u# S% ]% A  M  J  u
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
/ L. R% d. {# e* N9 K/ u; k7 I
/ G9 a6 d3 r: y; A! u5 {B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。
0 O- n1 P8 C$ N9 m& E8 l( [# c& o6 \3 i& V* F& c, x" }& R5 S& ?* @0 q
. R; ?; ^2 l* P' E" b
MDK-ARM软件安装
$ ?9 ~+ H# w; p% n; R  U0 }好了,我们先回到MDK-ARM软件的安装。! @& _' z5 K4 a7 C
KEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。
/ I3 F! g( G( \/ }" C" c% ^
* `$ y9 M. b( h. F' R, h4 _uVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
' A9 y# A7 ]. E& _# l4 T- b- d  ~3 H" y* S* s) o( t7 C8 M
MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。% T3 q& _+ E# L! h0 e+ X

) M) m1 }; L' i' R0 [- ]: w% j  Z. I8 r1、安装MDK-ARM软件,下载链接;
& Z: L7 S1 ]+ h4 d# [* O- S1 o" X. W! a1 ]
2、未输入许可软件为Lite版本,代码大小限制32Kb;, }1 z' j5 r" L: Z" H0 c. _
: W5 ?- o$ p3 s, n' x7 U4 a
3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。$ h# \& m, Y  N9 a$ K8 @. H: R5 ^
, ~. [1 m4 W" C" X! a. G' T
ST-LINK设置
( p, n' I# u+ ^0 b# E将st-link接入电脑usb,安装驱动。
8 V- j8 V) F/ a在mdk软件中,点击魔术棒工具"Options for Target",* [/ R& v/ Z. d9 p1 N! B7 t3 q, l/ v
在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting
8 J! I1 a: b: G4 y. l" ?: |
0 t: X2 B6 H( |: C" i9 z
20200418191302857.png 20200418191345700.png
! N$ S) w* s1 o( i. G

% r( [- {& u6 V: q, e' _) o     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。, L2 q: v- H! S' k# G$ E

' \% T: S/ [7 E
20200418191425598.png

; ]7 Y$ q" t0 C* }& {+ `
( ^  O6 t- }! J( `: f最后我们的开发环境已经搭建好了。
% K$ }+ L6 s& b: n& E5 ~' ^8 f  Y1 x% s7 {( Z; H  e

  x, ~0 F/ q3 |0 ~
2 |5 K- M# G0 Y, h1 W. G8 `. i
& Z* J# i3 B  R6 N
( N- Y; q4 h/ f+ L! T9 i- K1 R7 Y' S/ {$ P- ~* x( j7 J( s
赞 收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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