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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
CubeMX设置* N% f- i: i1 d4 v; {
1、在官网下载安装包安装,链接地址;
. G) X  k6 l6 _" k$ [6 V9 J; @6 P& x, L4 T- R
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;& r8 H( S5 D! }
6 g& p' L8 t% T
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。
- y/ c* i- e6 X, W
- U& u4 Q( N6 X" O* Q固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。/ F# M9 H2 F4 S) F$ c9 ?% h
9 A/ W; u  O2 k+ {& z
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。* A% u% F+ p% k  i0 r
! q# @3 n: C* S6 p7 o; l
20200418175903466.png

$ A5 C/ q) f' }: b6 g/ W0 x) L) ]) U; v' ?+ {- t4 o* I7 D
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。. p/ ?5 X! n! S7 F, }6 y# l
- D! K. p2 w( W# o' p4 l5 K: y
CubeMX界面认识! i) w) e# v, S  {& Y' t+ w) l

3 B8 O5 }. L) l1 I2 s  S+ T
20200418183040744.png
2 J$ z& k2 Z7 ?1 ], [% ]

) M' N4 i. ]& Q% Z  t7 X" iPinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
0 {7 ~8 _* A& y9 m+ E  |. l: D( |7 J& R; P/ Z/ t
Clock Configuration:时钟树设置。(之后会慢慢讲解)0 k6 d% F2 _$ F% W' {

9 e* n) n# I( Z9 c. m  ]) EProject Manger:用于工程项目设置,输出代码设置。# T( X5 t' B, P! z1 b1 W
4 y- E6 H- u, z# [$ T" q) ^# o6 M* ]
Tools:用于电源管理。1 N4 u0 E  A+ P* _, r
" M; Q& n* h8 Z! ]
上面“GENERATE CODE”用于生产代码工程。
7 p, N% p, X7 e
+ s' R3 V4 v& {* M1 [1 T# B我们来讲一下"Project Manger"里面的一些设置
& A7 n4 M/ T! J* u' I
9 a; z- w. {9 Z0 j. \- k* [CubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
% O. ]; [* A: u$ l5 W, @" G* r1 M& c- @8 j9 I7 Q$ ~1 N
Project(工程管理)7 d9 _* P, D& Q/ r6 m9 S8 g% O- {/ c  |0 i1 v

4 e4 C; a) U7 T* P$ X
20200418184246389.png
4 W+ c$ d. p2 x3 \$ q
$ x$ u' a" B! i
Project Name:工程名称
' e" [3 d, A! S" QProject Location:工程存放路径/ S0 Q4 m7 p. Z$ E6 _
Application Struture:应用程序结构/ V1 @, I* }! l. O' x
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。% x% N' {( k) a- D( d/ P- p

0 |+ |% |. G% ]Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。* j2 d$ w0 n; Z# q, t+ g6 h% H
4 w8 O( j9 p- S/ I9 I! |7 P
Toolchain Folder Location:工具链文件夹路径! G( R4 G- Y" W8 w( {5 }* ?
Toolchain/IDE:工具链/开发环境选择
  k/ Y- M& P/ t0 L$ f5 _安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。
9 ^; ^6 f$ o8 v$ J8 s3 k
% K4 c* g" ]3 l  X堆栈设置:Heap堆为0x200,Stack栈为0x400
5 F$ R& K- |3 a: Y4 K, K4 t) oMCU参考型号
4 |: f5 y7 D. J. n) u固件包名称与版本. M5 v4 x2 I0 q% U$ K4 g
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
  \+ ]# x; p& I* q- B, B: Z
1 m; a/ i4 L: V: X6 Y使用默认固件包
( M& E, y6 a+ k0 G0 f3 ICode Generator(代码生成)
! A  @7 t3 G& z$ j; }. F* s4 ?, E1 H: N8 b, m/ _
20200418185548983.png

