明解STM32—GPIO理论基础知识篇之寄存器原理

科技资讯 投稿 7500 0 评论

明解STM32—GPIO理论基础知识篇之寄存器原理

 一、前言

        这一篇主要对GPIO模块使用到的寄存器进行详细的分析介绍,适当了解GPIO寄存器的相关知识,可以对GPIO最底层的一些配置和工作原理有更好的认识,有助于加深对GPIO基本结构及工作模式的理解,同时对后续介绍到的GPIO在应用设计中有较好的帮助。


二、寄存器概述

 

图1 GPIO寄存器概述


三、寄存器详述

(1)端口模式寄存器GPIOx_MODER

图2 GPIOx_MODER寄存器定义

(2)端口输出类型寄存器GPIOx_OTYPER

 

图3 GPIOx_OTYPER寄存器定义

(3)端口输出速度寄存器GPIOx_OSPEEDR

        这个速度是指输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。可理解为输出驱动电路的带宽:即一个驱动电路可以不失真地通过信号的最大频率。

        比如:

        ②I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度。

        当为该端口下寄存器值的pin配置为11时,输出速度和电容C有关,这是指对于CMOS工艺的集成电路而言,输入阻抗是非常高的,主要功耗来自于绝缘栅等效的电容充放电效应。既然是电容的充放电,考虑信号源的内阻(基于标准CMOS电路的输出),根据RC充电常数和逻辑门限电平就能得出一个最小周期,其对应一个最高IO频率。​

图4 GPIOx_OSPEEDR寄存器定义

(4)端口上拉/下拉寄存器GPIOx_PUPDR

        STM32芯片GPIO的上拉电阻和下拉电阻最小值,典型值和最大值如下:

 

(5)端口输入数据寄存器 GPIOx_IDR

图6 GPIOx_IDR寄存器定义

(6)GPIO 端口输出数据寄存器 GPIOx_ODR

图7 GPIOx_ODR寄存器定义

(7)GPIO 端口置位/复位寄存器GPIOx_BSRR

        原因是GPIOx_BSRR去改变管脚状态的时候是原子操作置位/复位,没有被中断打断的风险。也就不需要关闭中断,关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好可以用GPIOx_BSRR。

 

图8 GPIOx_BSRR寄存器定义

(8)GPIO 端口配置锁定寄存器GPIOx_LCKR

        LCK0到LCK15为对应的pin0到pin15的锁定配置,当需要锁定对应的管脚pin时,在执行LCKK写序列操作时,将对应的LCK位写1。

 

 

 

 图9 GPIOx_LCKR寄存器定义

(9)GPIO 复用功能低位寄存器GPIOx_AFRL

 

 

 图10 GPIOx_AFRL寄存器定义

(10)GPIO 复用功能高位寄存器GPIOx_AFRH

图11 GPIOx_AFRH寄存器定义

四、总结


更多技术内容和书籍资料获取,入群技术交流敬请关注公众号“明解嵌入式”

编程笔记 » 明解STM32—GPIO理论基础知识篇之寄存器原理

赞同 (35) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