0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32有缘蜂鸣器程序

STM32有缘蜂鸣器程序

分享:

以下是使用STM32控制有源蜂鸣器的程序示例(基于HAL库),采用中文注释:

硬件配置

  1. 蜂鸣器类型:有源蜂鸣器(3.3V/5V,高电平触发)
  2. 连接方式
    • 蜂鸣器正极 → STM32 GPIO引脚(如PB0)
    • 蜂鸣器负极 → GND
  3. 驱动电路
    • 建议串联220Ω电阻(若GPIO驱动能力不足,可加NPN三极管驱动)

示例代码

#include "main.h"
#include "stm32f1xx_hal.h"

// 定义蜂鸣器控制引脚
#define BEEP_GPIO_PORT GPIOB
#define BEEP_GPIO_PIN GPIO_PIN_0

// 操作宏
#define BEEP_ON()   HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_SET)    // 高电平触发蜂鸣器
#define BEEP_OFF()  HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_RESET) // 关闭蜂鸣器

// GPIO初始化函数
void BEEP_Init(void) {
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOB_CLK_ENABLE();  // 使能GPIOB时钟

  // 配置PB0为推挽输出
  GPIO_InitStruct.Pin = BEEP_GPIO_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽输出
  GPIO_InitStruct.Pull = GPIO_NOPULL;           // 无上/下拉
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  // 低速
  HAL_GPIO_Init(BEEP_GPIO_PORT, &GPIO_InitStruct);

  BEEP_OFF();  // 初始状态关闭蜂鸣器
}

// 测试函数:蜂鸣器鸣叫500ms
void BEEP_Test(void) {
  BEEP_ON();           // 启动蜂鸣器
  HAL_Delay(500);      // 持续500ms
  BEEP_OFF();          // 关闭蜂鸣器
}

// 在main函数中调用示例
int main(void) {
  HAL_Init();         // HAL库初始化
  SystemClock_Config(); // 系统时钟配置
  BEEP_Init();        // 蜂鸣器初始化

  while (1) {
    BEEP_Test();      // 每2秒鸣叫一次
    HAL_Delay(2000);
  }
}

关键说明

  1. 工作电压
    确认蜂鸣器工作电压(3.3V/5V),确保与STM32的GPIO电平匹配。

  2. 触发逻辑
    有源蜂鸣器通常高电平触发,若电路设计为低电平触发,需反转控制逻辑:

    #define BEEP_ON()  HAL_GPIO_WritePin(..., GPIO_PIN_RESET)
    #define BEEP_OFF() HAL_GPIO_WritePin(..., GPIO_PIN_SET)
  3. 延时优化
    HAL_Delay会阻塞CPU,实际项目中建议用定时器实现非阻塞控制:

    // 示例:用定时器中断实现蜂鸣器计时
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
     if (htim == &htim3) {  // 假设使用TIM3
       static uint32_t count = 0;
       if (count++ >= 500) {  // 500ms到
         BEEP_OFF();
         HAL_TIM_Base_Stop_IT(&htim3);  // 关闭定时器
       }
     }
    }
    
    // 启动蜂鸣器时开启定时器
    void StartBeep(uint32_t duration_ms) {
     BEEP_ON();
     HAL_TIM_Base_Start_IT(&htim3);  // 启动定时器计数
    }
  4. 功耗控制
    长时间鸣叫会增加功耗,建议单次鸣叫不超过3秒。休眠模式下需关闭蜂鸣器。

电路示意图

STM32 GPIO (PB0)  → 220Ω电阻 → 蜂鸣器(+) 
                             |
蜂鸣器(-) → GND

提示:实际项目建议将蜂鸣器控制封装成独立的驱动程序,包含beep_init()beep_set()beep_toggle()等接口函数。

如何对基于STM32蜂鸣器进行实验呢

如何对基于STM32蜂鸣器进行实验呢?其程序实现步骤有哪些?

duke刘 2021-11-26 06:03:44

multisim蜂鸣器驱动程序详解

