STM32 蜂鸣器报警
蜂鸣器 分有源蜂鸣器 和 无源蜂鸣器 低电平触发 高电平触发
这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫
;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它,但是这使得无源蜂鸣器可以定制闹铃
低电平触发:是指I/O口接低电平即 Reset 时导通。
高电平触发:是指I/O口接高电平即set时导通。
原理和LED是一样的,只不过在接线的时候要接3.3v和GND
下面是beep.c文件代码
include "beep.h"
#include "sys.h"
//①定义初始化结构体
GPIO_InitTypeDef gpio_initstruct;
//②初始化GPIO函数
void beep_init(void)
{
//打开时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //注意看硬件原理图中beep灯的引脚在哪一个组
//调用GPIO初始化函数
gpio_initstruct.Pin = GPIO_PIN_8;
gpio_initstruct.Pull = GPIO_PULLUP;
gpio_initstruct.Mode =GPIO_MODE_OUTPUT_PP;
gpio_initstruct.Speed =GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&gpio_initstruct);
//关闭beep灯
beep_off();
}
//③开启beep的函数
void beep_on(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); //RESET 为高电平
}
//④关闭beep的函数
void beep_off(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); //SET 为低电平
}
注意和LED唯一的区别就是不需要翻转函数。