打印
[信息]

STM32:从菜鸟到牛人就是如此简单!转自张巧龙:湖工院教师

[复制链接]
楼主: 米多0036
手机看帖
扫描二维码
随时随地手机跟帖
21
米多0036|  楼主 | 2021-1-28 22:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

使用特权

评论回复
22
米多0036|  楼主 | 2021-1-28 22:46 | 只看该作者
由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。

使用特权

评论回复
23
米多0036|  楼主 | 2021-1-28 22:47 | 只看该作者
上拉输入/下拉输入/模拟输入

这几个概念很好理解,从字面便能轻易读懂。

使用特权

评论回复
24
米多0036|  楼主 | 2021-1-28 22:47 | 只看该作者
复用开漏输出、复用推挽输出

可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)

总结在STM32中选用IO模式

使用特权

评论回复
25
米多0036|  楼主 | 2021-1-28 22:48 | 只看该作者
1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

使用特权

评论回复
26
米多0036|  楼主 | 2021-1-28 22:49 | 只看该作者
2、带上拉输入GPIO_IPU——IO内部上拉电阻输入

使用特权

评论回复
27
米多0036|  楼主 | 2021-1-28 22:49 | 只看该作者
3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入

使用特权

评论回复
28
米多0036|  楼主 | 2021-1-28 22:50 | 只看该作者
4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电

使用特权

评论回复
29
米多0036|  楼主 | 2021-1-28 22:51 | 只看该作者
5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

使用特权

评论回复
30
米多0036|  楼主 | 2021-1-28 22:53 | 只看该作者
6、推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

使用特权

评论回复
31
米多0036|  楼主 | 2021-1-28 22:53 | 只看该作者
7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)

使用特权

评论回复
32
米多0036|  楼主 | 2021-1-28 22:54 | 只看该作者
8、复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

使用特权

评论回复
33
米多0036|  楼主 | 2021-1-28 22:56 | 只看该作者
04STM32设置实例

1、模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

使用特权

评论回复
34
米多0036|  楼主 | 2021-1-28 23:01 | 只看该作者
2、如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;

使用特权

评论回复
35
米多0036|  楼主 | 2021-1-28 23:02 | 只看该作者
通常有5种方式使用某个引脚功能

它们的配置方式如下:

1、作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。

使用特权

评论回复
36
米多0036|  楼主 | 2021-1-28 23:03 | 只看该作者
2、作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。

使用特权

评论回复
37
米多0036|  楼主 | 2021-1-28 23:04 | 只看该作者
3、作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。

使用特权

评论回复
38
米多0036|  楼主 | 2021-1-28 23:05 | 只看该作者
4、作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

使用特权

评论回复
39
米多0036|  楼主 | 2021-1-28 23:06 | 只看该作者
5、作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

使用特权

评论回复
40
米多0036|  楼主 | 2021-1-28 23:09 | 只看该作者
注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。比如要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。如果要使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。

-END-

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则