STM32 GPIO |CSDN创作打卡

GPIO结构框图

推挽输出(0-3.3):

 在该结构中输入高电平时,上方的P-MOS导通,下方的N-MOS截止,对外输出高电平 。

而在该结构中输入低电平时,N-MOS管导通P-MOS截止,对外输出低电平

当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0伏,高电平为3.3伏。

开漏输出(0-5):

在开漏输出模式时,上方的P-MOS管始终处于截止状态。当输入低电平时,P-MOS管截止,N-MOS管导通,对外输出低电平。

若控制输入为高电平 ,则P-MOS管关闭,N-MOS管处于截止状态,所以引脚既不输出高电平,也不输出低电平,为高阻态。如需要输出高电平(5V),必须在外部接一个上拉电阻。

它具有“线与”特性。也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。

 输出数据寄存器:

     前面提到的双MOS管结构电路的输入信号,是由GPIO“输出数据寄存器“GPIOx_ODR”提供的,因此我们通过修改输出数据寄存器的值就可以修改GPIO引脚的输出电平。

复用功能输出

    “复用功能输出”中的“复用”是指STM32的其他片上外设对GPIO引脚进行控制,此时GPIO引脚用作该外设的一部分,算第二用途。从其他外设引出来的“复用功能输出信号”与GPIO本身的数据寄存器都连接到双MOS管结构中,通过途中梯形结构作为开关切换选择。

     例如我们使用USART串口通讯时,需要用到某个GPIO引脚作为通讯发送引脚,这个时候就可以把该GPIO引脚配置成USART串口复用功能,由串口外设控制该引脚,发送数据。

相关寄存器配置

STM32F10x共有7组GPIO(从A到G),每组GPIO有16个端口(从0到15)。
每组GPIO端口有以下7个寄存器,每组寄存器可以控制16个I/O口。

  GPIOx_CRL :端口配置低寄存器
  GPIOx_CRH:端口配置高寄存器
  GPIOx_IDR:端口输入寄存器
  GPIOx_ODR:端口输出寄存器
  GPIOx_BSRR:端口位设置/清除寄存器
  GPIOx_BRR :端口位清除寄存器
  GPIOx_LCKR:端口配置锁存寄存器   
 

根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置 成多种模式。

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

─ 推挽式复用功能   ─ 开漏复用功能

 寄存器配置(以低寄存器配置为例) 

 

 范例:(以库函数为例)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_SetBits(GPIOC, GPIO_Pin_13);
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);

版权声明:本文为CSDN博主「让记忆定格1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_60996380/article/details/122913775

生成海报
点赞 0

让记忆定格1024

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

【STM32Cube笔记】2-STM32Cube安装教程

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

STM32F4最小系统硬件设计

对于硬件工程师来讲,想要入门STM32相关的开发,我想除了深入阅读一下STM32的数据手册外,最实用且有效的方法就是自己实际做一个STM32的最小系统板了。本文将以一个小的STM32F427VG的电路最