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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
CubeMX设置/ G; s% \( L# y8 M5 v
1、在官网下载安装包安装,链接地址;
+ h( Q+ e: P+ T5 G6 Z3 [/ H# k& _4 u* Q  d  y
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;0 D8 z3 r/ F5 A5 a# A! y4 T2 M
# x! E- S: G' W; [6 a
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。* Z7 {7 ~) u5 X) K

2 {8 @: E! h' L- z6 r固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。% ~: v9 H& F9 L# `
5 [# D4 f+ ^- z# k9 i
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。+ D/ o% {! s9 l$ u: D3 Y
1 l8 V/ v0 t# p) ?
20200418175903466.png

& X( {( k- s+ q) r. T
9 B3 u$ @5 o! ^& D3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
6 m6 i& }2 X% R! A! R6 U, K' _$ f# d" v( p4 H
CubeMX界面认识
1 J+ l: D) a  r$ X* Y$ g0 ?5 n) W! ^* V" e' J/ @
20200418183040744.png
7 E0 u1 z# F& p! j
' T  ?( L, M$ l
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
5 J5 p& r: `: [4 P/ D+ z% q% x8 a. j6 X/ q
Clock Configuration:时钟树设置。(之后会慢慢讲解)
' I5 Z* f7 Y6 |) M* y$ x0 l4 }6 {7 ?" o$ y
Project Manger:用于工程项目设置,输出代码设置。& L6 X" F% O- P1 |

7 q: d: @) Y8 v, ]' h& U) E1 A9 P. mTools:用于电源管理。
7 h7 [( E/ N/ `/ r. x9 I. n8 r& p: d) @( O7 H; W$ P: H
上面“GENERATE CODE”用于生产代码工程。+ h3 o* R- x: f1 B2 J: W6 \
8 @" Y8 L" e0 c
我们来讲一下"Project Manger"里面的一些设置2 F% }* n+ U! c/ R5 v! I/ j$ Q

9 G+ d5 m  a4 XCubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
, c4 C# w% s9 E
! e3 p; e# Y6 x* y; aProject(工程管理)
0 U! C4 L- Q$ c0 y! N# y4 b' `6 m3 ]2 s# s. |2 f
20200418184246389.png

; \! H3 z: i( d$ v1 \$ W, U7 X4 {1 j0 ^4 J& \
Project Name:工程名称
3 P. z; x; y- [9 eProject Location:工程存放路径5 X% N3 H, N; P+ `  w% u) X
Application Struture:应用程序结构8 m8 [8 s$ G  W0 Y; {
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。) |5 Z6 Z/ Z/ [
5 a6 b3 `$ u: O/ p: n$ {' l1 V
Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。6 S; i+ {  o" o9 I
' a: x$ C+ r5 P# B; u5 c( F  e
Toolchain Folder Location:工具链文件夹路径
6 F3 V+ i3 E5 m2 DToolchain/IDE:工具链/开发环境选择
2 j7 V7 S* a4 S! t安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。
( r- i' ]9 O1 p* G9 V  ~) L; j& {; ^2 q
堆栈设置:Heap堆为0x200,Stack栈为0x400! e( i! X! i( \# {1 F
MCU参考型号
6 D, {; l" b0 s  \固件包名称与版本' o& ]  o% m' {' y
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。( s, }+ H% |3 Y6 S" u8 j: Z% B

, c4 I9 E: w: O2 n/ ]7 S使用默认固件包% f' w5 S- _) E5 C
Code Generator(代码生成)7 q) x/ J! F( u% I9 _/ _5 a

( x. C$ H: R% L* \8 E+ B6 d  ^- B
20200418185548983.png

% e5 `7 I7 \% ]3 S" C8 v* p; W/ l+ c- k7 ?$ d  U  q  F
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。% k( _$ x' n9 x' `/ P( R4 t
Copy only the necessary library files 只复制必要的库文件。* L; @& _* k: f3 b
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。
) D3 ~' e6 W3 |* v- Z/ k
5 m' }3 p% f4 B* V' t" d3 HAdd necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考: A9 `: u6 t, d8 W6 h5 h/ [
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
8 W' l& Z  A/ M& ]: }; [  b8 U不勾:所有初始化代码都生成在main.c; l" [- Z/ @8 I- n: \3 j

9 i6 s- F+ e3 J& n* A勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
8 e6 S5 j- h5 s" a7 I
* A1 |- {5 C) l0 g1 }  L+ qBackup previously generated files when re-generating 在重新生成时备份以前生成的文件3 S4 ]1 {1 o! ?- V. e
重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
2 s; g- T$ Y  o! y9 H' ~3 q$ f: g( E- S5 J9 P* J
Keep User Code when re-generating 在重新生成时保留用户代码
' X! i, S. e3 Z  D( U  t  g比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。) E( G  _; |$ t+ n
! [1 ?; X' \+ y$ b
注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。' u6 A2 B+ ^+ V6 B$ g: O8 `  E
+ {9 h% t) {: @* ^
Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 9 `8 v- O" U. H) J
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。! x0 S$ ?; Z7 T5 E! b: d' e& x

* K/ x1 e9 K  I! HSet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)' [4 U! w! `1 p1 G
这个做低功耗产品时这个选项有必要勾选。
; ~' E# G% D4 ^$ y4 C) w" f3 K4 y$ i/ ?7 T* I; e& ]
Enable Full Assert 使能所有断言& G4 O6 O6 q0 Q- T& p. G' `
Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)0 L) I* L' M& J, e1 o8 `" S% w8 s

8 r& `- }; @3 \, C0 j
Advanced Settings(高级设置)1 P  |/ i* d% o. |5 J# ^

' @( U* X3 y3 U
20200418190332622.png
7 p* t$ D! F0 J- I4 B; y
1 b' ?5 Z& O3 b/ `% V
HAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。
, s7 d& [: y4 |; `% H
, y, [' i$ B- x, Z! ^8 B6 tNot Generate Function Call不生成函数调用, i  F9 y, B7 Y3 i& t) l3 K4 L2 F  z  D
也就是你代码不调用对应初始化函数。0 f9 Z9 L- m0 r& c. N0 b8 J1 h6 e

4 F- W0 E; I; u4 y9 `. w比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
. J3 t/ l% `, p9 c+ ~! V, E+ |
1 @6 a9 W; \- x! O, u+ e( {Viility (Static)可见性(静态); G- H7 G1 U) V8 Q0 l
这个就是初始化代码声明为static。$ }; Z# G6 ]* E% o! w/ c

* }" V0 i2 z: h' U提示:
  |  \+ V) R9 v4 M8 b) V7 e; `/ O; l. g2 Z
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
' w7 f6 B. G* `/ m1 K
$ R, `; I, ~: ~4 EB.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。# ?* Y: g. W& A5 k$ ^" L+ J
7 Z/ m5 s. Z: t5 ^/ K1 c3 T2 @

# R8 u, P/ g1 _+ l8 i9 zMDK-ARM软件安装7 k( E% l# o: @. w9 T5 n" D
好了,我们先回到MDK-ARM软件的安装。
8 `6 O# l& X5 e: r( X8 IKEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。4 t; x. t& k3 ]. H4 b' S
; M$ V/ i1 a  s) m
uVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。1 T4 R* E2 |; q

& |5 w* b" }6 ^( J7 QMDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。
; E6 g+ N' A: S
/ [$ e8 }+ b) J1、安装MDK-ARM软件,下载链接;
& A7 X( a: y) l8 h" W4 P9 g% L# I: E) r6 r; E6 g7 u/ [
2、未输入许可软件为Lite版本,代码大小限制32Kb;
* S4 J" m0 |+ h
  X( d8 {' V  Z7 F. G' E3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。' `; c8 S6 q) ^0 S& `

/ t/ r* W, g* @, V$ WST-LINK设置( e* |3 n5 I* M& T, l. k( ]
将st-link接入电脑usb,安装驱动。  g# R: s$ Q( W! Q# g7 S- ]
在mdk软件中,点击魔术棒工具"Options for Target",
5 @+ g" v% H5 i; ?' H在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting
2 ?6 F4 L. q& P. R4 [8 P' Q- D. u5 Y1 a5 R+ |
20200418191302857.png 20200418191345700.png
) v" a( V3 X2 p' B; T0 a+ T! ~) l- [

2 q. @9 H' [: L9 T9 w     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。* |- n" n! X/ X8 h3 _

5 l) \; T" d* ]. a" K0 l4 V
20200418191425598.png

' P; A1 L' n; i' Q2 M
8 M- t  C6 x" M* B1 [最后我们的开发环境已经搭建好了。8 z$ @/ {5 b  ]5 g) w
; E- W, O7 m/ ~6 E
) b- j3 b8 {& {& V# b9 p
+ U5 i# a% x# S0 b

5 W% k$ N5 j7 R1 j6 A7 ~+ p- \# H  |

. m' Y( W, E$ P! T
赞 收藏 评论0 发布时间:2021-11-9 17:00

举报

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