• STM32F103之GPIO学习记录


    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的寄存器图

  • 相关阅读:
    A Look Inside Presentation Controllers
    iOS用户数据安全:Keychain、Touch ID以及1Password
    iOS开发UI篇—UITableView全面解析
    iOS 上的相机捕捉
    iOS UIScrollView
    ViewController类中得方法和属性的用途
    ios 中__bridge,__bridge_transfer和__bridge_retained详解
    __weak如何实现对象值自动设置为nil
    iOS开发UI篇—UIWindow简单介绍
    iOS:App启动过程详解
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/12178299.html
Copyright © 2020-2023  润新知