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

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

[复制链接]
STMCU小助手 发布时间:2021-12-9 10:46
我们知道,STM32一般可以通过BOOT0和BOOT1的不同组合来设置启动方式。( j2 o& ~' N# D) Z, \* S
+ k, i- R6 Y/ y5 t+ Y2 I
之前用过STM32G070CBT6,这个芯片的BOOT0是和PA14在一起的:) i' k, J/ s: Z
$ t, T, J: |, \: Y
20191217230903730.png

+ r$ q& @5 ^* S) Z% Q& }( w' L8 {+ J+ i- ]5 E
这个比较简单,我们知道PA13和PA14是芯片的SWD接口,我们只需要在这个引脚上下拉一个100K的电阻即可。这样,SWD功能和BOOT0的功能都兼顾到了,系统复位或者启动的时候,检测到PA14-BOOT0的电平为低电平,然后正常启动之后,这个引脚可以作为IO或者SWD功能使用。
$ h5 g4 z( G# n. F  L' Q
, t! R" }5 S/ z& F! a3 j但是对于新使用的STM32G431KBU6来说,上述的方法就行不通了,如下图:
$ U4 x! l' z# [/ [! ]' ~! Q7 Z0 p9 K5 L) p4 n
20191217224445381.png

  g% d8 z: D2 w! {# v! V
4 X! ]1 V7 F  P, S3 B! ~, A9 Z8 e从上面CUBE MX 的引脚图中也可以看到,31脚的名称叫做PB8-BOOT0,我在一个设计中把PB7和PB8当作硬件IIC使用,这就需要给这两个引脚外挂4.7K上拉电阻。而按照通常的启动方式来看,我们要从主flash启动,需要启动时BOOT0引脚的电平为地电平,而IIC总线外挂了4.7K上拉电阻,使得无论如何都不能让启动瞬间这个引脚电平为低电平。: H+ j9 [  d( |* ^2 x1 Z$ c& }

( t* x9 u! Q1 l' I7 Q" Q8 a这时候不要怕,我们翻看手册DS12589,可以看到:$ M- `; y# d1 F  @+ o
! k" X& {# b/ w6 `8 @
20191217224951559.png
2 X$ c1 `8 O! d
- a: W* F8 H) }/ |
也就是说BOOT0我们可以通过PB8-BOOT0这个引脚来设置,也可以通过Option Byte中的nBOOT0 option bit来设置,现在我们不能通过前者来设置,只能通过Option Byte中的nBOOT0 option bit来设置系统的启动方式了。" [$ u3 q+ l  U8 [) A, |6 u0 c

) U8 u; I2 w! t! A8 z我们在用户参考手册RM0440中可以看到:
5 K+ K& C( q1 t! i8 E
3 D' a& x3 O/ j6 p/ |
20191217225242981.png
2 _! M5 N% B, q7 {# |2 V

  C( D0 H" s2 I0 c4 a5 Y$ F需要通过把nSWBOOT0位设置为0来选择使用软件BOOT0而不是使用PB8-BOOT0来作为BOOT0的设置项,接下来把nBOOT0位设置为0就可以达到和使用PB8-BOOT0下拉到地一样的启动效果。
2 E/ x& b* f6 Q* k% C
8 |* D' D* w6 |* C, k5 m8 t1 ^& K另外需要注意的地方是用户参考手册RM0440的这个位置:
& H$ b# I9 R1 C% s2 S  l
' W, g# o0 B/ U) ]* I5 T
20191217225715278.png
/ z* n) l9 m7 n
  f! F9 @$ [+ K8 q9 M! J* C# x: h# f
以及
; W: }! ~( g7 b4 t  \* C5 ~2 N9 f0 }/ h2 O9 |* o( x) W& _9 t- F! m
20191217225833732.png

& U) H2 }4 h- W6 s7 z1 [- E' Q# r0 Y: E9 a" ]1 H1 S# {- v. x
以上是涉及到软件设置BOOT0的一些相关寄存器及说明,接下来说怎么设置。6 ?1 v2 j7 C- C# |
3 J3 T$ h5 ^' K! f9 u
有三个办法可以实现把BOOT0设置为软件BOOT0,这样PB8-BOOT0引脚就可以当作通用GPIO或者IIC或者其他用途来使用了。
" Q) c1 @8 ]$ l$ f$ H0 W) p, W3 {
& f' z* J7 ^1 M1、在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,我看到HAL库中有相关操作,但是操作起来比较麻烦。9 p% T1 x+ ?5 F0 e: \: g% c
; c$ K5 D: E' S" {9 c
2、使用STM32CubeProgrammer来操作,这个软件可以通过STLINK\UART\USB\OTA来连接目标板来实现修改的功能。
; X# l, q2 d) p/ u' O
# N3 \! ]' h3 m3、使用STM32 ST-LINK Utility来操作,这个只能通过STLINK来连接目标板,连接上之后,点击Target,然后点击Option Bytes之后,按照下图修改即可实现目的:: @7 l& I" }1 @8 B, J# I

% N! n1 _9 O  ?0 ~7 F8 }" y
20191217230551897.png
4 k9 B: N% c+ d- ]0 U8 `5 r- h

% E7 E5 `* {) z+ \6 ^
$ R2 C9 O' B9 e5 w& v6 Z8 X& M" N
收藏 评论0 发布时间:2021-12-9 10:46

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版