00. 目录

文章目录

  • 00. 目录
  • 01. GPIO简介
  • 02. GPIO主要特性
  • 03. GPIO功能描述
  • 04. I/O引脚复用器和映射
  • 05. I/O端口控制寄存器
  • 06. I/O端口数据寄存器
  • 07. I/O数据位操作
  • 08. GPIO锁定机制
  • 09. GPIO寄存器描述
    • 9.1 GPIO端口模式寄存器 (GPIOx_MODER) (x = A..I)
    • 9.2 GPIO端口输出类型寄存器 (GPIOx_OTYPER) (x = A..I)
    • 9.3 GPIO端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..I/)
    • 9.4 GPIO端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I/)
    • 9.5 GPIO端口输入数据寄存器 (GPIOx_IDR) (x = A..I)
    • 9.6 GPIO端口输出数据寄存器 (GPIOx_ODR) (x = A..I)
    • 9.7 GPIO端口置位/复位寄存器 (GPIOx_BSRR) (x = A..I)
    • 9.8 GPIO复用功能低位寄存器 (GPIOx_AFRL) (x = A..I)
    • 9.9 GPIO复用功能高位寄存器 (GPIOx_AFRH) (x = A..I)
  • 10. 附录

01. GPIO简介

每个通用 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)。

02. GPIO主要特性

● 受控 I/O 多达 16 个
● 输出状态:推挽或开漏 + 上拉/下拉
● 从输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据
● 可为每个 I/O 选择不同的速度
● 输入状态:浮空、上拉/下拉、模拟
● 将数据输入到输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)
● 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限
● 锁定机制 (GPIOx_LCKR),可冻结 I/O 配置
● 模拟功能
● 复用功能输入/输出选择寄存器(一个 I/O 最多可具有 16 个复用功能)
● 快速翻转,每次翻转最快只需要两个时钟周期
● 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种

03. GPIO功能描述

根据数据手册中列出的每个 I/O 端口的特性,可通过软件将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式:
● 输入浮空
● 输入上拉
● 输入下拉
● 模拟功能
● 具有上拉或下拉功能的开漏输出
● 具有上拉或下拉功能的推挽输出
● 具有上拉或下拉功能的复用功能推挽
● 具有上拉或下拉功能的复用功能开漏

04. I/O引脚复用器和映射

微控制器 I/O 引脚通过一个复用器连接到板载外设/模块,该复用器一次仅允许一个外设的复用功能 (AF) 连接到 I/O 引脚。这可以确保共用同一个 I/O 引脚的外设之间不会发生冲突。

每个 I/O 引脚都有一个复用器,该复用器采用 16 路复用功能输入(AF0 到 AF15),可通过GPIOx_AFRL(针对引脚 0 到 7)和 GPIOx_AFRH(针对引脚 8 到 15)寄存器对这些输入进行配置。

● 完成复位后,所有 I/O 都会连接到系统的复用功能 0 (AF0)。
● 外设的复用功能映射到 AF1 至 AF13。
● Cortex™-M4F EVENTOUT 映射到 AF15。

05. I/O端口控制寄存器

每个 GPIO 有 4 个 32 位存储器映射的控制寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR),可配置多达 16 个 I/O。

GPIOx_MODER 寄存器用于选择 I/O 方向(输入、输出、AF、模拟)。

GPIOx_OTYPER 和 GPIOx_OSPEEDR 寄存器分别用于选择输出类型(推挽或开漏)和速度 (无论采用哪种 I/O 方向,都会直接将 I/O 速度引脚连接到相应的 GPIOx_OSPEEDR 寄存器位)。

无论采用哪种 I/O 方向,GPIOx_PUPDR 寄存器都用于选择上拉/下拉。

06. I/O端口数据寄存器

每个 GPIO 都具有 2 个 16 位数据寄存器:输入和输出数据寄存器(GPIOx_IDR 和GPIOx_ODR)。GPIOx_ODR 用于存储待输出数据,可对其进行读/写访问。通过 I/O 输入的数据存储到输入数据寄存器 (GPIOx_IDR) 中,它是一个只读寄存器。

