STM32(HAL)GPIO应用-红外入侵报警

1、简介

刚刚接触STM32都是从GPIO的输入输出开始进行学习应用,本文就是通过HAL库方式通过红外模块、LED灯、蜂鸣器设计一个红外入侵报警小应用。

2、实现过程

2.1具体功能

红外模块作为GPIO输入,LED灯、蜂鸣器作为GPIO输出,当红外模块检测到入侵,LED灯、蜂鸣器会进行警报。

2.2硬件接线:

蜂鸣器接PB5,红外模块(D0)接PB15,LED灯接PB0。

2.3 Cubemax配置过程:

初始配置:STM32(CubeMax)基础配置。

接着按照硬件接线图对GPIO进行配置,如下所示:

STM32(HAL)GPIO应用-红外入侵报警_第1张图片

2.4 keil5程序书写:

  1. 在main.h进行宏定义,如下图所示:

STM32(HAL)GPIO应用-红外入侵报警_第2张图片

代码如下所示:

#define LED_ON  HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
#define LED_OFF HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
#define BEEP_ON  HAL_GPIO_WritePin(BEEP1_GPIO_Port,BEEP1_Pin,GPIO_PIN_SET);
#define BEEP_OFF HAL_GPIO_WritePin(BEEP1_GPIO_Port,BEEP1_Pin,GPIO_PIN_RESET);
#define HY_ON  HAL_GPIO_ReadPin(HY_GPIO_Port,HY_Pin);
#define HY_OFF HAL_GPIO_ReadPin(HY_GPIO_Port,HY_Pin);
  1. 应用程序

红外模块检测到物体,输出低电平,特别注意本次设计蜂鸣器低电平有效,因此BEEP_OFF会驱动蜂鸣器报警。代码如下所示:

while (1)
  {
        if(HAL_GPIO_ReadPin(HY_GPIO_Port,HY_Pin)==0)
        {
            LED_ON;
            BEEP_OFF;
        }
        else
        {
            LED_OFF;
          BEEP_ON;
        }

演示效果如下:

链接:https://pan.baidu.com/s/18LP8RSaIGSmQ48h_6sXiFQ

提取码:4ns4

上文如有错误,恳请各位大佬指正。

你可能感兴趣的:(嵌入式小项目,单片机,stm32)