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. 2019-08-10 纪中NOIP模拟B组

    T1 [JZOJ1235] 洪水 题目描述 一天, 一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安全的. 森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示 ...

  2. 3ds Max File Format (Part 1: The outer file format; OLE2)

    The 3ds Max file format, not too much documentation to be found about it. There are some hints here ...

  3. ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇]

    链接:https://www.cnblogs.com/artech/archive/2007/09/13/891262.html 相信大家都使用过ASP.NET进行过基于Web的应用开发,ASP.NE ...

  4. path is not a working copy directory

    svn: 'G:\chengXu\2017_Year\JFW\Easy7\WebRoot' is not a working copy directory 解决方法: (1)原因:eclipse把sr ...

  5. 函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。

    1 char *match( char *s, char ch1, char ch2 ){ ; ; ; while(s[len]){ len++; } *len+];//防止s字符串全满导致t溢出 * ...

  6. web-css-文本

    一.文本的水平对齐方式 使用text-align来设置文本的对齐方式:text-align的取值:left(向左对齐)/center(水平居中对齐)/right(向右对齐)/justify(两端对齐) ...

  7. IntelliJ IDEA 2017.3尚硅谷-----关联数据库

  8. 使用 NuGet 包管理器在 Visual Studio 中安装和管理包

    https://docs.microsoft.com/zh-cn/nuget/consume-packages/install-use-packages-visual-studio 通过 Window ...

  9. 题解【CodeForces1154A】Restoring Three Numbers

    Description Polycarp has guessed three positive integers \(a\), \(b\) and \(c\). He keeps these numb ...

  10. Wordpress里提示警告信息creating default object from empty value in *** 的解决方法

    PHP里提示 Creating default object from empty value 的问题,一般是由于PHP版升级的原因,PHP 5.4 以上的版本一般会报这个错误.PHP的解决方法:找到 ...