: L) t1 z* p4 R9 u8 c/ t. m% H2 T7 v6 \& v, C
Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。6 T" S) b3 `- r. ^
Copy only the necessary library files 只复制必要的库文件。
/ [. x( |( S% n# d% O9 L! b这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。. o4 F$ V; S! u4 s0 F# T8 S
. }) \! S" Z9 t0 O4 \
Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考
1 g( c+ i: K2 W% f7 Q% dGenerate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
( o* `" n( C& e. M2 r不勾:所有初始化代码都生成在main.c
& O7 k. D- F- b) J9 r' s2 M1 ?4 k" d+ P, A1 g; p% g
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
% |9 X+ y3 x5 z: J8 j% V- ~( ?7 g3 ?+ |8 l  F
Backup previously generated files when re-generating 在重新生成时备份以前生成的文件4 `4 e! w8 `, q" K5 P7 E
重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。  m+ i. t7 w, ^

5 L: t( ]. B" r, H  Q) b+ h) uKeep User Code when re-generating 在重新生成时保留用户代码
% |2 |0 P  K5 L* H6 H8 \比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。
* h" R1 E( {7 g7 C( e3 i' g0 g3 j- }
注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。* y4 s8 h' o: g( U8 L4 F6 _" c

+ t; A1 ~6 M, _+ P* |" LDelete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件
, q6 ^$ o, I& }* g5 X. U比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。
/ @4 d: q3 A5 @6 O( M; }% `) N. q* K  n( a) g; G
Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)8 C; [/ `- e; D
这个做低功耗产品时这个选项有必要勾选。
# b+ {3 Z' A% |. T
& S% d1 W  f6 P8 ]Enable Full Assert 使能所有断言' I! V+ Z# }7 r; D" {
Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
+ G; S  t% \0 j6 z8 g/ L
$ p0 b4 }2 {6 m( V
Advanced Settings(高级设置)! a- I" n) _4 T# m2 J
8 r7 z" X! N% T6 P* o
20200418190332622.png

! B& g4 g) A7 ?: w
3 Z5 l3 {; @0 K) F9 UHAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。
& y; g6 I5 e1 K% _+ q/ m% K& e7 U8 t: B, ^7 i
Not Generate Function Call不生成函数调用
8 \+ Y' i$ N: l+ Z1 Q0 l7 n+ A# v0 ]也就是你代码不调用对应初始化函数。
' }/ Q! U# s6 {& V0 o
4 v  ?  e- p& J7 M: b2 K- ~: `9 n比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
8 _/ ^% ^- V7 A8 u; v& T6 u8 e8 e8 E* [' p& S- T) @7 c" n9 Z2 d+ F
Viility (Static)可见性(静态)0 J/ B0 N- J! G  l- a6 F+ d7 S8 i
这个就是初始化代码声明为static。+ k, x# f6 W9 ^% g# U1 O5 O, H2 b

/ f9 i6 B6 ?; I2 |' e0 d提示:
) ?5 s' I; S/ S+ F2 y% Z, g* E; K* n  z3 X+ {" m4 m
A.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.1 E  E! |. c, \2 M4 E/ _' o( d* f

1 @1 m! _6 `+ O1 jB.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。
. c, e& [8 d0 c( u
1 S9 |) t, i  q+ s3 f
3 X, Y: C0 C' c1 ^MDK-ARM软件安装
/ ?  T9 p& W/ \- D7 \- Q1 W4 D/ X好了,我们先回到MDK-ARM软件的安装。
6 H) b8 g7 y+ _8 Z7 mKEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。- Z7 V1 i7 f, G2 W) q# V

. K; {$ H2 r( o$ b3 y( FuVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
8 `+ \5 m& `7 J3 O- Y; e2 f5 ?
2 u9 T( ~& E9 z" H! b4 w. W6 w! `& qMDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。
' K' }. b: ~9 ?' }7 M" K1 x
7 O) @' C: N( _5 g. a, v! h  }1、安装MDK-ARM软件,下载链接;
; g: Y; B1 f; _1 g- f$ X+ D6 E: j9 ^8 c: N$ _9 u. a
2、未输入许可软件为Lite版本,代码大小限制32Kb;
; V3 }/ n$ n' z% i( j) m/ l- O- i  p
# Z0 E7 ?5 Q$ C( A3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。* F7 K% {* U$ ^. s

/ N9 g0 ?2 D' q3 BST-LINK设置
& G) g9 w4 _& Z, I" Q- R5 j9 D将st-link接入电脑usb,安装驱动。4 Z; z& Q5 |" W. D- q1 ]: H0 Z
在mdk软件中,点击魔术棒工具"Options for Target",8 V& x* `+ j  Y9 n
在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting& i9 r4 M9 T8 e3 U
3 g; x8 y- z6 D0 {  ^3 g$ @" Y
20200418191302857.png 20200418191345700.png

4 Y6 j) c! n  k# ~5 n, S6 |, Y# Z! g+ L& B7 O
     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。6 D& K. S" c- L, g* O8 e& ]
7 r3 k  s' q0 K0 Z9 {$ P
20200418191425598.png

0 Q6 d  @; H1 W& P! d2 e& Y  i  \3 s" |/ l! X- }8 I  a0 e
最后我们的开发环境已经搭建好了。9 Z3 |3 h$ T: k2 `$ g& n' N: |
0 Y0 Y& _! }5 _3 r0 e% N1 [/ S" B
/ |7 u. \- p+ t4 }9 p7 {9 f
, D+ _1 h8 \. B$ R
3 X4 V) I" ~" T0 E. M' B7 o6 y

& Y6 h3 k2 P, w( ?# C5 b* Y- F5 B/ n$ _- X, ?
赞 收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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