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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 11:15
CubeMX设置  R1 {: A0 Z( m- o( R' B
1、在官网下载安装包安装8 Y" y* g( h, U1 S$ Z* p
3 f( E0 Y: q1 a( f% \. t% G
2、一开始没有对应芯片的固件包,先下载安装。点击"Help—Manage embedded software packages",找到对应的芯片型号等待下载完成;! z: }. x9 j- F- K8 n: o
; [2 h, r$ P3 f7 ^4 u' P
如果在线安装太慢,可以先下载固件包到电脑,然后导入固件包。  o8 B& |, |; M1 S; i" s, u
3 d. u. L0 m- U, P- E0 j# F
固件包下载地址:链接地址。在"Manage embedded software packages"下方点击"Form local..."安装。* O+ O0 c* d+ m5 g& C" R
2 Z' F3 a0 f+ z- i3 d) O; K
或者在主界面点击(INSTALL/REMOVE)安装本地固件包。- x/ x' t. ~; p! R& S2 R0 Z
' }# `$ j% w# H7 L  [) D6 ~& Y
20200418175903466.png

( q  }$ W( \* I' V9 i/ g" R. h6 o$ t; n6 p" K* {5 j
3、在New Project 中选择"Start My project from MCU"(非官方的开发板)找对应的芯片,或者"Start My project frome STBoard"(对应官方的开发板型号),软件就会自动创建工程。
7 v: u: g" E3 v, \
+ N' s6 j; H# j# p9 C  TCubeMX界面认识; h. x6 W& t& \; z) r6 r: d

, Z. o# p0 ^1 Z- S5 r
20200418183040744.png
5 F# W! K2 {* B8 |6 }3 ?
% C" n) W' V! f; R& E7 A$ @8 A
Pinout&Configuration:用于引脚功能设置,使芯片有特定的功能。(之后会慢慢讲解)
! S+ I: @2 F$ N0 m- L
$ U/ n. ^) v, N+ T" w+ FClock Configuration:时钟树设置。(之后会慢慢讲解); I4 Q8 r+ J( m+ q9 Q5 O, \

8 e% x4 \( S  ?Project Manger:用于工程项目设置,输出代码设置。
1 w- j5 B5 d  X5 s& u9 q+ e. |& A+ l! ], h, x1 ]3 @  z
Tools:用于电源管理。
  G- g- N4 r% R- ?9 h3 h
' h3 e: C( I" F7 n0 q上面“GENERATE CODE”用于生产代码工程。
) l6 T# W* J( {- e) l# C( k! m
6 ]3 L4 E, X* W& Y) M我们来讲一下"Project Manger"里面的一些设置
5 S# y0 Z5 z. i/ d$ ^2 u  R; I' D0 w$ G
CubeMX的Project Manager工程管理器包含:Project(工程管理)、 Code Generator(代码生成)、 Advanced Settings(高级设置)三部分内容。+ B- C/ h& {$ s
& @% s1 d7 I0 Y& n
Project(工程管理)
. m* F4 k/ X& F$ O" B$ S
1 E& Y0 O7 k1 L2 N0 \3 c
20200418184246389.png
# q3 n) \; l% z  m1 N. E: U; f# S
3 a% w) [8 U% L! o
Project Name:工程名称
7 l3 j) M. E3 A9 j& }2 G* yProject Location:工程存放路径: t$ F$ ~  G- ]9 x% C& d0 P
Application Struture:应用程序结构. u, z) P6 _9 h& R0 [
Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。1 k  Z" b; ]4 N& S( ]
' x. E3 R/ p1 G- _# H
Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。* a/ [3 D; H9 x% X  R; y8 g5 g$ i
: D0 R+ Q$ R, m% a
Toolchain Folder Location:工具链文件夹路径
% P9 D$ `. n' k5 FToolchain/IDE:工具链/开发环境选择* {/ N( ]0 O; C9 S5 f
安装自己实际IDE环境来选择,我这里用的MDK-ARM,版本是V5。后面的笔记也是用这个环境(除非用说明)。
4 I" w* O8 B; n+ ]- e5 Y6 d% G4 K" J5 }/ P- ~! W2 P( y3 M: M# e. g& P( m
堆栈设置:Heap堆为0x200,Stack栈为0x400
% ]  y# M" i9 b2 R  Y1 hMCU参考型号1 b' V6 Z5 ~: U0 x2 e* [
固件包名称与版本
6 R; |. @* z5 N" ]4 i如你创建了工程后,更新到了最新的固件包。旧工程还是用旧固件包,系统就会提示你"Migrate to the latest supported Fimware version"("迁移到支持的最新固件版本")。7 M0 v9 L+ ?4 B; I% G
* _9 x/ H  c6 Q6 [/ V; T/ ~2 S
使用默认固件包. ~. K7 o# W& Y% i+ u
# x6 u( i. p  x1 m5 @
Code Generator(代码生成)
0 Z) x: E! x0 f' u: I0 h$ {7 I
, f; Y8 a5 q9 ]8 t' T, I
20200418185548983.png
0 ?& l% o- ?+ o; s/ w1 ^

  A# ?% Y2 k% u5 S1 H- ]$ T5 SCopy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。  ]1 A, W/ d& @
Copy only the necessary library files 只复制必要的库文件。
/ l9 [; F7 S) r/ l4 b4 K这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。  M! Y' j- z( J5 y0 X; G- u

/ {1 K' a1 B! q7 ?- i% \Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考7 S5 L9 a+ v8 I: F) ?( q- f
Generate peripheral initialization as a pair of'.c/.h' files per peripheral 每个外设生成独立的'.c/.h'文件
7 @" k7 D: H+ R/ m8 p不勾:所有初始化代码都生成在main.c" V- Y* y4 z+ V" s% U+ t# G

0 A# a5 F& ~- Z$ H勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。6 k; x) @# S# ?: l. z

9 B8 f, c9 @, PBackup previously generated files when re-generating 在重新生成时备份以前生成的文件
* U" }. B% k+ w; Z重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
- ]& ^; v) i- R5 ?' u: A8 D6 j9 @) P* U6 `1 ~' @$ h' N: a# I1 E% L
Keep User Code when re-generating 在重新生成时保留用户代码! V. V' p2 F3 P; ]6 l5 A8 G
比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。9 _0 O8 |, ?/ z) \7 ^5 K
8 I$ m  u' @1 ]* j
注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。7 @# J- f0 S! u# B; D3 C
  a. T8 X, z3 V6 d5 C
Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件 ) f" g6 l7 w4 ?& P4 H- w6 @" \
比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。( o3 y) I5 @: h) O
/ @, K" J$ R; D$ g
Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
; Z; e. b) ~( I+ g' n这个做低功耗产品时这个选项有必要勾选。* Y8 j. E2 z4 `; V

" r5 D$ Y  V. G3 ^3 ?; JEnable Full Assert 使能所有断言
; T: {+ d/ M" R* vSelect a template to generate customized code 选择一个模板来生成自定义代码 (还没用过这功能)- S3 [3 T# u% u# _8 M6 G
# x& a; O# O$ |: |( d
1 C& H; c3 d; o) @5 p& Q
Advanced Settings(高级设置)7 _  N, H7 g! d$ W
- n1 Y: W7 Z" G# w9 m- `4 r, ^
20200418190332622.png
4 y+ A& m2 e) x) x
; k0 x- ~' m6 l. l
HAL库类似标准库,LL库更接近寄存器操作。有部分芯片没有LL库。
3 ?$ a+ x2 Q* l2 V7 \
9 h6 N6 L/ T) [2 p0 PNot Generate Function Call不生成函数调用/ M% _$ t, P. y
也就是你代码不调用对应初始化函数。6 h! o/ u4 e! P5 \7 X

+ q3 l8 Y# s1 {2 R- Q比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。5 A1 S* a3 W/ a5 V% q

' g/ Q8 H# W8 y9 G8 rViility (Static)可见性(静态)
; u& t. I+ |+ P9 ]% J# G这个就是初始化代码声明为static。' ~, K, o; T3 O% y

