STM32 GPIO的工作原理

STM32的GPIO管脚有下面8种可能的配置:(4输入 +2 输出 +2 复用输出)


(1)浮空输入_IN_FLOATING

        在上图上,阴影的部分处于不工作状态,尤其是下半部分的输出电路,实际上是与端口处于隔离状态。黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号1的I/0 端口进入STM32,经过编号2的施密特触发器的整形送入编号3的“输入数据寄存器”,在“输入数据寄存器”的另一端(编号4),CPU可以随时读出1/0 端口的电平状态

(2)带上拉输入_ IPU  

上拉电阻30k-50k起抗干扰作用。 

(3)带下拉输入_IPD


(4)模拟输入_AIN


(5)开漏输出_OUT_OD


(6)开漏复用输出_AF_OD


(7)推挽输出_OUT_PP


(8)推挽复用输出_AF_PP 

      STM32的每个 I0端口都有7个寄存器来控制。他们分别是:配置模式的2 个32 位的端口配置寄存器CRL和CRH; 2个32 位的数据寄存器IDR 和ODR;1个32 位的置位/复位寄存器BSRR;1个 16位的复位寄存器 BRR;1个32位的所存寄存器LCKR;常用的I0端口寄存器只有4个:CRL、CRH、IDR、ODR 。

32 位的端口配置寄存器CRL和CRH

寄存器复位值为0x44444444,CRL控制的是低8位输出口,CRH控制的是高8位输出口。

0X4表示模拟输入模式(ADC用);0X3表示推挽输出模式(做输出口,50M速率);0X8表示上下拉输入模式(做输入口用);0XB表示复用输出(使用IO口的第二功能,50M速率)。

给个实例,比如我们要设置PORTC的11 位为上拉输入,12位为推挽输出。代码如下:

GPIOC->CRH&=0XFFF00FFF;//清掉这 2个位原来的设置,同时也不影响其他
位的设置
GPIOC->CRH|=0X0003800;//PC11输入,PC12输出
GPIOC->ODR=1<<11://PC11上拉

 32 位的数据寄存器IDR 和ODR

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 22:48:10       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 22:48:10       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 22:48:10       42 阅读
  4. Python语言-面向对象

    2024-07-09 22:48:10       53 阅读

热门阅读

  1. Android Enable 和clickable

    2024-07-09 22:48:10       17 阅读
  2. 0. python面试常见问题

    2024-07-09 22:48:10       19 阅读
  3. 配置linux的yum镜像为阿里镜像源

    2024-07-09 22:48:10       17 阅读
  4. Docker一键部署PostGIS

    2024-07-09 22:48:10       18 阅读
  5. C语言编程2:常用的数据类型

    2024-07-09 22:48:10       20 阅读
  6. 秒验 iOS端授权页添加自定义按钮

    2024-07-09 22:48:10       18 阅读
  7. 代码随想录算法训练营:23/60

    2024-07-09 22:48:10       19 阅读
  8. Android Camera API发展历程

    2024-07-09 22:48:10       17 阅读
  9. 工作日常学习记录

    2024-07-09 22:48:10       19 阅读
  10. ELK的储存、分析功能介绍!

    2024-07-09 22:48:10       21 阅读
  11. Linux实战记录

    2024-07-09 22:48:10       20 阅读
  12. 价值投资者什么时候卖出股票?

    2024-07-09 22:48:10       19 阅读