zoukankan      html  css  js  c++  java
  • 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,操作更方便哦
    
  • 相关阅读:
    Cron表达式,springboot定时任务
    go 语言中windows Linux 交叉编译
    SSM框架处理跨域问题
    golang gin解决跨域访问
    关于Integer类的值使用==比较
    IoC注解
    spring基础知识
    SQL SERVER大话存储结构(3)_数据行的行结构
    SQL SERVER
    MySQL-记一次备份失败的排查过程
  • 原文地址:https://www.cnblogs.com/ding-ding-light/p/14395962.html
Copyright © 2011-2022 走看看