STM32F4 GPIO

概述

  GPIO,即通用I/O(输入/输出)端口,是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32F407有9组IO。分别为GPIOA~GPIOH,除了GPIOH只有两个IO引脚外,每组IO有16根引脚,一共114个I/O引脚。
  每组通用I/O端口包括:
4个32位寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2个32位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)、1个32 位置位/复位寄存器 (GPIOx_BSRR)、1个32位锁定寄存器(GPIOx_LCKR)和2个32位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

寄存器 功能
配置寄存器GPIOx_MODER 配置IO引脚为输入或输出,复用功能,模拟模式
端口引脚输出类型寄存器GPIOx_OTYPER 配置IO引脚的输出类型为推挽输出或开漏输出
端口引脚输出速度寄存器GPIOx_OSPEEDR 配置引脚的响应速度为2MHz,25MHz,50MHz,100MHz
端口上拉/下拉寄存器 (GPIOx_PUPDR) 设置上拉或下拉,或者都不要
端口引脚输入数据寄存器GPIOx_IDR 输入模式,用于输入设备,如读IO引脚对应此寄存器的位判断按键是否按下
端口引脚输出数据寄存器GPIOx_ODR 输出模式,输出需要的高电平或低电平
置位/复位寄存器GPIOx_BSRR 对GPIOx_ODR的位进行置位或清零操作
锁定寄存器GPIOx_LCKR) 锁定端口引脚的位置,直到系统复位才能解除锁定
复用功能高位选择寄存器GPIOx_AFRH 用于配置高位引脚8~15的复用功能
复用功能低位选择寄存器GPIOx_AFRL 用于配置低位引脚0~7的复用功能

GPIO功能描述

  GPIO可以配置成如下模式,实际应用中应该配置成什么模式,可以根据连接的外设来决定:
   输入浮空
   输入上拉
   输入下拉
   模拟功能
   具有上拉或下拉功能的开漏输出
   具有上拉或下拉功能的推挽输出
   具有上拉或下拉功能的复用功能推挽
   具有上拉或下拉功能的复用功能开漏

GPIO端口位基本结构

输入浮空


  该模式下,I/O引脚的电平信号直接进入输入数据寄存器读取数据。处理器直接读取I/O引脚电平,I/O引脚的电平状态完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。

输入上拉


  该模式下,I/O引脚内部接上拉电阻(内部上拉),此时如果I/O引脚外部没有信号输入或者引脚悬空,I/O引脚默认为高电平 如果I/O引脚输入低电平,那么引脚就为低电平,处理器读取到的就是低电平,但是STM32的内部上拉电阻是"弱上拉",输出的电流很微弱,如要求大电流还是需要外部上拉。

输入下拉


  与输入上拉相反的就是输入下拉,也就是当I/O引脚外部没有信号输入或者引脚悬空,I/O引脚默认为低电平,如果I/O引脚输入高电平,那么引脚就为高电平。

模拟功能


  该模式下,I/O引脚用于ADC采集电压的输入通道时,用作"模拟输入"功能,此时信号不经过施密特触发器,直接直接进入ADC模块,并且输入数据寄存器为空 ,处理器不能在输入数据寄存器上读到引脚状态,当I/O用于模拟功能时,引脚的上、下拉电阻不需配置。

具有上拉或下拉功能的开漏输出


  该模式下,P-MOS管完全不工作,当需要输出高电平时,N-MOS管呈现高阻态,I/O引脚电平完全由外部上拉或下拉电阻决定,当需要输出低电平时,N-MOS将被导通,电流被引到地中,输出低电平0V;此模式施密特触发器是打开的,当有输入数据时可以读取输入数据寄存器,内部上拉和下拉电阻的作用是控制在没有输出时IO引脚电平。

具有上拉或下拉功能的推挽输出


  该模式下,P-MOS管和N-MOS管一起工作,当需要输出高电平时P-MOS被导通,I/O引脚输出电平VDD,当需要输出低电平是N-MOS管被导通,输出电平VSS(公共接地端电压),当有输入数据时可以读取输入数据寄存器,内部上拉和下拉电阻的作用是控制在没有输出时IO引脚电平。

具有上拉或下拉功能的复用功能推挽和开漏


  此模式下除了输出控制源不同,其他的都和普通的开漏和推挽输出一样,需要注意的是输出数据寄存器GPIOx_ODR是无效的。

总结

  1.STM32F4有很多的内置外设,这些外设的外部引脚都是与GPIO共用的。如果想使用一GPIO内置外设的功能引脚,就需要复用GPIO作为内置外设,比如说I2C,SPI,USART等等的引脚就需要;
  2.芯片数据手册的引脚定义中记录了每个I/O引脚是否支持5V;
  3.开漏输出模式应用在电平不匹配场合,利用一个外部上拉电阻来匹配电平;推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合;
  4.上下拉电阻可以增加驱动能力,当传输距离过大时便可以使能上下拉电阻。

相关下载

链接:https://pan.baidu.com/s/10gTR5-5cFMnb9XZZmtxjsQ 
提取码:nfsj 
复制这段内容后打开百度网盘手机App,操作更方便哦
posted @ 2021-02-13 18:28  ding-ding-light  阅读(770)  评论(0编辑  收藏  举报