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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 10:46
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。
9 G' @+ w2 X/ R# T5 v
2 o7 c' n" J# \8 r之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:
5 Y+ u  a: u# T; @  [! z4 c1 e6 A' D0 R, j+ ?2 {/ f! O
20191217230903730.png

, _6 U4 R  V. _- X2 r* f9 K5 [( _6 I& a% f' u4 K
这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。' X% D+ j+ |0 |% e( b9 }

9 r! t# G' a* \但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:
+ d! ^5 h, i: w' h/ D. s$ G9 H& S0 k9 l2 E6 T  w
20191217224445381.png
: Q, v9 N0 g+ s9 {7 Y! R  r

; o2 k! L+ }8 O/ y2 R从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。
  Y; f& r# U% v
& V" w" c) H9 H& e# T, [1 J# a这时候不要怕,我们翻看手册DS12589,可以看到:
& x6 F4 p9 {5 W) L3 D0 C7 _# f6 ]1 S1 S- U* U) v
20191217224951559.png

0 N9 Z# z& J3 o2 [& J$ m, ^. {; P/ a! `; P" }
也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。
0 w) g. b0 Q& v3 S2 T# b8 ?3 G& }6 [# q- N
我们在用户参考手册RM0440中可以看到:
1 z) G8 n$ `2 u9 P  `  x, M" z; P7 ~8 L% e2 G) R( H+ n
20191217225242981.png
* p. O# @! ~6 y2 H) i
* q' I% q; N7 ?
需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。' A* M; o: j7 h6 a# U

1 n, t+ m* l7 z: g4 _9 h另外需要注意的地方是用户参考手册RM0440的这个位置:# ?' H9 _4 P( t
& F0 C$ ^# m# x, y
20191217225715278.png

  U. h% t: P$ \' x4 a
4 P# {) ?+ w0 t* F. \以及9 L0 R% c1 V3 Q+ m$ v
. S1 @2 h( X: [6 K
20191217225833732.png

1 z0 u9 ^( l3 r* m4 r; l: N- ^7 I& C4 F- m5 i/ D
以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。
) ~8 u# l7 U$ H3 s7 A2 u
+ c6 J  z5 t& h( H3 U4 C' g* L有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。
! t  ^, m6 @1 c% ]7 o3 l
. S! T" k4 A. ]( u9 c1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。* {" a' D( P2 `5 Q! ?! q3 |- X% J

0 c; A3 W2 t6 C, W) P/ ^2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。
; K- T' D; }& j) W% F, u, ^
( d/ M7 o4 J2 `$ p+ S, e3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:
1 T/ l. E4 H/ }8 @0 ]* W6 \
  z% ^1 `3 |4 s) U; s0 |8 G
20191217230551897.png

6 G: S* ?( P! v7 J0 x2 c2 K" i$ R. t1 t4 G4 r

4 W2 j, }5 v5 f# j7 L5 I: z
收藏 评论0 发布时间:2021-12-9 10:46

举报

0个回答

所属标签

相似技术帖

官网相关资源

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