以下是关于Multisim蜂鸣器驱动程序的详解: 蜂鸣器简介 蜂鸣器是一种电子设备,用于发出声音信号。它广泛应用于各种电子设备中,如电话、闹钟、汽车喇叭等。蜂鸣器的工作原理是通过电磁线圈产生磁场,使

2024-08-09 10:18:49

STM32如何驱动有源蜂鸣器

现在在用原子哥的MINI STM32开发板做一个温度报警系统,当温度超过设定的范围就驱动蜂鸣器报警。我用的是有源蜂鸣器,只要一接上5V的电压就响,这样就根本达不到报警的效果,STM32的I/O口能控制输出5V的电压吗?望知道的大侠赐教。急急!!!!!!!!!!

60user24 2020-05-20 03:34:03

什么是蜂鸣器?三极管的工作原理是什么

。有源蜂鸣器与无源蜂鸣器这里的“源”不是指电源,而是指震荡源。有缘愤怒共鸣器内部带震荡源,所以只要异同点就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其名叫。需要用2K~5K的方波去驱动它,有源蜂鸣器往往比无源的贵,就是因为里面多个振荡电路。无源蜂鸣器的优点是:1.便宜2.声音频率可

fdjslkjd 2021-07-14 06:04:11

STM32F103ZET6之蜂鸣器实验

STM32F103ZET6之蜂鸣器实验文章目录STM32F103ZET6之蜂鸣器实验前言一、原理图二、程序源码1.beep.h2.beep.c3.main.c三、实验结果总结前言对于STM32的学习

HCPcry 2022-01-05 07:46:49

蜂鸣器模块无法正常使用怎么解决

蓝桥杯嵌入式蜂鸣器模块和下载程序失败解决方案蜂鸣器的初始化问题下载程序失败解决方案的:蜂鸣器的初始化问题在提供的使用手册里我们可以看到PB4对应的是蜂鸣器,但是在STM32提供的资料

沈文强66 2022-01-21 07:20:33

STM32F429的GPIO应用之无源蜂鸣器

STM32F429的GPIO应用之无源蜂鸣器 STM32F429的GPIO应用之无源蜂鸣器本章教程为大家介绍STM32F429的GPIO应用之无源蜂鸣器蜂鸣器也是GPIO控制的经典测试例程,可以让

h1654155275.6483 2021-08-10 07:49:27

介绍STM32F407的GPIO应用之无源蜂鸣器

第20章 STM32F407的GPIO应用之无源蜂鸣器本章教程为大家介绍STM32F407的GPIO应用之无源蜂鸣器蜂鸣器也是GPIO控制的经典测试例程,可以让大家对STM32F407应用有个简单

lucas_songlea 2021-08-10 08:21:36

关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例

本文主要介绍了有源无源蜂鸣器的本质区别,引脚判断和对应的驱动程序,对我们选用蜂鸣器元件指引了方向

2025-07-22 09:45:29

stm32实现控制无源蜂鸣器

学习目标:stm32实现控制无源蜂鸣器,通过代码的编写,自己弄一点不一样的创意(“演唱”小星星“)学习内容:1、 蜂鸣器工作原理介绍蜂鸣器蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型:1.

茶壶茶茶 2021-12-01 06:34:39

分享一个不错的STM32蜂鸣器实验

分享一个不错的STM32蜂鸣器实验

张峰9998 2021-11-25 07:24:57

蜂鸣器的简介和使用单片机驱动蜂鸣器的资料和程序概述

蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。

2020-10-06 18:08:00

蜂鸣器定义_蜂鸣器内部构造

本文首先介绍了蜂鸣器定义,其次阐述了蜂鸣器内部构造,最后介绍了蜂鸣器的选购。

2020-03-31 09:41:59

stm32用什么软件写程序

stm32用什么软件写程序STM32单片机在编程时可以使用库函数和使用配置寄存器的方式来进行程序的实现。

2021-09-21 16:00:00

有源蜂鸣器与无源蜂鸣器的发声原理是什么

