Bootstrap

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唯一的区别就是不需要翻转函数。

;