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

【经验分享】stm32F1xx(一) GPIO工作原理 (正点原子P11)

[复制链接]
STMCU小助手 发布时间:2021-11-27 10:37
一 GPIO基本原理与寄存器配置
5 L- p" |4 D  c1 GPIO基本结构和工作方式
* O; c3 F: _0 H4 F. ]参考资料:: {4 K3 `: i+ e$ |4 T0 @! b3 n
战舰/精英STM32F1开发板
) ]2 ~) N- w0 O《STM32F1开发指南-库函数版本》-第六章 跑马灯实验6.1小节
% v1 g4 w8 b' I" s* kminiSTM32F1开发板
; N) ?  {. T; n  A; I+ i: \/ \《STM32不完全手册-库函数版本》-第六章 跑马灯实验6.1小节7 _6 m1 k" Y- ?5 O' U# G
STM32F1xx官方资料; Z) N: h$ p" ~( c" O
《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)7 B1 @% f9 \; w, l0 ~# a
芯片数据手册(datasheet)
2 m* @, W' r5 P3 n) @% u8 E2 l2 e
IO说明:# o9 H; L! \: o; W, p4 L6 ]  N
战舰版和精英版144引脚如STM32F103ZET6 一共7组IO 每组IO口有16个IO一共112个IO,从GPIOA-GPIOG
  E& H+ D4 g0 i5 D( i' Xmini版如STM32F103RCT6 一共4组IO 一共16*3+3=51个IO GPIOA-GPIOD
0 h( D  b4 e4 C- u! Q其中GPIOD只有GPIOD0-D29 b$ }' [; n) I/ x0 G, C
: W8 K9 }( n: G" u! K& f8 s
:STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口)
2 u& ]7 F. F6 G* r) @
. f; k3 i4 t9 Z6 e
20200525002658665.png

5 `* r2 n( r% Y注:大部分IO可容忍5V(有FT标识). w6 a( ^/ f  Y3 m( D2 D4 W

5 x8 e. r! [1 F, k4 {9 j

3 ]6 _6 f# b: s- q$ rGPIO工作方式9 I& t1 D" i' \9 V7 r$ y) [2 q, v# F4 h
4种输入模式:0 }- T) t# r! m
输入浮空& h: A. N4 C4 z! a8 z
输入上拉
' B/ m9 ?) \) F5 I1 |/ u4 v1 m+ ?* W输入下拉( c5 y! ~6 c1 E# }1 M9 G
模拟输入2 t+ n) H& U& ~9 v) d, F9 u2 Y

# ~% a, i6 f, `, D. D4种输出模式:
  O4 P$ p# ~2 V8 a6 m开漏输出: X1 v2 `+ D" d) z
开漏复用功能
5 _2 ?" i1 k6 N推挽式输出; [, t( S1 r# m8 {* k
推挽式复用功能5 B9 C5 ?9 c) Y9 A: K2 S: L. _  j# e8 H

- c* j7 L+ n( Y! {  |/ A: {* T. W参考资料:STM32八种IO口模式的区别.pdf
2 m6 Z% K1 E0 b0 d" q0 L0 `
, W* n& {9 ?( g8 s. T+ z3种最大翻转速度:% I) }# D- A% m( J/ k5 b* i- m
2MHZ. X2 l- S" d- |& U8 ?1 m0 i- A
10MHZ
7 o5 N; Y: K) D  |! H- x% F50MHZ# E& r* i! S. l" E# e6 j' O

5 e8 h; B8 ^1 T" {5 B% O+ p
20200525003355257.png
! ~5 @1 B, a% k2 f& D2 a3 H
20200525003442498.png
9 \6 M- A* C9 c3 n9 |( F  K
20200525003534339.png
. O& d" B$ O  K) L5 `* Z/ s
2020052500382392.png

/ g9 g6 ]4 }# z, f# B:如果写进去1 N-MOS处于关闭,输出值是由外部上拉或下拉决定的,所以读取的值不一定和写进去的一样。
$ k: C* @* j) a0 e4 m+ d% w$ ?) @3 [4 `0 U7 V0 S% ^1 ?5 L; d: S% J, J8 J. T
20200525004313574.png

1 M) z3 {! C+ |) g
20200525004421165.png
' v( k5 T( h* |/ K4 C6 \
20200525004500641.png
- E5 c- ~8 R" ^# v
参考帖子:http://www.openedv.com/posts/list/21980.htm
# b- _5 d6 M/ z# D$ \# a3 Q; D" [: z8 A
注:* B7 V. I! l8 `! Z$ ]# S
推挽输出可以输出强高低电平,连接数字器件;
) E( Q& `' T6 J8 G开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)
3 y- E! w% j4 F0 j: G) G$ w
7 y3 u9 C. ]4 E1 b2 N, H5 b& @2 GPIO寄存器说明: ~+ n' c5 i. Z4 \- z
每组GPIO端口的寄存器包括:
) t4 g( }8 D' k9 E) L1 d两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),
: T* f$ D* J1 q* L1 S两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),
8 d! H4 B5 k0 I3 a% W5 i! D一个32位置位/复位寄存器(GPIOx_BSRR),
' n2 ?' G: ]2 B' H; u一个16位复位寄存器(GPIOx_BRR),
; C6 V! K$ ^3 A7 E9 m; V) ?一个32位锁定寄存器(GPIOx_LCKR).# N* B* B+ I9 k9 q" G# [6 P

4 H& W( X6 Z/ i+ L8 T每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)7 Q+ Z. j3 ~/ i: }2 _

2 F! a; y" u  _1 ?
20200526223200588.png
) c4 P" }1 D# u7 C' e8 N- ~) ]
每四位控制一个IO 低两位是MODE 高两位是CNF 具体参数设置需要按表所需。
* h5 S( r' j6 ^7 b; D9 I7 w' [7 l; l( v; A) ~
20200526223736224.png

( C, x7 C. ]/ U) M  }8 R
20200526224117548.png

- R! L+ O; G8 Q7 J+ C7 R8 R
20200526224253747.png
; g( q: @* l% V0 v$ o! N, Y
输入模式下配置CRL或CRH 需要配合ODR配置成上拉或下拉% J5 H! P' D: N/ e  L

# O  T) i5 _) B7 [+ X+ u& V
20200526224912527.png

. K8 w1 u  {1 V; H; C* T% W. e$ l简单来说 配置BSRR可以单独对位操作,就是配置某一个位为1,其他位为0 时,配置0的不改变它本来的状态。而在ODR配置中,配0配1都会发生相应的改变。
9 f8 I) N  ~' Z! m( k3 @+ M  F5 K/ A/ y: z
2020052622533353.png

8 B0 H) t) h' K+ x( |% |7 ^1 y6 DBRR相当于BSRR的高16位。$ o: V) [9 P1 R+ q

( [2 b" J+ }/ I3 Q# U3 STM32F10x GPIO引脚说明
0 D: p/ h& P$ f$ j& z) v8 w2 {  ~( e7 p( p9 @
20200526230040553.png

! O. Y) V5 y* I6 K
20200526230106659.png

# t+ l7 R7 I7 y注:所有IO都可以作为中断输入7 F4 M- E. {' o% n; M5 \3 ?

! r7 x6 S8 \( L7 z0 {# U4 ]; L! K( a( k% N7 I. o7 w& k" O
20200525004041800.png
收藏 评论0 发布时间:2021-11-27 10:37

举报

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