【七】GPIO 继电器
来源:本站 2025-12-22 15:40:56

下载例程代码下载代码

⚠️注意

请一定按照 例程使用方法 🔗 导入例程,否则下载的可能不是例程而是其他工程。

使用一个按键控制继电器的吸合、断开。

继电器简介

继电器是一种电气开关,它使用电磁原理来控制开关的通断。

继电器通常由线圈和触点组成。当线圈通电时,会在继电器内部产生磁场,使得触点闭合或断开,从而实现电路的通断控制。

  • 学习板上的继电器型号:松乐 SRD-5VDC-SL-C
  • 这款继电器有 3 个输出端口,分别是常开、公共、常闭(参考学习板背面丝印),属于单刀双掷开关。

   - 当继电器断电时(PB5 输出低电平),公共-常闭接通,而公共-常开断开

   - 当继电器通电(PB5 输出高电平),公共-常闭断开,而公共-常开接通

  • relay2
继电器线圈公共-常开公共-常闭
断电 (PB5 低)断开闭合
通电 (PB5 高)闭合断开

如何使用例程

编译并下载程序到学习板,即可看到程序效果:

  • 按下 KEY1,继电器状态翻转
  • LED 红灯表示继电器断开,绿灯表示接通
  • 为了更好的测试继电器的效果,可以将某个被控回路接入继电器的输出端,这样就可以通过程序控制该回路的通断。例如控制台灯、风扇等。
⚠️ 注意!高电压可能造成危险,请不要尝试超过 36V 的电压。

例程讲解

下面介绍了如何自己实现该例程的功能

1、工程配置

  • 分配引脚:在 Pinout&Configuration 页面,配置如下引脚

   - 将 PB5 配置为 GPIO_Output ,并设置 User label 为 RELAY

   - 将 PA7、PB0 分别设置为 GPIO_Output,并分别设置 User label 为 GREEN、RED

   - 将 PB12 配置为 GPIO_Input,并设置 User label 为 KEY1

  • 工程配置

2、代码

  • 在 main.c 的 while 循环中,实现按键控制翻转继电器。

   - 按键检测消抖 50 ms

   - 继电器受 PB5 控制,输出高电平线圈吸合,低电平断开

   - 翻转后需等待按键释放,否则会连续翻转

while (1)
{
    // 按键KEY1按下  
    if (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
    {
        // 消抖 50 ms
        HAL_Delay(50); 
        if (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)) 
        {
            // 翻转继电器、指示灯
            HAL_GPIO_TogglePin(RELAY_GPIO_Port, RELAY_Pin);
            HAL_GPIO_TogglePin(RED_GPIO_Port, RED_Pin);
            HAL_GPIO_TogglePin(GREEN_GPIO_Port, GREEN_Pin);
            // 等待按键释放
            while (!HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)) 
            {
            } 
        }
    }
}

故障排除

工程建立和配置