STM32_GPIO

GPIO

GPIO:通用输入输出
GPIO与引脚的区别:引脚包含GPIO,还有其他特殊的引脚
引脚分类:电源、晶振IO、下载IO、BOOT IO、复位IO 组成最小系统,剩下的引脚才是GPIO
GPIO原理图:
在这里插入图片描述

CRL(第八位)/CRH(高八位)

在这里插入图片描述
当外部电压高于VDD(3.3v)会通过二极管保护芯片,但是当电压过高后,保护机制无法保护芯片,例如(直连电机)

推挽输出

在这里插入图片描述
在这里插入图片描述

  1. 当ODR输出1时,N管关闭,P管导通,输出接通VDD电压输出1(推,向外的 灌电流 25mA)
    在这里插入图片描述
  2. 当ODR输出1时,P管关闭,N管导通,输出接通VSS电压输出0(挽 ,向内的 拉电流
    在这里插入图片描述

用于连接数字器件,开关效率高,电流大,驱动能力强
除开必须用开漏一般都用推挽。

开漏输出

  1. 只能输出低电平,不能输出高电平
  2. 如若需要输出高电平,需要引脚上拉电阻,由外部体提供高电平
  3. 开漏具有“线与”功能,可以将多个开漏输出的Pin,连接到一条线上,形成“与逻辑”关系。一个低,全为低,多用于I2C和SMBUS总线
    用于需要线与功能和总线的电路中

ODR/BSRR

在这里插入图片描述

  1. 如果只需要设置端口的某些pin为1,直接赋值到BSRR(高16位保持为0),BSRR为端口置位/复位寄存器,置位就是高电平、复位也就是低电平,这玩意是个32位寄存器,低16位控制置位、高16位控制复位.
  2. 如果只需要设置端口的某些pin为0,直接赋值到BRR。
  3. 如果设置端口的某些pin为1、另外一些pin为0,需要对应的设置一个32-bit的数值,其低16位对应设置1的pin,高16位对应设置0的pin,然后赋值到BSRR。
  4. 整体操作使用ODR,ODR也可以使用逻辑实现原子操作用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险

链接:https://www.jianshu.com/p/17d8b3f0d6d1

GPIO的初始化顺序

  1. 确定具体的GPIO
  2. 配置GPIO工作模式(CRL \CRH)
  3. 控制GPIO输出电平(ODR\BRR\BSRR)

寄存器映射

AHB划分为两路总线
APB1:慢速总线,最快36Mhz
APB2:快速总线,最快72Mhz
在这里插入图片描述
总线地址 = 总线基地址 + 相对外设地址偏移量
外设地址 = 总线地址 + 相对目标总线的偏移地址
寄存器地址 = 外设地址 + 相对寄存器偏移地址
在这里插入图片描述
外设总线基地址:0x40000000

    #define PERIPH_BASE  (unsigned int)0x40000000

地址的起始为APB1所以APBI1没有偏移量

    # define  APB1_PERIPH_BASE    (PERIPH_BASE)

ABP2的起始地址为总线基地址+0x1000

 # define  APB2_PERIPH_BASE    (PERIPH_BASE+ 0x1000)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值