【STM32】STM32学习笔记-GPIO输出(05)

00. 目录

01. GPIO简介

  • GPIO(General Purpose Input Output)通用输入输出口
  • 可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。

  • 输入浮空

  • 输入上拉

  • 输入下拉

  • 模拟输入

  • 开漏输出

  • 推挽式输出

  • 推挽式复用功能

  • 开漏复用功能

每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。

02. GPIO基本结构

系统结构

在这里插入图片描述

基本结构

在这里插入图片描述

03. GPIO位结构

I/O端口位的基本结构

在这里插入图片描述

5伏兼容I/O端口位的基本结构

在这里插入图片描述

04. GPIO模式

通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

在这里插入图片描述

4种输入模式

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

4种输出模式

  • 开漏输出
  • 开漏复用功能
  • 推挽式输出
  • 推挽式复用功能

3种最大翻转速度:

  • 最大输出速度为2MHz
  • 最大输出速度为10MHz
  • 最大输出速度为50MHz

4.1 输入浮空

浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。所以在要读取外部信号时通常配置IO口为浮空输入模式。
在这里插入图片描述

4.2 输入上拉

上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;并且在I/O端口输入为低电平的时候,输入端的电平为低电平。

在这里插入图片描述

4.3 输入下拉

下拉输入模式下,IO口工作方式刚好和上拉模式相反。I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;并且在I/O端口输入为高电平的时候,输入端为高电平。
在这里插入图片描述

4.4 模拟输入

模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等等。

在这里插入图片描述

4.5 开漏输出

开漏输出模式下,通过设置位设置/清除寄存器或者输出数据寄存器的值,控制MOS管的导通。这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平。通常使用开漏输出时外部要加一个上拉电阻。

在这里插入图片描述

4.6 开漏复用功能

开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。

在这里插入图片描述

4.7 推挽式输出

推挽输出模式下,通过设置位设置/清除寄存器或者输出数据寄存器的值,控制P-MOS管和N-MOS管的导通来控制IO口输出高电平还是低电平。这里要注意P-MOS管和N-MOS管,当设置输出的值为1的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的电平就由P-MOS管决定为高电平;当设置输出的值为0的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口的电平就由N-MOS管决定为低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,此时I/O端口的电平一定是输出的电平。

在这里插入图片描述

4.8 推挽式复用功能

推挽复用输出模式,与推挽输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。

在这里插入图片描述

05. LED和蜂鸣器简介

  • LED:发光二极管,正向通电点亮,反向通电不亮
  • 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定
  • 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音
    在这里插入图片描述

硬件电路
在这里插入图片描述

06. 面包板

在这里插入图片描述

面包板描述

在这里插入图片描述

面包板使用示例

在这里插入图片描述

在这里插入图片描述

07. 附录

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 13:38:03       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 13:38:03       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 13:38:03       10 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 13:38:03       13 阅读

热门阅读

  1. Spring Task

    2023-12-08 13:38:03       37 阅读
  2. Swagger PHP Thinkphp 接口文档

    2023-12-08 13:38:03       45 阅读
  3. 一、C#笔记

    2023-12-08 13:38:03       32 阅读
  4. QT学习随记 (二)—— QT基础

    2023-12-08 13:38:03       36 阅读
  5. 一起学习云计算

    2023-12-08 13:38:03       34 阅读
  6. 我的创作纪念日

    2023-12-08 13:38:03       46 阅读
  7. Ubuntu环境下使用nginx实现强制下载静态资源

    2023-12-08 13:38:03       35 阅读
  8. Ubuntu开机出现Welcome to emergency mode解决办法

    2023-12-08 13:38:03       56 阅读
  9. Appium:iOS部署

    2023-12-08 13:38:03       34 阅读
  10. 源代码编译cuda opencv

    2023-12-08 13:38:03       37 阅读
  11. opencv学习一:namedWindow()创建和显示窗口

    2023-12-08 13:38:03       34 阅读