- y5 `: C9 H. t$ Y' y6 f* p  n提示:/ X" A" ?4 Q0 c

2 m1 f( S! n0 H& g! jA.有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
0 X2 g) z! \$ ~# `5 l5 V! P' W) _2 N" b# L
B.使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。8 B2 C$ t* x+ z, e5 N* p
' ~4 }* h* \; j

/ T. _- ~1 _5 v. DMDK-ARM软件安装7 a: S- S; m3 A& E; i( L" c# o" |
好了,我们先回到MDK-ARM软件的安装。
! Y/ W* G9 x" u4 T/ i, G6 o" u
% y5 R- n9 ?6 \2 fKEIL是公司的名称,有时候也指KEIL公司的所有软件开发工具,目前2005年Keil由ARM公司收购,成为ARM的公司之一。$ x5 }% a" Z; C/ L( t

3 S0 E/ L! H" p* e6 h, ?uVision是KEIL公司开发的一个集成开发环境(IDE),目前最新的版本是uVision5。
" ^1 G* O5 |5 l  ?; f- U9 I  s8 W' V3 ^0 m) W9 M" O5 B, z# q+ ?; s: c
MDK(Microcontroller Development Kit),也称MDK-ARM、KEIL MDK、RealView MDK、KEIL For ARM,都是同一个东西。ARM公司现在统一使用MDK-ARM的称呼,MDK的设备数据库中有很多厂商的芯片,是专为微控制器开发的工具。0 [9 _0 U' E( K3 j7 a  m- b6 X
. C  X* }/ x7 w- r" d; O! \. }! t
1、安装MDK-ARM软件,下载链接;
* l$ `$ J7 z  U$ c' t' `# n' \% U4 u4 J% I# N. G
2、未输入许可软件为Lite版本,代码大小限制32Kb;
" {# G$ F% Q% Y
$ d5 \3 N8 l# f; M; |+ H7 ?. {3、下载MDK上的芯片固件包(DFP),最新版本包链接地址。不过下载速度很慢。找其他人共享在网盘的包也是可以的,下载到电脑后,直接双击打开就会安装固件包。
  Z& C0 Q* n. t$ K) V) n9 `) z) p. c2 X  [- L
ST-LINK设置
3 T3 r* p1 b4 f3 T$ R2 W将st-link接入电脑usb,安装驱动。
$ `' q0 D1 q( k6 c( b$ p8 x: k在mdk软件中,点击魔术棒工具"Options for Target",
( @/ |  m6 a  e; f; l# i: j在"Debug"选项卡中,选择"ST-Link Debugger",在点击右边的setting7 o- _+ d* B8 R7 p+ K' D
3 a/ C+ m1 \+ b
20200418191302857.png 20200418191345700.png

7 G4 \$ G5 F4 ^$ j
* G/ W8 t( C! u1 B     4.弹出的框中,选择"Flash Download".把右边三个勾勾上,下面的芯片目标选择正确,前提是要安装了芯片的固件包才行。(打开cubemx生产的工程,芯片一般都是选择正确)。最后点击确认。
( E4 o4 @2 i" c: W& c5 q
" Z; v, a" D2 U
20200418191425598.png

. b9 C$ X# m: E2 p
+ `: h8 n# `# Y3 d' K最后我们的开发环境已经搭建好了。
( J$ {& {' W5 u  b/ x* n! O* @' D5 R

' K3 ?6 u% Y% j+ n* e) c
赞 收藏 评论0 发布时间:2021-12-9 11:15

举报

0个回答

所属标签

相似技术帖

官网相关资源

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