07. I/O数据位操作

置位复位寄存器 (GPIOx_BSRR) 是一个 32 位寄存器,它允许应用程序在输出数据寄存器(GPIOx_ODR) 中对各个单独的数据位执行置位和复位操作。置位复位寄存器的大小是GPIOx_ODR 的二倍。

08. GPIO锁定机制

通过将特定的写序列应用到 GPIOx_LCKR 寄存器,可以冻结 GPIO 控制寄存器。冻结的寄存器包括 GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRL 和 GPIOx_AFRH。

要对 GPIOx_LCKR 寄存器执行写操作,必须应用特定的写/读序列。当正确的 LOCK 序列应用到此寄存器的第 16 位后,会使用 LCKR[15:0] 的值来锁定 I/O 的配置(在写序列期间,LCKR[15:0] 的值必须相同)。将 LOCK 序列应用到某个端口位后,在执行下一次复位之前,将无法对该端口位的值进行修改。每个 GPIOx_LCKR 位都会冻结控制寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR、GPIOx_AFRL 和 GPIOx_AFRH)中的对应位。

09. GPIO寄存器描述

9.1 GPIO端口模式寄存器 (GPIOx_MODER) (x = A…I)

GPIO port mode register
偏移地址:0x00
复位值:
● 0xA800 0000(端口 A)
● 0x0000 0280(端口 B)
● 0x0000 0000(其它端口)

9.2 GPIO端口输出类型寄存器 (GPIOx_OTYPER) (x = A…I)

GPIO port output type register
偏移地址:0x04
复位值:0x0000 0000

位 31:16 保留,必须保持复位值。
位 15:0 OTy[1:0] :端口 x 配置位 (Port x configuration bits) (y = 0…15)
这些位通过软件写入,用于配置 I/O 端口的输出类型。
0:输出推挽(复位状态)
1:输出开漏

9.3 GPIO端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A…I/)

GPIO port output speed register
偏移地址:0x08
复位值:
● 0x0000 00C0(端口 B)
● 0x0000 0000(其它端口)

9.4 GPIO端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A…I/)

GPIO port pull-up/pull-down register
偏移地址:0x0C
复位值:
● 0x6400 0000(端口 A)
● 0x0000 0100(端口 B)
● 0x0000 0000(其它端口)

位 2y:2y+1 PUPDRy[1:0] :端口 x 配置位 (Port x configuration bits) (y = 0…15)
这些位通过软件写入,用于配置 I/O 上拉或下拉。
00:无上拉或下拉
01:上拉
10:下拉
11:保留

9.5 GPIO端口输入数据寄存器 (GPIOx_IDR) (x = A…I)

GPIO port input data register
偏移地址:0x10
复位值:0x0000 XXXX(其中 X 表示未定义)

9.6 GPIO端口输出数据寄存器 (GPIOx_ODR) (x = A…I)

GPIO port output data register
偏移地址:0x14
复位值:0x0000 0000

9.7 GPIO端口置位/复位寄存器 (GPIOx_BSRR) (x = A…I)

GPIO port bit set/reset register
偏移地址:0x18
复位值:0x0000 0000

9.8 GPIO复用功能低位寄存器 (GPIOx_AFRL) (x = A…I)

GPIO alternate function low register
偏移地址:0x20
复位值:0x0000 0000

9.9 GPIO复用功能高位寄存器 (GPIOx_AFRH) (x = A…I)

GPIO alternate function high register
偏移地址:0x24
复位值:0x0000 0000

10. 附录

10.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

10.2 参考文档

STM32F4xx英文参考手册

