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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 10:46
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。9 z1 r' R9 B1 _3 g+ o

; ~" H+ S# Z1 X! ?) M之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:+ h" M8 J0 N( e) Q& t' H0 u
4 l, q) _& z. }
20191217230903730.png

+ V6 E. W& z# Y2 j: ^  M/ \' Q( T* \9 X2 d- D' {3 D0 I$ t5 F# k5 r) n$ U6 Q: t
这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。
- ?! Z# s8 ~/ q$ m. P4 p& o4 {8 F9 F- e% a
但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:% \, s4 s: |9 N0 Z% W  K7 Y
) J- N7 X1 I: f/ p
20191217224445381.png
5 y# g; [- a% x! s

9 h  }& m6 V/ d" K从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。" A$ w1 A$ Y% d, p5 \" }; @
5 J1 Y8 D, D' X9 f# |, e
这时候不要怕,我们翻看手册DS12589,可以看到:6 a" l/ Z3 B0 T2 l. O% c

9 q: }* u; S. x
20191217224951559.png

: Q5 A/ i' O& Y& S
; r! ?/ |4 e% s' S5 [( `8 N; i也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。. Y/ K  V' v+ x7 K1 j2 X) \  H
4 o% S0 n' v( X3 [  I0 s
我们在用户参考手册RM0440中可以看到:
  G* k3 X- S& C* \  @0 a$ G3 y9 `7 h& K6 L. P
20191217225242981.png

2 h' ^$ ?$ H+ J8 W, n  J4 H- E# d( }% w* Q0 N) v$ ^1 J% [) g
需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。, n7 `5 T5 z3 F7 ^7 X

  {! J2 ?( t2 m5 I9 S# w另外需要注意的地方是用户参考手册RM0440的这个位置:1 a5 u! M6 H2 M2 m" g  z* @
  P  K$ ?/ H# d, S
20191217225715278.png

* }& W; }; J# y3 D" q' i3 f5 S
以及1 g: h# b" f( A$ d5 o

/ A8 v/ U7 w0 p! T5 A6 G
20191217225833732.png

8 ?9 J3 N% F) O" v
' \8 T9 y, h9 r2 H以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。3 J/ v; {: p+ i  G& b' [0 y
9 A6 L- T1 u5 y* ?
有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。, p; u7 G1 X% f8 ~+ }
/ X* g. v6 C' a# X3 }
1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。& j* p2 E# D9 l8 ?( |  t- g
, o! f* A7 E+ W& i
2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。3 s/ Z+ ]4 P- R

; t  r$ ]5 \0 @. y% L3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:+ P5 k$ i6 U6 h  P5 z
% P+ L5 N: F" z; I% j8 C
20191217230551897.png
4 n- V, J! D& r$ {- q* ?* m7 q( ^
) \3 V  Q  [9 X% Q) S

, y* }) S- ]! {. }
收藏 评论0 发布时间:2021-12-9 10:46

举报

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