您的位置:首页 > 房产 > 家装 > 网站制作是那个_重庆网络公司一览表_谷歌排名优化入门教程_北京seo公司有哪些

网站制作是那个_重庆网络公司一览表_谷歌排名优化入门教程_北京seo公司有哪些

2025/4/25 11:59:32 来源:https://blog.csdn.net/ElePower9527/article/details/144863926  浏览:    关键词:网站制作是那个_重庆网络公司一览表_谷歌排名优化入门教程_北京seo公司有哪些
网站制作是那个_重庆网络公司一览表_谷歌排名优化入门教程_北京seo公司有哪些

GPIO四种输出模式

GPIO的四种主要输出模式是:‌通用推挽输出、通用开漏输出、复用推挽输出、复用开漏输出

IO接口的基本结构图

输出模式可以理解为下面四个词的组合

推挽开漏
通用通用推挽输出通用开漏输出
复用复用推挽输出复用开漏输出

下面来单独解释这四个词的含义

推挽和开漏

由两个MOS管组成根据不同的状态形成推挽或开漏

推挽

                                                      输出0                                               输出1

  • 这种模式下,GPIO引脚可以直接输出高电平(如5V或3.3V)或低电平(0V),就像是一个双向开关,既能提供电流也能切断电流‌。
  • 推挽输出模式适用于需要稳定控制的场合,如驱动LED灯、继电器等简单负载‌。

开漏

  • 在这种模式下,GPIO引脚只能输出低电平(接地),不能主动提供高电平‌。
  • 通常需要外接一个上拉电阻来提供高电平,因此适合用于I²C总线通信、按键检测等场合,可以实现多个设备共享一条总线而不发生冲突‌23。

通用和复用

通用

GPIO(General Purpose Input/Output)即通用输入输出接口,它可以通过编程控制引脚的电平状态,实现与外部设备的通信和交互。在通用模式下,GPIO引脚作为普通的输入或输出端口使用,直接由核心控制或读取电平状态。例如,在输出模式下,核心可以直接控制GPIO输出高低电平。

复用

复用模式下,GPIO引脚除了可以作为普通的输入或输出端口外,还可以复用为外设的信号线,如UART、I2C、SPI等通信接口的信号线。在这种模式下,GPIO引脚的功能由内部外设控制,不再直接由核心控制。复用模式提高了GPIO引脚的灵活性和利用率,使得同一个GPIO引脚可以在不同的场景下实现不同的功能‌。

闪灯实验

GPIO闪灯实验是一个基础的实验,用于演示如何通过编程控制GPIO引脚的电平状态,从而实现LED灯的闪烁

实验实现有两种方法分别是推挽和开漏

推挽接法

开漏接法

实现代码

int main(){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitTypeDef GPIO_InitStructure = {0};GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);while(1){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);Delay(100);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);Delay(100);}
}

函数详解

RCC_APB2PeriphClockCmd( )函数

RCC_APB2PeriphClockCmd 是STM32标准外设库中的一个函数,用于使能或失能高速APB (APB2) 总线上的外设时钟。在STM32微控制器中,外设(如GPIO、ADC、SPI等)的时钟在默认情况下可能是关闭的,以节省功耗。当你需要使用某个外设时,你需要通过这个函数来使能它的时钟,这样外设才能正常工作。

函数原型通常如下:

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

参数说明:

  • RCC_APB2Periph:这是一个或多个要控制时钟的外设的标识符,它们通过位或(bitwise OR)操作符组合在一起。例如,如果你想要使能GPIOA和GPIOB的时钟,你可以将RCC_APB2Periph_GPIOARCC_APB2Periph_GPIOB进行位或操作。
  • NewState:这是一个枚举值,表示你想要将外设时钟设置为的状态。它可以是ENABLE(使能时钟)或DISABLE(失能时钟)。

GPIO_Init( )函数

GPIO_Init 是 STM32 标准外设库或 HAL 库中用于初始化 GPIO(通用输入输出)引脚的函数。通过调用这个函数,你可以配置 GPIO 引脚的多种参数,包括模式(输入、输出、复用或模拟)、速度、输出类型(推挽或开漏)、上拉/下拉电阻等。

在 STM32 标准外设库中,GPIO_Init 的函数原型通常如下:

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

参数说明:

  • GPIOx:指向一个 GPIO 端口的指针,例如 GPIOAGPIOB 等。STM32 微控制器通常有多个 GPIO 端口,每个端口包含一组 GPIO 引脚。
  • GPIO_InitStruct:指向一个 GPIO_InitTypeDef 结构体的指针,该结构体包含了 GPIO 引脚的配置信息。

GPIO_InitTypeDef 结构体通常包含以下成员:

  • GPIO_Pin:指定要配置的 GPIO 引脚,可以是单个引脚或多个引脚的组合(通过位或操作)。
  • GPIO_Mode:设置 GPIO 引脚的模式,如 GPIO_Mode_IN(输入模式)、GPIO_Mode_OUT(输出模式)等。
  • GPIO_Speed:设置 GPIO 引脚的速度,如 GPIO_Speed_50MHzGPIO_Speed_25MHz 等。
  • GPIO_OType:设置 GPIO 引脚的输出类型,如 GPIO_OType_PP(推挽输出)或 GPIO_OType_OD(开漏输出)。
  • GPIO_PuPd:设置 GPIO 引脚的上拉/下拉电阻,如 GPIO_PuPd_UP(上拉)、GPIO_PuPd_DOWN(下拉)或 GPIO_PuPd_NOPULL(无上下拉)。

GPIO_WriteBit()函数

GPIO_WriteBit 是 STM32 标准外设库中的一个函数,用于设置或清除指定 GPIO 引脚的输出电平。通过这个函数,你可以控制 GPIO 引脚是输出高电平(通常表示为逻辑“1”)还是低电平(通常表示为逻辑“0”)。这在控制 LED 灯、继电器、电机等外设时非常有用。

函数原型通常如下:

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

参数说明:

  • GPIOx:指向一个 GPIO 端口的指针,例如 GPIOAGPIOB 等。
  • GPIO_Pin:指定要控制的 GPIO 引脚,这通常是一个宏定义,表示特定的引脚号。
  • BitVal:这是一个枚举值,表示你想要设置的引脚电平。它可以是 Bit_SET(设置引脚为高电平)或 Bit_RESET(设置引脚为低电平)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com