STM32入门教程GPIO.docx

上传人:b****6 文档编号:3238929 上传时间:2022-11-20 格式:DOCX 页数:7 大小:187.90KB
下载 相关 举报
STM32入门教程GPIO.docx_第1页
第1页 / 共7页
STM32入门教程GPIO.docx_第2页
第2页 / 共7页
STM32入门教程GPIO.docx_第3页
第3页 / 共7页
STM32入门教程GPIO.docx_第4页
第4页 / 共7页
STM32入门教程GPIO.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

STM32入门教程GPIO.docx

《STM32入门教程GPIO.docx》由会员分享,可在线阅读,更多相关《STM32入门教程GPIO.docx(7页珍藏版)》请在冰豆网上搜索。

STM32入门教程GPIO.docx

STM32入门教程GPIO

 STM32GPIO使用方法

一、STM32GPIO简介

GPIO即通用I/O(输入/输出)端口,是STM32可控制的引脚。

STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

以STM32F407为例,其为F4系列是基于Cortex-M4内核,共有7组IO。

分别为GPIOA~GPIOG,每组IO有16个IO口,共有112个IO口通常称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

 STM32GPIO的复用:

STM32有很多的内置外设,这些外设的外部引脚都是与GPIO共用的。

也就是说,一个引脚可以有很多作用,但是默认为IO口,如果想使用一个GPIO内置外设的功能引脚,就需要GPIO的复用,那么当这个GPIO作为内置外设使用的时候,就叫做复用。

比如说串口就是GPIO复用为串口。

二、GPIO的工作模式

1、4种输入模式

(1)GPIO_Mode_IN_FLOATING浮空输入

(2)GPIO_Mode_IPU上拉输入

(3)GPIO_Mode_IPD下拉输入

(4)GPIO_Mode_AIN模拟输入

2、4种输出模式

(1)GPIO_Mode_Out_OD开漏输出(带上拉或者下拉)

(2)GPIO_Mode_AF_OD复用开漏输出(带上拉或者下拉)

(3)GPIO_Mode_Out_PP推挽输出(带上拉或者下拉)

(4)GPIO_Mode_AF_PP复用推挽输出(带上拉或者下拉)

3、4种最大输出速度

(1)2MHZ(低速)

(2)25MHZ(中速)

(3)50MHZ(快速)

(4)100MHZ(高速)

关于它们的定义,都在stm32f4xx_gpio.h中,都为结构体形式的定义

三、GPIO内部结构

a、保护二极管:

IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入,当引脚电压高于VDD_FT时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁

b、上拉、下拉电阻:

控制引脚默认状态的电压,开启上拉的时候引脚默认电压为高电平,开启下拉的时候引脚默认电压为低电平

c、TTL施密特触发器:

基本原理是当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;IO口信号经过触发器后,模拟信号转化为0和1的数字信号也就是高低电平并且是TTL电平协议这也是为什么STM32是TTL电平协议的原因

d、P-MOS管和N-MOS管:

信号由P-MOS管和N-MOS管,依据两个MOS管的工作方式,使得GPIO具有“推挽输出”和“开漏输出”的模式P-MOS管高电平导通,低电平关闭,下方的N-MOS低电平导通,高电平关闭

注:

 

 VDD_FT 代表IO口,兼容3.3V和5V,如果没有标注“FT”,就代表着不兼容5V (在芯片数据手册的引脚定义中,会看到有“I/O电平”一列 有FT即为支持5V)

开漏输出和推挽输出的区别:

推挽输出:

可以输出强高低电平,连接数字器件,推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.

开漏输出:

可以输出强低电平,高电平得靠外部电阻拉高。

输出端相当于三极管的集电极.需要外接上拉电阻,才能实现输出高电平合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内);在使用任何一种开漏模式时,都需要接上拉电阻,否则只能输出低电平

推挽输出电路:

其中IN端输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当IN端输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平

开漏输出电路:

IN端输出低电平时,三极管导通,使输出接地,IN端输出高电平时,三极管截止,所以引脚既不输出高电平,也不输出低电平,为高阻态。

为正常使用时必须接上拉电阻,

四、STM32中如何选用IO模式:

1、上拉输入、下拉输入可以用来检测外部信号;例如,按键等;

2、模拟输入——应用ADC模拟输入,或者低功耗下省电

3、开漏输出一般应用在I2C、SMBUS通讯等需要"线与"功能的总线电路中。

4、推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。

在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

