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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置
- {& F# S; U5 S" ?0 ]/ V1 K* n7 I( i1、在官网下载安装包安装2 G# Y* X" O4 A3 i" |1 r2 l7 n
9 x' l. z/ Z, L& O" j+ Z2 y
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;8 `7 t' Q9 n8 N) I. N

) E: |* _5 ?: Y& ?如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。8 A" O$ `4 e+ y' @9 X. f; x
) g& R- V3 ~/ i# j
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。5 i8 F/ d; x- x7 i) Q- n, ]

" W5 c. k1 w. P+ J, k或者在主界面点击(INSTALL/REMOVE)安装本地固件包。7 I, o8 Z7 n6 w: \- N3 U+ E" [

  h5 d' @4 k6 g# |; w
20200418175903466.png
) W9 S. [( J( V- K7 J8 o; D

6 K, B) l7 P6 R; P3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
/ v5 F' {3 i6 X  @; O( q5 f4 T7 i  ~- {7 Y) z9 \
CubeMX界面认识
' J; N2 x; e4 I5 ?4 D
; X- Y# p. f4 c* a/ D
20200418183040744.png
; z6 V; M1 M+ ]' }) V
/ V" ~$ N. M3 k2 t* ?
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
6 j: D9 |2 }( l: N" T
1 \% L  x* F4 h& x2 }$ R2 HClock Configuration:时钟树设置。(之后会慢慢讲解)6 x, H3 O$ k! _

% `- c# W5 Y6 `Project Manger:用于工程项目设置,输出代码设置。
+ N8 D" A( r& ?, D5 g
2 P+ g5 W0 J8 K; z$ I  L9 v. aTools:用于电源管理。: L4 N( B- Y% u1 I

( d# z8 @" G9 f6 {上面“GENERATE CODE”用于生产代码工程。& q- ]3 e# [, B. a$ M! G. [

# w" n; o. F7 F' I0 K# K: ^  u我们来讲一下"Project Manger"里面的一些设置. O" L' o9 C+ x+ V
6 n8 o* t) a; f0 e! D' v+ Q. c
CubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。
( A4 X2 @) ]# E6 o6 ^* v; c# n3 p- X' S# u: P: ]  A
Project(工程管理)

! n. N* A: B3 j$ a. n
0 j" R: [. t4 E/ |' N5 _+ o
20200418184246389.png

