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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 10:46
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。
0 Z% }# i2 d* J4 a9 B' \$ K. G
# T3 j( U9 k! f; J& o; U之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:
: N5 i! @1 }' ?, _1 T- N" G; [# I+ J% n- n) a- {) _
20191217230903730.png
7 f5 m$ H! K* p3 h8 r% \2 ~

* e6 L' F  |! K5 ^1 i5 H; s这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。
/ D/ s! X! R  O: R/ B2 c+ }2 r. H% M) ]& A  ]0 v
但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:
+ [4 }/ i1 P- k' E5 x2 b, a  L% }* [1 Z  I
20191217224445381.png
7 A" |1 h! T9 {0 ~
9 u$ R! A* T$ ^+ L) Y+ x
从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。
7 ]8 m% A! I6 r, y3 R, u& M
5 r! Q7 E$ z2 }/ Z! A* i* [( N这时候不要怕,我们翻看手册DS12589,可以看到:+ P" t0 ^3 E, r

) h5 y* a! k2 c+ y. K3 m0 @8 o/ c7 W1 `
20191217224951559.png
) S; l( N+ I+ v

5 s; C/ [9 Y9 P  d0 ^也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。
' w! m# G+ p+ z/ D/ U
$ ^0 r1 T0 [$ \我们在用户参考手册RM0440中可以看到:% o  f1 X1 k% ^
9 K. F, {- \, ?' n, S0 ]4 J
20191217225242981.png

. ]2 t% Z: o; y6 t" d6 A! M
/ [5 e2 [6 x/ }/ m需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。
* J9 v  T: \& ~: k5 J" F) C1 E7 a5 N3 p4 O/ E0 t0 g' d
另外需要注意的地方是用户参考手册RM0440的这个位置:2 `, Q, Z- @. b: l$ W' q

; f& M% ?$ y2 H& H; d
20191217225715278.png
$ D9 @7 s& k$ M: a, y8 @- w

) A# v; ~( e  J' ^! ~& [- }以及
2 \8 U: a$ R- B, Z* a; a
* L) X: }+ h$ D3 B. G
20191217225833732.png
0 `: C4 k5 R* @9 r5 U9 ]% p' e
3 _  _5 L! w9 u: d: K% E
以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。
: ]) b6 \5 p, Z, \* y! k/ C; l
. R. b) B& H* ]0 B6 c' T! H2 R有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。
. o1 A! W. A6 i
: ~/ N! v2 f9 K; I1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。0 S6 c6 A8 a7 m) E  O5 M& X
. G# y, _0 P* S; }; o  h
2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。! ]. r3 y2 j. P- H$ X& q. |
7 ]5 a1 h+ h2 }' a: }9 b, o
3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:$ ~$ D! L$ m5 Z& R3 t1 v6 Z
0 [( B+ q5 F+ g9 }6 E
20191217230551897.png

( d/ K$ W; C! P; m! q( N2 V# X' N$ R) }& ~7 ]
* J1 e0 x; S5 ^% J1 ?; {! ~' n
收藏 评论0 发布时间:2021-12-9 10:46

举报

0个回答

所属标签

相似技术帖

官网相关资源

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