5、复用功能的推挽输出_AF_PP——片内外设功能(I2C的SCL,SDA)

6、复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

五、STM32的GPIO配置方法

1.使能GPIO的AHB时钟,使用函数:

  

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx,ENABLE);

2、配置GPIO工作模式,使用GPIO_Init()函数设置工作模式

数据类型说明

typedefstruct

{

 uint32_tGPIO_Pin;       //引脚配置

GPIOMode_TypeDefGPIO_Mode; //GPIO_Mode_IN(输入),GPIO_Mode_OUT(输出),GPIO_Mode_AF(备用),GPIO_Mode_AN(模拟)

 

GPIOSpeed_TypeDefGPIO_Speed;//GPIO_Speed_2MHz,GPIO_Speed_25MHz,GPIO_Speed_50MHz,GPIO_Speed_100MHz

GPIOOType_TypeDefGPIO_OType;  //GPIO_OType_PP(推挽),GPIO_OType_OD(开漏)

GPIOPuPd_TypeDefGPIO_PuPd;   GPIO_PuPd_NOPULL(无),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)

}GPIO_InitTypeDef;

3、备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数

voidGPIO_PinAFConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_PinSource,uint8_tGPIO_AF)

*     ThisGPIO_AFcanbeoneofthefollowingvalues:

 *      @argGPIO_AF_RTC_50Hz:

ConnectRTC_50HzpintoAF0(defaultafterreset) 

 *      @argGPIO_AF_MCO:

ConnectMCOpin(MCO1andMCO2)toAF0(defaultafterreset) 

 *      @argGPIO_AF_TAMPER:

ConnectTAMPERpins(TAMPER_1andTAMPER_2)toAF0(defaultafterreset) 

 *      @argGPIO_AF_SWJ:

ConnectSWJpins(SWDandJTAG)toAF0(defaultafterreset) 

 *      @argGPIO_AF_TRACE:

ConnectTRACEpinstoAF0(defaultafterreset)

 *      @argGPIO_AF_TIM1:

ConnectTIM1pinstoAF1

 *      @argGPIO_AF_TIM2:

ConnectTIM2pinstoAF1

 *      @argGPIO_AF_TIM3:

ConnectTIM3pinstoAF2

 *      @argGPIO_AF_TIM4:

ConnectTIM4pinstoAF2

 *      @argGPIO_AF_TIM5:

ConnectTIM5pinstoAF2

 *      @argGPIO_AF_TIM8:

ConnectTIM8pinstoAF3

 *      @argGPIO_AF_TIM9:

ConnectTIM9pinstoAF3

 *      @argGPIO_AF_TIM10:

ConnectTIM10pinstoAF3

 *      @argGPIO_AF_TIM11:

ConnectTIM11pinstoAF3

 *      @argGPIO_AF_I2C1:

ConnectI2C1pinstoAF4

 *      @argGPIO_AF_I2C2:

ConnectI2C2pinstoAF4

 *      @argGPIO_AF_I2C3:

ConnectI2C3pinstoAF4

 *      @argGPIO_AF_SPI1:

ConnectSPI1pinstoAF5

 *      @argGPIO_AF_SPI2:

ConnectSPI2/I2S2pinstoAF5

 *      @argGPIO_AF_SPI3:

ConnectSPI3/I2S3pinstoAF6

 *      @argGPIO_AF_I2S3ext:

ConnectI2S3extpinstoAF7

 *      @argGPIO_AF_USART1:

ConnectUSART1pinstoAF7

 *      @argGPIO_AF_USART2:

ConnectUSART2pinstoAF7

 *      @argGPIO_AF_USART3:

ConnectUSART3pinstoAF7

 *      @argGPIO_AF_UART4:

ConnectUART4pinstoAF8

 *      @argGPIO_AF_UART5:

ConnectUART5pinstoAF8

 *      @argGPIO_AF_USART6:

ConnectUSART6pinstoAF8

 *      @argGPIO_AF_CAN1:

ConnectCAN1pinstoAF9

 *      @argGPIO_AF_CAN2:

ConnectCAN2pinstoAF9

 *      @argGPIO_AF_TIM12:

ConnectTIM12pinstoAF9

 *      @argGPIO_AF_TIM13:

ConnectTIM13pinstoAF9

 *      @argGPIO_AF_TIM14:

ConnectTIM14pinstoAF9

 *      @argGPIO_AF_OTG_FS:

ConnectOTG_FSpinstoAF10

 *      @

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1