STM32 GPIO 简介
目录
二、GPIO输入模式
三、GPIO输出模式
四、GPIO配置
一、简单了解GPIO
GPIO(general porpose intput output) 是通用输入输出端口的简称。可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。
二、GPIO输入模式
GPIO基本结构:
1、浮空输入模式
输入通路如图所示
从右端I/O引脚输入,通过TTL肖特基触发器的送入进入到“输入数据寄存器”,之后被CPU读出I/O口电平状态。
2、输入上拉模式
与浮空输入模式相比,输入上拉模式是在通道上端增加一个上拉电阻。根据STM32的数据手册,这个上拉电阻阻值介于30K~50K欧姆。
3、输入下拉模式
输入上拉模式是在通道下端增加一个下拉电阻。根据STM32的数据手册,这个上拉电阻阻值介于30K~50K欧姆。
4、模拟输入模式
从I/O口进入,直接进入ADC模块。模拟输入配置下,CPU不能在“输入数据寄存器”上读到有效的数据。
对于要加上拉或下拉电阻:
当作单片机作为输入时,假设我们直接在IO端口接一个按键到地(或电源)。
因为按键按,于不按管脚都是悬空的。单片机就很难检测按键是否按下。
所以人为的接一个上拉(或下拉)。以确定未按下的时候IO输入电平的状态
三、GPIO输出模式
1、开漏输出_OUT_OD
开漏输出工作原理图:
当CPU 在最左端通过“位设置/ 清除寄存器”或“输出数据寄存器”写入数据后,该数据位将通过输出控制电路传送到右端的I/O端口。
如果CPU 写入的是逻辑“1 ”,则中部的N-MOS管将处于关闭状态,此时I/O 端口的电平将由外部的上拉电阻决定
如果CPU 写入的是逻辑“0 ”,则中部的N-MOS管将处于开启状态,此时I/O端口的电平被的N-MOS管拉到了“地”的零电位
在图中的上半部,TTL触发器处于开启状态,这意味着CPU 可以在“输入数据寄存器”的另一端,随时可以监控I/O端口的状态。通过这个特性,还可以实现了虚拟的I/O端口双向通信:假如CPU 输出逻辑“1 ”,由于的N-MOS管处于关闭状态,I/O 端口的电平将完全由外部电路决定。因此,CPU 可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1 ”。
2、推挽输出_OUT_PP
GPIO的推挽输出模式是在开漏输出模式的基础上,在“输出控制电路”之后,增加了一个P-MOS管当CPU输出逻辑“1 ”时,P-MOS管导通,而下方的N-MOS管截止,达到输出高电平的目的;当CPU输出逻辑“0 ”时,P-MOS管截止,而下方的N-MOS管导通,达到输出低电平的目的。在这个模式下,CPU 仍然可以从“输入数据寄存器”读到该IO端口电压变化的信号。
3、开漏复用输出_AF_OD
GPIO的开漏复用输出模式与开漏输出模式的工作原理基本相同,不同的是输入的源不同,它是和复用功能的输出端相连,此时的“输出数据寄存器”被输出通道给断开了。
4、推挽复用输出_AF_PP
GPIO的推挽复用输出模式与推挽输出模式的工作原理基本相同,“输出控制电路” 输入是与复用功能的输出端相连,此时“输出数据寄存器”被从输出通道断开了,片上外设的输出信号直接与“输出控制电路”的输入端想连接。我们将GPIO配置成复用输出功能后,假如相应的外设模块没有被激活,那么此时IO端口的输出将不确定。
四、GPIO配置(使用CubeMx)
1、先选择自己的单片机型号
这个是选择后的页面,这里选择的是STM32F103C8T6
2、要使用stlink,所以Debug选择如图。
3、设置RCC时钟,HSE选择外部晶振
4、时钟树配置 输入HCLK按回车,系统自动配置,这里选择最大频率
5、选择引脚输入或者输出,这里举PC13,选择其OUT_PUT
然后可以配置这个引脚,可以选择输入输出模式,以及上下拉电阻等进行设置
6、项目文件设置
包括设置项目名称,存储路径(必须是英文路径),选择所用IDE
7、生成代码
之后可以在main.c中进行代码的书写。