• STM32F103X datasheet学习笔记---GPIOs and AFIOs


    1.前言

    每个GPIO端口有如下几个寄存器进行操作:

    • 两个32位配置寄存器:GPIOx_CRL, GPIOx_CRH
    • 两个32位数据寄存器:GPIOx_IDR, GPIOx_ODR
    • 一个32位set/reset寄存器:GPOx_BSRR
    • 一个16位reset寄存器:GPIOx_BRR
    • 一个32位锁定寄存器:GPIOx_LCKR

    注:GPIO_BRR和GPIO_BSRR支持读写的原子访问

    每组GPIO的 port可以配置成如下的IO方式:

    2.GPIO基本结构

    图 标准GPIO位的基本结构

    图 port bit配置表

    图 输出模式bit

    3.GPIO功能描述

    3.1 通用目的IO(GPIO)

    •  reset过程中或刚reset后

    引脚的可选功能是无效的,端口被配置成Input Floating Mode(CNFx[1:0]=01b, MODEx[1:0]=00b).

     RESET后JTAG pin:PA15: JTDI in PU  、 PA14: JTCK in PD  、  PA13: JTMS in PU   、 PB4: NJTRST in PU

    • 配置为输出模式

    写到GPIOx_ODR中的值被输出到port引脚,可能使用的驱动模式:push-pull  or open-drain

    •  配置为输入模式

    GPIOx_IDR在每个APB2时钟周期会捕获IO引脚上的数据

    注:1.每个GPIO PIN都有一个弱上拉和一个弱下拉,在配置为输入模式时可以决定是否使能

    • 原子的bit set/reset

    在操作GPIO_ODR寄存器的时候没有必要关中断,通过写入GPIO_BRR或GPIO_BSRR来set或reset GPIO的相关port bit

    •  外部中断/唤醒线

    所有的gpio端口都具有中断/唤醒功能,要使用外部中断线,需要配置为输入功能

    • IO配置锁定功能

    当配置锁定功能后,GPIO的port bit将不能修改,除非reset

    • GPIO寄存器说明

    GPIO_CRL:设置GPIO低8个port bit的输入/输出模式、设置driver方式;

    GPIO_CRH:设置GPIO高8个port bit的输入/输出模式、设置driver方式;

    GPIO_IDR:显示每个GPIO port的输入值

    GPIO_ODR:设置每个GPIO port的输出值

    GPIO_BSRR:标记输出值寄存器的哪些位需要set/reset

    GPIO_BRR:标记输出值寄存器的哪些位需要REset

    GPIO_LCKR:设定GPIO的哪些port bit配置被锁定

     3.2 可选功能(AF)

    • 可选功能输入

    port必须配置为输入模式(input floating, input pull-up, intpu pull-down),且输入pin必须由外部驱动

    • 可选功能输出

    port必须配置为输出模式(push-pull or open-drain)

    • 可选功能双向

    在输出时,port必须配置为输出模式(push-pull or open-drain);在输入时port必须配成输入模式(input floating)

    注:1. 配置一个 port为可选功能输出,则会断开输出寄存器,并与外设的某个输出信号引脚链接,如图 标准GPIO位的基本结构

           2. 如果软件将GPIO配置为可选功能输出,但是外设没有使能,这输出状态不确定

    • 软件重现映射I/O可选功能

    通过配置AFIO寄存器,重映射一些功能到其它引脚,此时这些可选功能将与原有GPIO断绝关联

    • 举例:配置为UART功能

    • AFIO寄存器说明

    AFIO_EVCR:如果置位,cotex事件将发送到某个端口的pin

    AFIO_MAPR/AFIO_MAPR2:对可选功能进行重新映射

    AFIO_EXTICR1/AFIO_EXTICR2/AFIO_EXTICR3/AFIO_EXTICR4:设置各个GPIO的中断线

    4. 参考文献

    [1] STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and

    STM32F107xx advanced ARM®-based 32-bit MCUs

  • 相关阅读:
    Gitlab邮箱配置
    Zabbix邮件告警提示Couldn't resolve host name解决办法
    Gitlab备份和恢复操作
    Gitlab权限管理
    编译安装Nginx
    [0] 数据库读写分离
    [0] C# & MongoDB
    [0] 平衡二叉树
    [0] 分布式存储 Memcached
    [0] MSSQL 分库查询
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/7290720.html
Copyright © 2020-2023  润新知