[应用相关] STM32 蜂鸣器报警

[复制链接]
1191|5
 楼主| paotangsan 发表于 2024-11-29 11:50 | 显示全部楼层 |阅读模式
蜂鸣器  分有源蜂鸣器  和 无源蜂鸣器  低电平触发 高电平触发

这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它,但是这使得无源蜂鸣器可以定制闹铃

低电平触发:是指I/O口接低电平即 Reset 时导通。

2554367493a07aa909.png

高电平触发:是指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唯一的区别就是不需要翻转函数。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_65107465/article/details/143981266

根特皇宫w 发表于 2024-12-31 20:00 | 显示全部楼层
低电平触发 和 高电平触发 是指蜂鸣器触发信号的电平控制方式,通常应用在有源蜂鸣器上,但无源蜂鸣器也可以通过外部信号控制。
地瓜patch 发表于 2024-12-31 20:47 来自手机 | 显示全部楼层
驱动需要加三极管
OKAKAKO 发表于 2024-12-31 21:09 | 显示全部楼层
IO驱动蜂鸣器
LOVEEVER 发表于 2024-12-31 23:19 | 显示全部楼层
STM32 蜂鸣器报警IO控制的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

4333

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部