STM32 GPIO介绍

        每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器
(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。

通过软件配置寄存器可将GPIO分配以下几种模式:

        ─ 输入浮空
        ─ 输入上拉
        ─ 输入下拉
        ─ 模拟输入
        ─ 开漏输出
        ─ 推挽式输出
        ─ 推挽式复用功能
        ─ 开漏复用功能

        每个I/O端口位可以自由编程,然而必须按照32位字访问I/O端口寄存器(不允许半字或字节访
问)。 GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器进行读/更改的独立访问;这
样,在读和更改访问之间产生IRQ时不会发生危险。

下图给出了一个I/O端口位的基本结构:

(下列所有图中的TTL肖特基触发器为施密特触发器)


5伏兼容I/O端口位的基本结构:

VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同
 

当I/O端口配置为输入时:
● 输出缓冲器被禁止
● 施密特触发输入被激活
● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 对输入数据寄存器的读访问可得到I/O状态

输入浮空/上拉/下拉配置:

当I/O端口被配置为输出时:
● 输出缓冲器被激活
─ 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。
─ 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

输出配置:

当I/O端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
● 开漏模式时,读输入数据寄存器时可得到I/O口状态
● 在推挽模式时,读输出数据寄存器时可得到最后一次写的值
 

复用功能配置:

当I/O端口被配置为模拟输入配置时:
● 输出缓冲器被禁止;
● 禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强置
为’0’;
● 弱上拉和下拉电阻被禁止;
● 读取输入数据寄存器时数值为’0’。
 

高阻抗的模拟输入配置:

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-05-09 07:28:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-09 07:28:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-09 07:28:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-09 07:28:05       20 阅读

热门阅读

  1. MongoDB聚合运算符:$toLong

    2024-05-09 07:28:05       11 阅读
  2. MongoDB聚合运算符:$toLower

    2024-05-09 07:28:05       15 阅读
  3. 【Axure视频教程】元件交互样式

    2024-05-09 07:28:05       11 阅读
  4. Linux内核--设备驱动(八)网络整理

    2024-05-09 07:28:05       12 阅读
  5. ASP.NET MVC 4升级迁移到ASP.NET MVC 5

    2024-05-09 07:28:05       8 阅读
  6. 三目运算符-简化代码C/C++

    2024-05-09 07:28:05       11 阅读
  7. 设计模式——建造者模式(Builder)

    2024-05-09 07:28:05       13 阅读