一,STM32的IO口,绝大部分都是兼容5V的,至于到底哪些兼容,大家可以去看STM32芯片的数据手册(注意是数据手册,不是参考手册),里面的引脚描述表(pin definitions)有详细的标注,凡是带FT标志的IO口,都是兼容5V。

二,举例

1,STM32F103ZET6:一共有7组IO口, 每组IO口有16个IO,一共16X7=112个IO
    
GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOG

STM32 GPIO基本结构

2,STM32F103RCT6:一共有4组IO口, 一共16X3+3=51个IO
  GPIOA0~A15,GPIOB0~B15,GPIOC0~C15,GPIOD0~D2

STM32 GPIO基本结构

三,STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口):

IO端口位的基本结构:

STM32 GPIO基本结构

四,GPIO的八种工作方式:

四种输入模式:输入浮空,输入上拉,输入下拉,模拟输入

四种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能

三种最大翻转速度:2MHZ,10MHz,50MHz

1,输入浮空模式
STM32 GPIO基本结构
2,输入上拉模式

STM32 GPIO基本结构

3,输入下拉模式

STM32 GPIO基本结构

4,模拟模式

STM32 GPIO基本结构

5,开漏输出模式

STM32 GPIO基本结构

6,开漏复用输出模式

STM32 GPIO基本结构

7,推挽输出模式

STM32 GPIO基本结构

8,推挽复用输出模式

STM32 GPIO基本结构

上电复位后,GPIO默认为浮空状态,部分特殊功能引脚为特定状态。

STM32 GPIO基本结构

推挽输出:
可以输出强高低电平,连接数字器件
开漏输出:
只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)


五,每组GPIO端口的寄存器包括:

两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) ,
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),
一个32位置位/ 复位寄存器(GPIOx_BSRR),
一个16位复位寄存器(GPIOx_BRR),
一个32位锁定寄存器(GPIOx_LCKR)。

每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。

每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。

STM32 GPIO基本结构

1,端口配置低寄存器(GPIOx_CRL)

STM32 GPIO基本结构

2,端口配置低寄存器(GPIOx_CRL)

STM32 GPIO基本结构

3,端口配置高寄存器(GPIOx_CRH)

STM32 GPIO基本结构

4,端口输入数据寄存器(GPIOx_IDR)

STM32 GPIO基本结构

5,端口输出数据寄存器(GPIOx_ODR)

STM32 GPIO基本结构

6,端口输出数据寄存器(GPIOx_ODR)

STM32 GPIO基本结构

7,端口位设置/清除寄存器(GPIOx_BSRR)

STM32 GPIO基本结构

8,端口位清除寄存器(GPIOx_BRR)

STM32 GPIO基本结构

六,端口多用

1,端口复用功能
   STM32的大部分端口都具有复用功能。所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。

  作用:最大限度的利用端口资源

STM32 GPIO基本结构
  作用:最大限度的利用端口资源

 2,端口重映射功能
   就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7
   作用:方便布线

STM32 GPIO基本结构

3,所有IO口都可以作为中断输入

 

 

相关文章: