|
STM32 GPIO详解 2 `$ B6 [3 N. L2 q 下文将根据STM32F207参考手的中GPIO框图讲解GPIO功能。- u( }6 E' s7 ]8 | 2 A5 {0 c: ?% A. @) H/ }) V 01、I/O接口电路" z1 K* y2 @4 ? 带FT的是说明可以容忍5V电压的,I/O电路框图5 V! F$ ^" B; V5 O1 W2 n2 `% L1 ^
普通输入模式下,上拉和下拉电阻(微弱)的存在,共分3种模式- G4 f( s/ e- ~6 v1 c3 I + M# r( z0 Q1 s 1、浮空输入,不使能上拉电阻,不使能下拉电阻: _! W4 h6 o8 y' t, f 2、上拉输入,使能上拉电阻 3、下拉输入,使能下拉电阻6 Z! @& y+ m* [8 Q
1.2、普通输出 普通输入模式下,上拉和下拉电阻(微弱)的存在。主要是由于P-MOS和N-MOS的存在分为下列两种模式8 o [: s. V# J1 `! `+ W 开漏模式:输出寄存器是 0 时,激活 N-MOS, 而输出寄存器是 1 时,端口保持高阻态(P-MOS 不会被使能) 推挽输出: 输出寄存器是 0 时,激活 N-MOS, 而输出寄存器是 1 时,激活 P-MOS
1、在普通输出模式中,TTL施密特触发器是打开的,所以读输入数据寄存器,可以得到 I/O 的状态。 2、驱动GPIO输出,我们可以采用输出寄存器也可以使用位段( ]; E# F* v( }4 [/ w4 r* g 1.3、模拟输入0 z7 r7 m$ b- o3 O$ o 模拟输入上拉电阻和下拉电阻是没有用的 ) p$ n; Z7 S$ A! e 高阻态下模拟输入7 @8 F- a1 @/ i$ C
. e) \3 o* |! p" [8 N) n 弱上拉和下拉电阻禁止 3 s. ^7 Q9 O5 D4 ~& Q 施密特触发器停用,施密特触发器输出值强制为0. l+ q) b$ g3 V% a7 X0 S , a( p6 L* n" T6 Y; Z! a$ r0 K- U9 R 8 {( F2 t' u# I8 H8 | 输出缓存被禁止 2 I8 B7 m# Y6 G0 T % u% l" i* q- [; D5 h% J7 V( o 读输入数据期存器, 读到的值为0 7 P' I/ n1 f9 }) _ 注意:IO配置成模拟输入时,不能容忍5V电压 ! |5 q) m. E; F 1.4、复用输出* M' v0 v' P! k9 t 复用输出框图
输出缓存被来自外设的信号驱动(发送数据器使能和数据),也即是位设置/清除寄存器和输出数据寄存器在这里是无用的+ \" d3 d7 n( Y 由于P-MOS和N-MOS使能,仍然可以配置成推挽输出和开漏输出 " i& B( j5 H, Z; r 上拉电阻和下拉电阻使能,可以进行配置( \" p2 x3 x: i; ~7 }& N 1 v+ k3 g* J. l/ P ; R$ k( n8 h! o H& I* ~: Q* V0 U TTL施密特触发器使能 ' u# b1 y# k3 U) ?& C {0 J$ r2 ]' ]7 K' ^ 可以通过读输入数据寄存器, 可以得到 I/O 的状态: U3 r* N7 c! W' [ 02、管脚复用和重映射# M& ~: Q7 m+ A, s& R 管脚复用和重映射(其实是一回事),STMF10X系列叫重映射,STMF20X系列叫管脚复用,也就是复用功能 J/ Q2 w7 p. A8 x& X" b1 q. C 2.1、STMF10X系列 STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。 P0 ~, S% v. ?1 C" J0 [5 g
STM32的单片机每个功能模块有自己的时钟系统,所以要想要调用STM32单片机的功能模块时必须先配置对应时钟,然后才能去操作相应的功能模块.端口重映射也一样.如图示:; C+ E+ y% B/ `/ h6 ?
9 E7 N9 s7 M% f; c1 h X; _9 ? 1.打开重映射时钟和USART重映射后的I/O口引脚时钟,
, W! S- S; q( h2 F2 j4 ]8 ^! @ GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);1 C% |2 T) i3 V2 R s8 Q: S 3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置." l8 K/ f$ I! U5 y0 N* n
STMF20X系列(包括之后的40系列)是没有重映射的说法,只有统一的称为复用功能。% F# I8 u9 ]' l) e9 K! N f: n
: J% \: D0 ]* i 备注:要先配置GPIO为复用功能,再调用复用的库函数
GPIO模式名字解释
# J7 M& R$ l' A; a0 F 推挽输出 可以输出强高低电平,连接数字器件。; \/ T& T! }& M1 Z; i/ o - H' R2 W1 K. ] k6 N# Z 开漏输出; R5 q$ s4 I8 i" \+ a) _4 [3 P# u2 o 只可以输出强低电平,高电平需要外部电阻拉高,输出端相当于三极管的集电极,要得到高电平,需要上拉电阻,适合做电流型的驱动,其吸收电流negligence相对强(一般20ma以内)6 h" q" y- t2 b* ]! o 7 R# x% C# H' z8 P % ?' j; N5 S- M 高阻态 + L% m& j' R. v I7 o6 B ' K- @! W/ q; I6 k3 U* X# }, Z& q ^ 高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定的。如果设置为浮空输入,也就是既没有上拉电阻,没有下拉电阻。可以认为是高阻态。/ ^4 ]! c. b$ [# @ % {& X8 N/ W' C5 O* g6 m3 u ! ?! q" x1 e+ H ; C+ M1 E% ^8 j! A / t8 Q4 ~/ S; V/ | " _; m3 G0 B; r2 }1 p) n7 |3 F7 q3 u7 L |
ST25 + STSAFE 助力IOT应用创新
STM32 NFC驱动开发
ST25R3920B 汽车NFC读卡器
用于CCC数字钥匙和汽车中控台的汽车级高性能NFC读卡器
[中秋活动]使用STM32L552驱动25R3916C操作NFC
技术文| 如何使用J-Link烧录SPI Flash
STM32四种库对比:寄存器、标准外设库、HAL、LL-51
技术小课堂| 如何使用J-Link烧录SPI Flash
一文解析stm32产生spwm原理及程序
STM32通过PWM控制电机速度
微信公众号
手机版