' |/ `' P- H+ L4 E! b. ?" ^! _" ^. i  i( @' D
Project Name:工程名称
# K5 I& F% P6 N" e  @' kProject Location:工程存放路径' J1 L3 F1 m/ T9 M$ w( A
Application Struture:应用程序结构- j9 V; e) [6 L+ s0 |3 n! B- C/ x
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。6 W: x) _& W0 D/ s7 h9 x
  ?- y# o* E9 J( H, D: x$ I( a
Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。( U8 |5 Z& r4 u0 N4 i8 Z
, u4 q! R7 a1 v
Toolchain Folder Location:工具链文件夹路径
( B6 X3 W/ o% P% Z5 t( |" cToolchain/IDE:工具链/开发环境选择6 N0 K2 V- j, l+ M
安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。' G* r- j3 o) n, S! ^7 x7 X

! @: g; a' q8 r( D3 ^堆栈设置:Heap堆为0x200,Stack栈为0x400
" _* e! ?0 n- U# bMCU参考型号) p# e6 d; p8 e  ?1 {3 I, H
固件包名称与版本3 J( |2 P2 F0 f' o
如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。
1 y  x1 y! g; N5 n9 {3 m& {. o% ]6 S5 n' n5 A- M
使用默认固件包. @! E8 x0 r- O2 `2 i

# ]- ]+ L1 v0 r2 T* p8 K8 m0 }
Code Generator(代码生成)
; a" J* ~' ]% O6 J! {; c- I! u4 u" {" o6 A; i
20200418185548983.png
' |! r' J& X) L! g8 h/ l$ b9 v7 w) A

0 \, v8 a( M4 N# `Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。
" a& k0 [/ i7 [' B3 b2 Y. f2 L" I" KCopy only the necessary library files 只复制必要的库文件。4 b$ ?2 M. v0 e# g
这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。; W: {  T) ]9 \+ {' A4 s1 A9 B
2 u+ r7 w- v& n3 ^0 k8 Z: }6 r
Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考+ x3 t: t( m) t/ F. }' L  M
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件: O% ?/ V% r8 n
不勾:所有初始化代码都生成在main.c
) B3 _8 b8 [: p3 T7 k4 U  I( _  ?& b1 U! D9 `: z/ q% I
勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
9 e; Z; a6 y# F) @' y
- D! H/ `! N6 o- dBackup previously generated files when re-generating 在重新生成时备份以前生成的文件
$ g& G  {" R5 ?重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
* o$ X' r) Y6 b2 J( x
( R, ]+ P; F3 HKeep User Code when re-generating 在重新生成时保留用户代码% n# l* G& l0 h' Q* d% @
比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。+ J4 N  {; R7 H4 F' g/ t' _1 Y! A

6 g. j0 b+ e- K- y5 H注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
% X7 d1 I* `6 l7 {5 n; q, b4 {% h2 H6 G) t9 s: c2 V4 L
Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 5 w3 _3 x. X( R" d; A2 t
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。  Q: u7 u5 r& x4 `, {" F

: q" o; w/ C) ?5 USet all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
3 g7 L0 D7 {2 l# T& Z( O8 @/ Z这个做低功耗产品时这个选项有必要勾选。6 l. }0 _7 o& V+ l3 B* y- j

- \+ g3 L8 ~- O, q. PEnable Full Assert 使能所有断言
: G+ [5 `9 z" X% f/ a% @Select a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)
4 x$ ]; X5 F' o0 z; [  u4 |! M& v  [

- c7 B6 ^' n9 j/ @4 JAdvanced Settings(高级设置)
% h- ?2 J- {. p" M
% ~' R, q6 M5 r& F2 r. T' Q, W+ d# N
20200418190332622.png
' g* g6 G: G! c$ f+ u8 @! e- L

  V, i: c; A- ]: `- b1 O$ Q2 iHAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。* ^) K1 q$ H3 v! {. Y2 b

$ G# y9 Q* ~2 A( y3 Q1 JNot Generate Function Call不生成函数调用3 `" H9 M% ?6 f. K1 b" O
也就是你代码不调用对应初始化函数。: N& w6 Q/ H  G" k
4 i1 r5 c5 E/ A+ @
比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。4 |: ]! N% F, S+ h: M0 j0 a

& B3 @2 a8 h0 e0 E6 l6 AViility (Static)可见性(静态)' q2 Z# b; m. o8 J" E
这个就是初始化代码声明为static。3 [, J% ?1 m% Y& j1 q# M5 Y- J
' g& J5 |2 ^, G
提示:" u3 l% h- E$ B. ~$ P

" t; J% v! R4 ?, k# j; Q0 GA.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
+ O& l6 B$ Z* ~+ q  \+ u+ K- y8 q1 K) O
B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。7 V" J* |5 F- ~" f$ g; Q

2 y/ y4 w2 K: \5 X% O) w, k9 ~/ F3 m( A2 W5 v
MDK-ARM软件安装
& o& ~/ L; ]8 b3 m好了,我们先回到MDK-ARM软件的安装。
/ W$ p" J# S6 X0 q6 x& ^* H! D4 p
. F% K  F# I7 U: a, m' b0 j' [: AKEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。
. P+ P% w" L7 M6 |) Z. V$ d8 k
- L$ }: J5 v5 c2 d  S' _) quVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
6 h/ A0 O" V5 b8 C1 c
2 V  J7 E. ]9 ?. Q5 u  k" r# o; Y1 }MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。) H1 s* I' d0 }, V" t% U

( W! q6 `; N$ v" ?1、安装MDK-ARM软件,下载链接;
$ y; p) i4 e% K* R9 Z( S  D2 k6 W4 T1 ]" H3 U3 |1 V
2、未输入许可软件为Lite版本,代码大小限制32Kb;# X  O/ l. ]5 y8 j  t) N! i

% g7 k$ G1 F  V4 |9 }& Y6 F3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。
( ]7 Q# H' d" S) L  D2 j
, Z( H0 T) `) X: r" [1 `0 n6 @ST-LINK设置
8 z  z* `" [$ G- K' |1 i将st-link接入电脑usb,安装驱动。
' A# K, u5 Y: \0 c3 u  [在mdk软件中,点击魔术棒工具"Options for Target",
; j- e# ~! J5 m$ N" e! a在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting
9 o1 C9 i3 {/ w* \; k. D" |3 x1 F. I& c8 M
20200418191302857.png 20200418191345700.png
# L* F  `2 p( J/ q, F

0 \. S: ?- n! ^' L# R, a+ g5 Y     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。! o$ p$ ^+ j6 Y* E+ D. c! q

  ~! ]/ c; G. R$ A" v: C: X/ N/ m, |
20200418191425598.png
, l, V* R5 d& j* V% @
, ]3 n2 A8 W% x! y5 {: m  ]
最后我们的开发环境已经搭建好了。
1 f5 w: Q3 e# k# F
+ ~6 Z; y) R* X) t' d, Y0 D  k3 ?+ W: x* f
收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版