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 小时前
国外软件,安装即时专业版!
stm32·microsoft·macos·everything
214实验室1 小时前
STM32串口打印使用printf乱码问题
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi1 小时前
基于单片机的电厂烟道粉尘浓度检测系统(论文+源码)
单片机·嵌入式硬件·毕业设计
山顶听风1 小时前
缠中说禅学习笔记
笔记·金融
橙河网络2 小时前
橙河网络:国外问卷调查答题全过程
经验分享·笔记·课程设计
困死了11112 小时前
PostgreSQL笔记
数据库·笔记·postgresql
YJlio2 小时前
ProcessExplorer_17.09_x64-Chs 新版本升级:我看到的区别与优势(含升级思路与注意点)
人工智能·笔记·学习
Groundwork Explorer2 小时前
异步框架+POLL混合方案应对ESP32 MPY多任务+TCP多连接
python·单片机
不会聊天真君6473 小时前
CSS3(Web前端开发笔记第二期)
前端·笔记·css3