【嵌入式学习-STM32CubeMX篇】点亮LED灯的GPIO配置和使用

本文详细介绍了如何在嵌入式系统中通过配置GPIO引脚PC13控制LED灯,包括设置为输出模式、使用上拉电阻和下拉电阻,以及使用HAL库进行GPIO读写操作。通过示例代码展示了如何实现LED灯的点亮和熄灭。
摘要由CSDN通过智能技术生成

配置

查看核心板原理图

找到LED灯的电路图
其中上面一个灯是电源指示灯,下面一个灯位我们需要控制的灯。
让灯点亮需要电压即电势差,而led灯上拉接了一个3V3, 所以我们只需要控制PC13 来形成电势差,当PC13为0v,则形成电势差灯被点亮,而PC13为3v3,则灯被熄灭。

在这里插入图片描述

在pinout中设置引脚PC13

右击PC13并选中GPIO_Output

GPIO(General Purpose Input/Output)是一种通用输入/输出接口,用于将微处理器或微控制器的引脚配置为输入或输出端口,以与其他电子设备进行数字通信。

引脚可以设置为两种基本模式:GPIO_Output(输出模式)和GPIO_Input(输入模式)。

  1. GPIO_Output(输出模式):当将引脚设置为GPIO_Output时,该引脚可以向外部设备发送电信号。你可以通过控制引脚的电平状态,即将其设置为高电平(高电压)或低电平(低电压),来控制连接的外部设备的行为。例如,你可以将GPIO_Output用于控制LED的亮灭,或者控制电机的启停。

  2. GPIO_Input(输入模式):当将引脚设置为GPIO_Input时,该引脚用于接收外部设备发送的信号。你可以读取引脚的电平状态,以获取外部设备发送的信息。例如,你可以将GPIO_Input用于接收按钮的按下状态,或者接收传感器的测量值。

因此,根据你的需求和连接的外部设备,你需要根据具体情况来选择将引脚设置为GPIO_Output还是GPIO_Input。如果你需要控制外部设备或发送信号,选择GPIO_Output;如果你需要接收外部设备的信号或读取输入状态,选择GPIO_Input。

在这里插入图片描述

因为我们默认希望灯是灭的,所以PC13引脚输出等级应该是高

在这里插入图片描述
其中GPIO Pull-up(上拉电阻)和Pull-down(下拉电阻)是与GPIO输入模式相关的选项,用于确定当引脚处于未连接或不被驱动时的默认电平状态。
当GPIO引脚被配置为输入模式时,如果不连接外部信号源,引脚可能会处于未定义的状态,容易受到电磁干扰或漂移的影响。为了避免这种情况,可以使用上拉电阻或下拉电阻来确保引脚处于已定义的状态。

  1. Pull-up(上拉电阻):在Pull-up模式下,引脚内部连接一个较大的上拉电阻到正电源(VCC或3.3V),使引脚默认处于高电平状态。当外部信号源未连接引脚时,上拉电阻将引脚拉高至高电平,保持引脚处于已定义的逻辑状态。

  2. Pull-down(下拉电阻):在Pull-down模式下,引脚内部连接一个较大的下拉电阻到地(GND),使引脚默认处于低电平状态。当外部信号源未连接引脚时,下拉电阻将引脚拉低至低电平,保持引脚处于已定义的逻辑状态。

通过使用上拉或下拉电阻,可以保证GPIO引脚在未连接外部信号时有一个已定义的状态,从而避免悬空状态引发的问题。这对于读取按钮状态、检测开关状态或接收外部信号等应用非常有用。

当GPIO引脚被配置为输出模式时,上拉和下拉电阻选项通常不适用。这是因为在输出模式下,引脚的电平由你的代码或程序控制,而不是由上拉或下拉电阻决定。

  • 在输出模式下,你可以将引脚设置为高电平(输出高电压)或低电平(输出低电压),以控制连接的外部设备的行为。输出模式适用于需要驱动外部设备、控制信号线或产生特定电平的场景。

  • 当引脚处于输出模式时,上拉和下拉电阻不会对引脚的电平产生直接影响。它们主要用于输入模式下,以确保引脚的默认状态在未连接外部信号时是已定义的。

因此,在设置GPIO引脚为输出模式时,你只需关注编程或代码中设置引脚的电平状态,而不需要考虑上拉或下拉电阻选项。

所以我们这里选择无上下拉
在这里插入图片描述

生成代码之后我们发现多出了一个gpio.c文件,里面有引脚PC13的初始化。

在这里插入图片描述
这些函数是针对GPIO操作的HAL(Hardware Abstraction Layer)库函数,常用于嵌入式开发中。下面是它们的作用和功能说明:

  1. HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

    • 功能:读取指定GPIO引脚的状态。
    • 参数:
      • GPIOx:指向GPIO端口的指针,如GPIOA、GPIOB等。
      • GPIO_Pin:要读取状态的GPIO引脚号。
    • 返回值:返回GPIO引脚的状态,可以是GPIO_PIN_RESET(低电平)或GPIO_PIN_SET(高电平)。
  2. HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

    • 功能:设置指定GPIO引脚的输出状态。
    • 参数:
      • GPIOx:指向GPIO端口的指针,如GPIOA、GPIOB等。
      • GPIO_Pin:要设置状态的GPIO引脚号。
      • PinState:要设置的引脚状态,可以是GPIO_PIN_RESET(低电平)或GPIO_PIN_SET(高电平)。
    • 返回值:无。
  3. HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

    • 功能:翻转指定GPIO引脚的输出状态,即从高电平切换到低电平,或从低电平切换到高电平。
    • 参数:
      • GPIOx:指向GPIO端口的指针,如GPIOA、GPIOB等。
      • GPIO_Pin:要翻转状态的GPIO引脚号。
    • 返回值:无。
  4. HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

    • 功能:锁定指定GPIO引脚,防止意外更改其配置。
    • 参数:
      • GPIOx:指向GPIO端口的指针,如GPIOA、GPIOB等。
      • GPIO_Pin:要锁定的GPIO引脚号。
    • 返回值:返回操作的状态,可能是HAL_OK(成功)或其他错误代码。
  5. HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)

    • 功能:处理外部中断引脚的中断事件。
    • 参数:
      • GPIO_Pin:触发中断事件的GPIO引脚号。
    • 返回值:无。
  6. HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

    • 功能:外部中断引脚的回调函数,在中断事件发生时被调用。
    • 参数:
      • GPIO_Pin:触发中断事件的GPIO引脚号。
    • 返回值:无。

这些函数提供了对GPIO引脚的读写、状态翻转、锁定以及外部中断处理的功能。使用这些函数可以方便地进行GPIO操作和处理相应的中断事件。
在这里插入图片描述

在main.c文件中写入如下代码,其中GPIO_PIN_RESET = 0, GPIO_PIN_SET=1。一个表示低电压 一个表示高电压。所以当0时灯被点亮,等于1时灯熄灭。

	HAL_Delay(1000);
	HAL_GPIO_WritePin(GPIOC,  GPIO_PIN_13, GPIO_PIN_RESET);
	HAL_Delay(1000);
	HAL_GPIO_WritePin(GPIOC,  GPIO_PIN_13, GPIO_PIN_SET);

这样就可以实现LED灯的闪烁啦。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值