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

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

[复制链接]
STMCU小助手 发布时间:2021-11-8 01:02
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。
- D1 g. G8 I* Y2 ?$ {0 G& ]3 Q
0 `' i: d6 B; z3 ~6 p) ~1 S% t之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:' h( ^9 O$ R; P5 w! N

- U4 K3 Q0 ]* e( b0 \
20191217230903730.png

7 r  O  p$ D4 X3 m# L# C% H1 G) j
. i7 ^" h) a) A& k9 S3 p+ i. w这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。' V. ~' e# z1 z
; K4 B5 }2 i" r$ B) O* a
但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:  T4 C! {7 k- e  S  ~& Z2 ?' k+ t
, t. }8 M# _; D+ N
20191217224445381.png

9 Q+ A, I0 Z7 D3 f6 W( i8 K+ L7 ^- Y. x" ~. a# u0 v
从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。; B6 N  c8 O8 |, ^
! H8 t1 t3 F. ?& E5 c7 T
这时候不要怕,我们翻看手册DS12589,可以看到:' Q: f7 H5 Q7 Y. p  z
9 F: K- Z; K4 t7 f' v3 F3 z
20191217224951559.png
0 t* i% F- j/ A7 c2 W9 q$ j4 k

: w9 \( j0 c: v# \也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。
5 j" z8 e  a, J  b5 |, c& r( K# u, d9 X- R
我们在用户参考手册RM0440中可以看到:+ G! X0 g+ D* J9 a3 {% R( L

7 }, y, }  L8 Z" Y: ?
20191217225242981.png
" ~" [6 Z9 Y. a0 L$ v) o# [/ g
3 o3 b; x1 g/ o. }5 C2 i9 S
需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。( W- e/ h5 H9 C
" B  T+ l  a4 o7 Q' N2 A9 I0 ]9 V4 {& T
另外需要注意的地方是用户参考手册RM0440的这个位置:2 q2 f0 v( B# i1 r4 W% w8 f7 Q
; B. s2 l* T3 Z3 u( x9 ?
20191217225715278.png
; p' x2 I- j7 w

# H2 c9 J' w& |) w以及. Z9 x. H7 W. y" {
. u7 o. i8 t: r5 p! F- \
20191217225833732.png

& Z! \0 N, F+ x0 `  A( U4 {1 q
; W8 q9 m4 ?% x2 u% _以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。
7 t+ Z9 w$ N0 D# j" k" f% j7 B# W8 r; i
0 K) {, x8 J+ h( @) @$ G# Z4 c  O$ q有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。  H( O, F0 @. s1 w' E
) V8 ?1 ]; u' \
1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。
% [) t1 @- T( i. M5 j/ D
! f& C- i- n+ A/ A2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。5 J2 f/ C2 {8 l) {4 Q* R

/ C" M" o+ R" `8 J; v. I3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:
: K% i2 T5 N4 e/ E4 T! `. e" V- S/ S* }" v
20191217230551897.png
) |0 a9 W5 \2 i" c' `1 t
% i) y  d$ L3 c1 H$ ^
8 |& Z2 }& E- j# Z0 f- ?: ~% s

, M. ^/ e+ b5 G
! ?% X& {2 j" `) C8 Y
收藏 评论0 发布时间:2021-11-8 01:02

举报

0个回答

所属标签

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