STM32 GPIO基本结构和工作模式及其寄存器配置

STM32引脚说明

1.以STM32F103ZET6为例

  • 144引脚,共有七组GPIO,GPIOA——GPIOG,一组有16个IO口,一共112个IO口
  • PA0——PA15

GPIO基本结构

  • ADC端口不容忍5V
  • FT都可以容忍5VSTM32 GPIO基本结构和工作模式及其寄存器配置_第1张图片

GPIO工作方式

输入方式

  • 浮空输入
  • 上拉输入
  • 下拉输入
  • 模拟输入

输出方式

  • 开漏输出
  • 复用开漏输出
  • 推挽输出
  • 复用推挽输出
    推挽输出:输出强高低电平,连接数字器件
    开漏输出:输出强低电平,高电平要靠外部上拉电阻

一组GPIO相关寄存器配置

1.两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)

  • (32+32)/4=16个IO口
  • 举个栗子:PA0口,MODE0(两个位):
  • 00:输入模式(复位状态)
    01:输出模式 10MHZ
    10:输出模式 2 MHZ
    11:输出模式 50MHZ
  • CNF0 (两个位):
    MODE0=0
    00:模拟输入模式
    01:浮空输入模式(复位后状态)
    10:上拉/下拉输入模式
    11:保留(空位)
    MODE0>0
    00:推挽输出方式
    01:开漏输出方式
    10:复用功能推挽输出方式
    11:复用功能开漏输出方式

2.两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)

  • GPIOx_IDR高16位保留,低16位保存输入的数据
  • GPIOx_ODR高16位保留,低16位输出数据,其次,每位可以配置输入方式位上拉还是下拉,上拉为1,下拉为0;举个栗子:PA0,输入方式为上拉,则最低位应该为1。

3.一个32位置位/复位寄存器(GPIOx_BSRR)

  • 低16位用来设置ODR寄存器,参考之前原理图,为1,则ODR对应位为1,为0无效;
  • 高16位用来设置ODR寄存器,为1,则ODR对应位为0,为0无效(不常用)

4.一个16位复位寄存器(GPIOx_BRR)

  • 低16位用来设置ODR寄存器,为1,则ODR对应位为0,为0无效(常用,跟BSRR高16位一样)
  • 高16位无效(保留)

5.一个32位锁定寄存器(GPIOx_LCKR)

  • 用的较少

端口复用

就是一个端口多个作用,举个栗子:鸡又可以下单,又可以杀了吃鸡肉。(公鸡除外)

重映射

举个栗子:PA9,PA10的串口(TX,RX)重映射到PB6,PB7;

STM32所有IO口都可以做为外部中断输入(这个牛逼)

你可能感兴趣的:(STM32,stm32)