9 GPIO:通用I/O口 AFIO:可供选择的I/O口

9.1 GPIO功能描述

每一个通用的I/O口都有:

两个32位的配置寄存器(配置寄存器低和配置寄存器高);

两个32位的数据寄存器(输入数据寄存器,输出数据寄存器);

一个32位的位设置/复位寄存器;

一个16位的复位寄存器和1个32位锁定寄存器。

每个I/O口可以被软件配置为一下几种模式:

  • 浮点输入
  • 上拉输入
  • 下拉输入
  • 模拟
  • 开漏输出
  • 推挽输出
  • 推挽复用
  • 开漏复用

每个端口位可自由编程,但是端口寄存器必须以32位进行访问(不允许使用32位或8位进行访问)。

位设置复位寄存器和位复位寄存器的作用是允许对任何的GPIO寄存器进行原子读或修改。

这样的话,在读取和修改进入之间就不会有IRQ的风险。

上图是标准的I/O口的基本结构

该图中有三个基本的模块:输入驱动;输出驱动;寄存器。

在输入中改变两个开关决定是上拉还是下拉,不经过TTL施密特触发器就是模拟输入信号,

经过TTL施密特触发器就是复用功能输入,这些输入量可以流进片内外设。

通过输入数据寄存器可以读取输入的数据。

在输出驱动中,改变P-MOS和N-MOS决定是开漏还是推挽,输入信号的源头也是来自于片内外设。

通过位设置/复位寄存器和数据输出寄存器可以控制输出数据。

9.1.1 通用的I/O口

9.1.2 原子位置位或复位

9.1.3 外部中断唤醒

9.1.4 可以复用的功能

9.1.5 I/O复用功能的软件重新映射

9.1.6 GPIO锁定机制

9.1.7 输入配置

9.1.8 输出配置

9.1.9 复用功能配置

9.1.10 模拟配置

9.1.11 设备外设的GPIO配置

9.2 GPIO寄存器

9.2.1 端口配置寄存器低(GPIOx_CRL)(x=A..G)

9.2.2 端口配置寄存器高(GPIOx_CRH)(x=A..G)

9.2.3 端口输入数据寄存器(GPIOx_IDR)(x=A..G)

9.2.4 端口输出数据寄存器(GPIOx_ODR)(x=A..G)

9.2.5 端口位设置/复位寄存器(GPIOx_BSRR)(x = A..G)

9.2.6 端口位复位寄存器 (GPIOx_BRR)(x=A..G)

9.2.7 端口配置锁定寄存器(GPIOx_LCKP)(x=A..G)

9.3 可选功能I/O口以及调试配置

9.3.1 外部低速引脚

9.3.2 外部高速引脚

9.3.3 CAN1复用功能映射

9.3.4 CAN2复用功能映射

9.3.5 JTAG/SWD复用功能映射

9.3.6 ADC复用功能映射

9.3.7 Timer复用功能映射

9.3.8 USART复用功能映射

9.3.9 I2C1复用功能映射

9.3.10 SPI1复用功能映射

9.3.11 SPI3/I2S3复用功能映射

9.3.12 以太网复用功能映射

9.4 AFIO寄存器

9.4.1 事件控制寄存器(AFIO_EVCR)

9.4.2 AF重新映射和调试I/O配置寄存器(AFIO_MAPR)

9.4.3 外围中断配置寄存器1(AFIO_EXTICR1)

9.4.4 外围中断配置寄存器2(AFIO_EXTICR2)

9.4.5 外围中断配置寄存器3(AFIO_EXTICR3)

9.4.6 外围中断配置寄存器4(AFIO_EXTICR4)

9.4.7 AF重新映射和调试I/O配置寄存器2(AFIO_MAPR2)

9.5 GPIO和AFIO的寄存器图

STM32F103之GPIO学习记录的更多相关文章

  1. STM32F103之定时器学习记录

    /==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...

  2. STM32F103之DMA学习记录

    /================翻译STM32F103开发手册DMA章节===========================/ 13 DMA(Direct memory access) 13.1 ...

  3. STM32F103之ADC学习记录

    1.问题 1)10位ADC的误差是多少? 首先要分清分辨率与精度的区别. 10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm. 但不能说这把尺子的精度是1mm. 在冬天,尺子会热胀冷缩,依然 ...

  4. STM32F103之I2C学习记录

    26.3.1  模式选择 该外设可以在以下四种模式之一 1)从机发送模式 2)从机接收模式 3)主机发送模式 4)主机接收模式 IIC协议时序 MSB:Most Significant Bit(最高有 ...

  5. STM32F103之USART学习记录

    1.USART的主要特性 1)名称:串行异步通信接口 2)全双工.异步通信 3)发送和接收速率最高可达4.5MBits/s 4)可编程数据长度8或9bits 5)可配置的停止位:支持1或2位停止位 6 ...

  6. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  7. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  8. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  9. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

随机推荐

  1. 安装vmware tools后仍然不能拖拽文件

    运行/usr/bin/vmware-user文件 ./vmware-user

  2. 一点点学习PS--实战二

    本节实战,可以学到如何制作gif动图,制作搜狗输入法皮肤 1.工具使用 (1)滤镜--液化--膨胀:这里是制作出猫咪打呼时肚子和气泡胀大的效果 (2)图像--画布大小:可裁剪画布到指定像素,并且裁剪指 ...

  3. 其他-使用 ProcessExplorer 定位 win10 系统资源占用

    1. 概述 使用 ProcessExplorer 2. 环境 os win10 3. 背景 偶然在论坛上看到了一个工具 ProcessExplorer 作用是 定位当前桌面窗口 对应的 进程 我没有这 ...

  4. 苹果cms10 官方QQ微信防红防封代码

     代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. 5G套餐资费或为199元至599元,高昂价格会阻碍大众使用热情吗?

    近段时间,运营商各种谜一般的操作让其走上舆论的风口浪尖,成为人们口诛笔伐的对象.比如在前段时间,运营商相继宣布要取消"达量降速版畅享套餐",对用户的权益造成巨大冲击,引发了网络热议 ...

  6. Radar Installation(利用数据有序化进行贪心选择)

    English appre: an infinite straight line:一条无限长的直线 on the coasting:在海岸线上 Cartesian coordinate system, ...

  7. 解决 genymotion 安装apk报错 app contains ARM native code and your Genymotion device cannot run ARM instructions

    1.某些APP安装在模拟器时提示“ this probably means that the app contains ARM native code and your Genymotion devi ...

  8. ASP.NET + MVC5 入门完整教程三 (上) ---第一个MVC项目

    https://blog.csdn.net/qq_21419015/article/details/80420815 第一个MVC应用程序 1创建MVC项目 打开VS ,File--新建--项目,选择 ...

  9. apache 二级域名设置

    1. 你要拥有一个有泛域名解析的顶级域名,例如:test.com 在dns服务上设置,域名服务商都提供此服务 www.test.com      指向服务器IPtest.com          指向 ...

  10. Linux - Shell - cut: 低配 awk

    概述 简述 shell 命令行工具 cut 背景 偶尔需要用 awk 来筛选特定的列 awk 很是强大 但是强大的背后, 却伴随着复杂 其实同样的功能, awk 也没有复杂多少 如果是 简单的任务, ...