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

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

[复制链接]
STMCU小助手 发布时间:2021-11-27 10:37
一 GPIO基本原理与寄存器配置
! x7 r0 Y, E/ y" d) b1 GPIO基本结构和工作方式
' L7 h; M( x2 C3 }2 D& ]参考资料:& J" O/ B" T6 D/ e
战舰/精英STM32F1开发板- P4 Z: Y. w2 I
《STM32F1开发指南-库函数版本》-第六章 跑马灯实验6.1小节
  G% s) ?, c5 X8 }3 R+ q# w# {miniSTM32F1开发板
  z1 F% A" T3 F8 i) ]《STM32不完全手册-库函数版本》-第六章 跑马灯实验6.1小节! Z: J. O! s/ E1 k; g; y) @) P
STM32F1xx官方资料2 y* V% a1 _' C( ]
《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)' \. D! f/ N1 R0 e
芯片数据手册(datasheet)# V+ a) Q- X- l) P* [  P, Y5 R

% r* }* e) R2 V5 B# ZIO说明:& o7 m- b7 C8 i2 K
战舰版和精英版144引脚如STM32F103ZET6 一共7组IO 每组IO口有16个IO一共112个IO,从GPIOA-GPIOG
7 F- }5 s  \5 ^1 Y. l3 imini版如STM32F103RCT6 一共4组IO 一共16*3+3=51个IO GPIOA-GPIOD. ^0 ~3 [! `3 l, C' N6 s2 z
其中GPIOD只有GPIOD0-D2- Z3 X0 K4 N5 Y8 c; ]& S" b

1 d/ H/ M! O) q:STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口)
; V5 x5 L  |6 @3 H  j7 Q. ]# k
0 ?' W" ~6 p$ }# m, c3 J" E0 X
20200525002658665.png
2 S9 f$ v; ?. @# j5 i( _( j' t
注:大部分IO可容忍5V(有FT标识)
8 w( B; \# u1 ]! T( m, w$ [! i' B8 l5 T% ^  g% ?8 ?, t

. Y9 m7 j% V2 S4 z! `; NGPIO工作方式
1 x. o  n# I: n6 ^3 h( D6 V4种输入模式:8 q2 c, L6 m9 a5 r, P
输入浮空; G% R( s5 C$ k+ C1 u. K6 f
输入上拉
7 j( O" ]4 w6 ]4 U% {9 d6 Y" S输入下拉4 |) ?: q% K4 l$ Q& _
模拟输入
% a# n# i1 q: ]3 O/ e
6 |  M. S# o1 j5 `2 ^4种输出模式:
( }; s8 g+ ~, Y开漏输出
) Q" m6 Y) b* H9 A. d开漏复用功能% {! m7 l& v4 L: l6 f
推挽式输出
7 P, k% X' ]# L, g推挽式复用功能, S% l% U. z. B

: g$ T+ n2 x0 ]2 D8 W参考资料:STM32八种IO口模式的区别.pdf
; M- z: n' E+ ]9 v$ v/ w
* {( \& D2 ?3 ^6 ^) l3 W+ {( |" r! U3种最大翻转速度:/ z3 @, l8 Q3 w( E% E% _8 Y
2MHZ
/ |& \9 _! X1 d4 ~( s8 q10MHZ
+ H: n7 v) K1 h. G+ {* K50MHZ
" l7 w1 \  `2 ^7 I! ]( z
8 Q' i' W. }; Y
20200525003355257.png

( S2 i! L7 k; I& o8 H0 b# C
20200525003442498.png
4 [& }5 J7 |; X
20200525003534339.png
' b$ {& g% r4 O7 p( \- X# ]8 T
2020052500382392.png
, a: g) Y, K& i0 i1 C+ F7 F4 `* Z# n
:如果写进去1 N-MOS处于关闭,输出值是由外部上拉或下拉决定的,所以读取的值不一定和写进去的一样。
* O4 |) j: g, {0 `3 N
/ d, `7 U0 e. J
20200525004313574.png

1 N7 U7 @: @! J6 a
20200525004421165.png

. _0 Q0 F2 ~$ S# c2 @& ]/ A1 L
20200525004500641.png
# `$ @" O' g- \% y5 {0 ^8 u5 T
参考帖子:http://www.openedv.com/posts/list/21980.htm
$ [/ E. @( F- o( e
6 b; j0 m. |& \注:: i8 ?) f' C9 D7 M
推挽输出可以输出强高低电平,连接数字器件;; G2 t+ C, v2 N9 d, y4 a
开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)
/ [( m4 P: K. K! T0 [  }  m; |2 Y3 Y/ c& q
2 GPIO寄存器说明
; ?% V3 I; {3 t每组GPIO端口的寄存器包括:
+ k: v& k( K" V1 J+ [) W两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),
; `6 ~/ D( f/ M# X2 }& E' P2 a! @两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),- M' s0 w- B+ V3 A
一个32位置位/复位寄存器(GPIOx_BSRR),
6 z; C4 z  ^; F; u; R* [5 Q) F一个16位复位寄存器(GPIOx_BRR),
/ A7 S3 c" h7 h8 R5 k% O. {6 `1 Z一个32位锁定寄存器(GPIOx_LCKR).
, ^9 x2 Y/ X5 V
3 a# ?2 u# m. Z, O每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)' L1 x  e3 P4 o% c# t: L1 u

: z' R! y) P5 O
20200526223200588.png
  {* S5 ~1 \  K$ c
每四位控制一个IO 低两位是MODE 高两位是CNF 具体参数设置需要按表所需。
/ S4 [2 _5 ^& [' v4 ^+ G) ^, |6 R; q1 M# L$ L( S
20200526223736224.png
/ z& e; O8 q( h& [0 ^5 `
20200526224117548.png
3 B3 B! o5 q5 Q) J4 f5 v
20200526224253747.png
$ |& D% _6 d: M
输入模式下配置CRL或CRH 需要配合ODR配置成上拉或下拉& J! a& @8 K, W' z6 s3 y
# p6 B& g3 z; C- ]) @
20200526224912527.png
+ K  A( z5 ^" _
简单来说 配置BSRR可以单独对位操作,就是配置某一个位为1,其他位为0 时,配置0的不改变它本来的状态。而在ODR配置中,配0配1都会发生相应的改变。
) K8 |4 N. F# \0 `' \
) K! g5 e  Q- c) B- I( c
2020052622533353.png
7 m( g4 j: Y" i: x: h; V* H
BRR相当于BSRR的高16位。
0 {% ^0 s& ?, Y/ z9 U+ j3 [/ `2 Q' [* L. S( N8 ]! C; h$ g# H9 D
3 STM32F10x GPIO引脚说明
1 x+ B' P* \, A) M) `8 ?7 u, [4 E3 l" [
20200526230040553.png
( T* z0 L" I9 ^& m9 p
20200526230106659.png
; C4 }3 H  F* f6 \* ?. k  [
注:所有IO都可以作为中断输入, [! A- h8 z" J

4 {0 x) R9 k) N7 `2 a5 U  p7 R& P: y$ s
# l4 n1 R1 |( s
20200525004041800.png
收藏 评论0 发布时间:2021-11-27 10:37

举报

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