【STM32】GPIO概述相关推荐

  1. STM32 GPIO的原理、特性、选型和配置

    目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...

  2. STM32——GPIO(2)

    STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. /* GPIO_InitTypeDef结构体 */ typedef enum {GPIO_Speed_10MHz = 1, // ...

  3. STM32——GPIO(1)

    STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. [对单片机的操作就是控制IO口] 一.GPIO(通用输入输出口) 1.选定需要的引脚(对应哪一个IO口): 2.配置需要的功能( ...

  4. MSP430 GPIO概述 第六章

    2.1 MSP430 GPIO概述 通用输入/输出接口(General Purpose Input/Output,简称GPIO)是单片机通过引脚来控制或者采集外部电路的接口,是单片机最基础的功能之一. ...

  5. STM32 GPIO BRR和BSRR寄存器

    STM32 GPIO BRR和BSRR寄存器 使用BRR和BSRR寄存器可以方便地快速地实现对端口某些特定位的操作,而不影响其它位的状态. 引脚的高.低电平控制,有3种方法(3个寄存器) 分别是通过G ...

  6. 关于STM32 GPIO配置基础概括

    一.词汇表 1.介绍常用词的定义: 缩略词 包含定义 AMR 绝对最大额定值(ABSOLUTE MAXIMUM RATINGS 更多地人称为: ABS) GPIO 通用输入/输出 GP 通用 P 推挽 ...

  7. STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置

    STM32 GPIO的配置寄存器(CRL.CRH)输入输出模式配置 1.学会使用寄存器设定所需IO的方向,学会配置CRL.CRH 2.理解如下代码的含义 //IO方向设置 #define DS18B2 ...

  8. STM32 GPIO工作原理

    STM32 GPIO工作原理 STM32引脚说明 STM32F103ZET6: 共有7组IO口,每组IO口有16个IO--共16X7=112个IO 编号为:GPIOA,GPIOB--GPIOG,从A到 ...

  9. STM32 GPIO LED和蜂鸣器实现【第四天】

    STM32 GPIO LED实现 原理图 一 .STM32大小说明 二.STM32时钟分析 三.GPIO分析 1.注意点 四.寄存器地址查找 1.写出GPIOF外设的所有寄存器地址 五.LED灯开发 ...

  10. 判断STM32 GPIO输入口的输入状态(高电平或低电平)

    判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE->IDR& GPIO_IDR_IDR2) { 函数体 ...

最新文章

  1. c语言utc时间转换北京时间_C/C++标准库之转换UTC时间到local本地时间详解
  2. 使用 html 标签嵌入Silverlight程序的一点小问题
  3. python读取data_转载 “ 理想国@Data ”重拾Python(5):数据读取 博客
  4. python tensorflow教程推荐_TensorFlow教程和文章推荐大全 -DZone AI
  5. Boost正则表达式
  6. python字典嵌套实例
  7. cmd pc如何开多个微信_抖音打击刷赞刷粉,240多个百万粉丝大V被封;微信PC版再更新...
  8. Spring Boot 如何使用拦截器、过滤器、监听器?
  9. LINUX使用patchelf增加/修改rpath
  10. python cms应用生成_Django:之ORM、CMS和二维码生成
  11. [2019 icpc徐州] H.Yuuki and a problem 带修改的主席树(主席树+树状数组)
  12. 【业界思考】Sam Altman 山姆奥特曼:Idea Generation 创意产生——优秀的创始人对任何事情都有很多想法
  13. 优化了的过关键点的光滑曲线拟合算法
  14. 四轴码垛机器人DH模型运动学
  15. 【翻译】 Intel(R) 800 Series序列网卡 ice 驱动安装
  16. linux一键克隆,使用shell一键克隆虚拟机
  17. CCNP课堂练习一:详解交换机vlan的介绍及通过交换机从逻辑上划分区域配置
  18. 百度交易中台之钱包系统架构浅析
  19. 【系统分析师之路】2017年系统分析师上午综合知识历年真题
  20. 计算机文化基础多选,计算机文化基础多选题..pdf

热门文章

  1. iOS ARC环境下dealloc的使用
  2. 6-1 求链式表的表长
  3. deepin linux桌面设置,在Deepin Linux桌面创建快捷方式
  4. Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加
  5. 操作系统lab2实验总结——Part1
  6. 51nod 1486 大大走格子(DP+组合数学)
  7. ionic overflow:auto失效
  8. 【drp 11】使用Junit简单测试接口方法
  9. VS.net中快捷键收缩和展开代码段
  10. [转]sleep和wait有什么区别