有源蜂鸣器与无源蜂鸣器是两种常见的蜂鸣器类型,它们在发声原理上存在一些差异。以下是对这两种蜂鸣器发声原理的介绍。 一、蜂鸣器概述 蜂鸣器是一种能够发出声音的电子元件,广泛应用于各种电子设备中,如手机

2024-08-09 10:04:09

蜂鸣器的介绍 如何控制蜂鸣器的工作?

单片机开发板上蜂鸣器分为两种:一种称之为有源蜂鸣器,另一种是无源蜂鸣器

2023-11-10 11:34:19

请问STM32按键输入如何控制LED/蜂鸣器?

请问STM32按键输入如何控制LED/蜂鸣器?

安立路 2021-11-25 08:24:16

STM32如何控制风扇转动和蜂鸣器响停?

STM32如何控制风扇转动和蜂鸣器响停?

柱子图宁 2021-11-26 06:44:46

怎样通过一个GPIO管脚去控制有源蜂鸣器

如何去编写蜂鸣器程序?怎样将蜂鸣器程序下载到FS-STM32F407开发板上?怎样通过一个GPIO管脚去控制有源蜂鸣器

醉狼工作室 2021-08-17 07:06:00

蜂鸣器的种类_蜂鸣器的电路符号_蜂鸣器的电压

市场上对于蜂鸣器的分类有很多,但是比较专业的分类并没有很多,下面专业的为大家来分类一下蜂鸣器

2020-03-31 09:30:28

学习STM32控制蜂鸣器的心得体会分享

以下是学习STM32控制蜂鸣器时的一些心得体会,我也是综合各种资料写出来的。蜂鸣器是一种很常见的电子元件,一般也就发出滴滴的声音。但自从在网上看到各种用蜂鸣器播放音乐的实例,我就对蜂鸣器产生了浓厚

斗地主之神 2021-12-07 07:44:04

如何用STM32单片机蜂鸣器来演奏音乐

内部不含振荡源,蜂鸣器管脚输出一定频率的信号,才能发声。本实例中用到的是无源蜂鸣器,控制频率高低发出不同声调的声音。

2022-09-30 10:31:27

蜂鸣器的封装有哪些_蜂鸣器的使用方法

蜂鸣器的封装一般是有插件蜂鸣器(DIP)和贴片蜂鸣器(SMD)之分;插件蜂鸣器一般是采用吸塑盒包装、泡沫盒包装、内盒包装、袋子包装等;贴片蜂鸣器则一般采用编带包装。

2020-03-31 09:35:13

基于STM32与无源蜂鸣器的电子琴设计

  本节原来是想讲一讲无源蜂鸣器发声的原理,用于添加BGM功能。为了讲原理,就写了一些通俗的代码,没想到越写越多,后来,干脆就形成了一个小小的项目吧——基于STM32与无源蜂鸣器的电子琴。灯光效果

msvdsufsdf 2022-01-06 07:58:13

基于STM32的甲醛浓度检测报警proteus仿真设计

基于STM32的甲醛浓度检测报警proteus仿真设计(仿真+程序+讲解) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0083 1.主要功能 功能

2023-09-16 11:09:59

STM32工作的自举程序 你了解多少?

STM32自举程序,你了解多少?

2020-03-03 11:07:34

STM32控制蜂鸣器播放音乐的原理是什么?

STM32控制蜂鸣器播放音乐的原理是什么?如何使用通用定时器TIM4实现无中断的微秒级延时函数?如何使用系统滴答时钟Systick实现带有中断的输出控制?

hgimtk 2021-11-16 07:23:58

蜂鸣器防水膜材料如何实现蜂鸣器的防水结构设计

目前市面上普通的蜂鸣器大多是不能满足防水需求的,一般的蜂鸣器作为发声元件,需要有发音孔才能有效的传导音压(声压),发音孔的存在会造成蜂鸣器内腔进水,如果积水过多会影响蜂鸣器的正常使用。 有一些使用了

2020-12-31 09:26:08

加载更多
相关标签