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

【经验分享】STM32G0和STM32G4 如何把BOOT0当作通用GPIO使用

[复制链接]
STMCU小助手 发布时间:2021-11-8 01:02
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。
3 e) }4 ^. Q2 K& S1 [$ B% H: n2 c: L% M2 l; W
之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:. a# ~$ I: C; a* ], g1 y

# ?, r  q+ }8 g* {) F. s7 j
20191217230903730.png
0 D7 O: B% b( e
9 H2 `' H8 b# B. y5 k% ~8 c4 y
这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。
  b4 F2 C" a' {* y! y3 z% _) y; M1 r6 H& w: d
但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:* {$ Y/ q! u' W1 ?3 J( z
& G# {/ x$ x/ ~7 C& {1 \
20191217224445381.png

7 N6 M; F- A6 x* d4 x8 j
2 P$ H$ j1 c5 ^. |从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。
# N! D1 h8 O" B1 O+ F2 C7 @- r
$ e& @- |" C  O7 \这时候不要怕,我们翻看手册DS12589,可以看到:( G" x- l; |* p0 a7 g/ P, }
. `- T+ A  {+ u
20191217224951559.png
/ ^7 S* e& d) K

2 v* E1 X* c5 w+ C' h( u, X也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。- g( J! [' J, C3 Y
/ f, i- d$ `* y  ]
我们在用户参考手册RM0440中可以看到:
' M& k$ ?6 b! j7 X) Q. `% ~* Z' {. S7 V. k2 M) q
20191217225242981.png

9 D" g% V& D# u+ r- Y( V+ y
, _  W% f6 d; E  P! Q需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。
% b0 t" y8 d( f5 R
: k: c" J; C% w! [另外需要注意的地方是用户参考手册RM0440的这个位置:
/ z7 |" M! ?8 y1 w/ J. y& C+ l6 B' N5 K# K
20191217225715278.png

4 G+ G. V0 y8 D$ g! M" l* D  l" }; v5 {) q  L
以及
. T/ t: i7 q# n0 B; V, Z
% ^- O6 n2 d2 Z7 l
20191217225833732.png
. H4 ?* H) k5 _# t7 a
* U: w/ F/ x( Q$ S' {* A
以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。4 K* j7 j. U. R, z; c7 v
5 Z. h* \" d' U0 \# g- P
有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。
1 w5 i" b4 s+ d/ D9 [. ]) Q3 j: i9 X! o3 v7 N
1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。
% o  i, U  |, H+ ^/ |
  J2 l* d# w3 m7 r4 b2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。
" p1 [0 V( D& @: ]. k. l. I* y$ t; l/ Z
3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:# ~& w, z7 f* I3 K- `
) ^- b% f! ^0 i* Y  v. }9 |
20191217230551897.png

+ K/ z) T8 x: M1 U2 Q9 G. {
4 b* }# W/ c- v) T' G+ V. z8 e- {. W) Y  Y3 S

% z7 s* l/ ~; l9 ]  h$ O8 _* `- B7 i/ D0 ]8 T+ W1 Y, j
收藏 评论0 发布时间:2021-11-8 01:02

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版