赞
踩
找到LED灯的电路图
其中上面一个灯是电源指示灯,下面一个灯位我们需要控制的灯。
让灯点亮需要电压即电势差,而led灯上拉接了一个3V3, 所以我们只需要控制PC13
来形成电势差,当PC13为0v,则形成电势差灯被点亮,而PC13为3v3,则灯被熄灭。
右击PC13并选中GPIO_Output
GPIO(General Purpose Input/Output)是一种通用输入/输出接口,用于将微处理器或微控制器的引脚配置为输入或输出端口,以与其他电子设备进行数字通信。
引脚可以设置为两种基本模式:GPIO_Output(输出模式)和GPIO_Input(输入模式)。
GPIO_Output(输出模式):当将引脚设置为GPIO_Output时,该引脚可以向外部设备发送电信号。你可以通过控制引脚的电平状态,即将其设置为高电平(高电压)或低电平(低电压),来控制连接的外部设备的行为。例如,你可以将GPIO_Output用于控制LED的亮灭,或者控制电机的启停。
GPIO_Input(输入模式):当将引脚设置为GPIO_Input时,该引脚用于接收外部设备发送的信号。你可以读取引脚的电平状态,以获取外部设备发送的信息。例如,你可以将GPIO_Input用于接收按钮的按下状态,或者接收传感器的测量值。
因此,根据你的需求和连接的外部设备,你需要根据具体情况来选择将引脚设置为GPIO_Output还是GPIO_Input。如果你需要控制外部设备或发送信号,选择GPIO_Output;如果你需要接收外部设备的信号或读取输入状态,选择GPIO_Input。
因为我们默认希望灯是灭的,所以PC13引脚输出等级应该是高
其中GPIO Pull-up(上拉电阻)和Pull-down(下拉电阻)是与GPIO输入模式相关的选项,用于确定当引脚处于未连接或不被驱动时的默认电平状态。
当GPIO引脚被配置为输入模式
时,如果不连接外部信号源,引脚可能会处于未定义的状态,容易受到电磁干扰或漂移的影响。为了避免这种情况,可以使用上拉电阻或下拉电阻来确保引脚处于已定义的状态。
Pull-up(上拉电阻):在Pull-up模式下,引脚内部连接一个较大的上拉电阻到正电源(VCC或3.3V),使引脚默认处于高电平状态。当外部信号源未连接引脚时,上拉电阻将引脚拉高至高电平,保持引脚处于已定义的逻辑状态。
Pull-down(下拉电阻):在Pull-down模式下,引脚内部连接一个较大的下拉电阻到地(GND),使引脚默认处于低电平状态。当外部信号源未连接引脚时,下拉电阻将引脚拉低至低电平,保持引脚处于已定义的逻辑状态。
通过使用上拉或下拉电阻,可以保证GPIO引脚在未连接外部信号时有一个已定义的状态,从而避免悬空状态引发的问题。这对于读取按钮状态、检测开关状态或接收外部信号等应用非常有用。
当GPIO引脚被配置为输出模式
时,上拉和下拉电阻选项通常不适用。这是因为在输出模式下,引脚的电平由你的代码或程序控制,而不是由上拉或下拉电阻决定。
在输出模式下,你可以将引脚设置为高电平(输出高电压)或低电平(输出低电压),以控制连接的外部设备的行为。输出模式适用于需要驱动外部设备、控制信号线或产生特定电平的场景。
当引脚处于输出模式时,上拉和下拉电阻不会对引脚的电平产生直接影响。它们主要用于输入模式下,以确保引脚的默认状态在未连接外部信号时是已定义的。
因此,在设置GPIO引脚为输出模式时,你只需关注编程或代码中设置引脚的电平状态,而不需要考虑上拉或下拉电阻选项。
所以我们这里选择无上下拉
生成代码之后我们发现多出了一个gpio.c文件,里面有引脚PC13的初始化。
这些函数是针对GPIO操作的HAL(Hardware Abstraction Layer)库函数,常用于嵌入式开发中。下面是它们的作用和功能说明:
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
:
GPIOx
:指向GPIO端口的指针,如GPIOA、GPIOB等。GPIO_Pin
:要读取状态的GPIO引脚号。GPIO_PIN_RESET
(低电平)或GPIO_PIN_SET
(高电平)。HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
:
GPIOx
:指向GPIO端口的指针,如GPIOA、GPIOB等。GPIO_Pin
:要设置状态的GPIO引脚号。PinState
:要设置的引脚状态,可以是GPIO_PIN_RESET
(低电平)或GPIO_PIN_SET
(高电平)。HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
:
GPIOx
:指向GPIO端口的指针,如GPIOA、GPIOB等。GPIO_Pin
:要翻转状态的GPIO引脚号。HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
:
GPIOx
:指向GPIO端口的指针,如GPIOA、GPIOB等。GPIO_Pin
:要锁定的GPIO引脚号。HAL_OK
(成功)或其他错误代码。HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
:
GPIO_Pin
:触发中断事件的GPIO引脚号。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灯的闪烁啦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。