![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
本期我们就介绍STM32的GPIO的各种模式。 k; l" ~# z, u8 {7 s+ U STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。 & F( e7 `+ M9 Y7 U. I 输入模式; ?5 {/ }5 u( c+ F' ~ 首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。 STM32单片机的IO口电平兼容CMOS电平和TTL电平。对于逻辑电平0,所代表的电压范围在0.8v以下,而大于2v的话则代表逻辑1。STM32工作电压范围为2V ≤ VDD ≤ 3.6V。对于COMS端口,逻辑0的电压范围为-0.3V ≤ VIL ≤ 1.164V。至于高电平,STM32支持5v和3.3v。具体须看STM32芯片手册以定。& _8 n9 |+ L2 |9 ]. u 而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。 ![]() 1 E+ R- V d2 |2 D/ d+ d5 a 输出模式 顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。! }) a/ }# d ^: K& y7 _" K ` 输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。 ![]() 如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。 # W( U# n( h# y2 v' r( |& N 推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。$ f, b! p% U$ X$ X/ w : C7 O. [$ p0 o8 R: T 但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。 ![]() 否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。) g3 q2 T( N9 R# l7 L: R 1 b5 s; z0 a4 N0 W6 u5 [ 而另一种模式则是:开漏输出. u+ _5 Y; S& o2 p, o0 z 1 N) Y' U, ?! q6 H: M5 g! A5 Q( u ![]() 由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。 模拟模式7 [0 w* C# ]) j7 X6 M3 f8 y& X' D 模拟模式通常应用在ADC或者DAC中。 ![]() 为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。) `; z5 ~$ i% P+ i$ J" x4 t) g ![]() 所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。 . h. n6 X; o( J( |$ f% ^% s; S 复用模式! X7 @" A' j$ W' u8 O! w. |8 j / p6 e' o; [8 J+ T r ![]() # U5 J" \. B- l2 j" H 复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。 最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。 ' E4 G t) o3 p' v0 s6 t2 ] ![]() * Y4 P8 N4 z) C' x2 h 转载自:电路小白& l+ I' N' A1 w 如有侵权请联系删除 |
Windows+VS Code+EIDE+STM32+gcc编程环境搭建
基于STM32上NanoEdgeAIStudio经验分享
基于STM32的快速傅里叶变换经验分享
基于STM32的硬件和软件IIC区别经验分享
基于STM3利用GPIO翻转模拟串口进行重定向经验分享
基于STM32利用傅里叶反变换进行数字滤波经验分享
基于STM32用机器学习实现心率异常检测经验分享
基于STM32上的机器学习实例经验分享
基于STM32上的板载运放经验分享
基于STM32中的板载运算放大器放大无偏置交流信号的测试