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进行配置,如下所示:
2.4 keil5程序书写:
1.在main.h进行宏定义,如下图所示:
代码如下所示:
#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);
2.应用程序
红外模块检测到物体,输出低电平,特别注意本次设计蜂鸣器低电平有效,因此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
上文如有错误,恳请各位大佬指正。