你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 GPIO之蜂鸣器

[复制链接]
STMCU小助手 发布时间:2022-4-2 15:00
01. 蜂鸣器简介
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

探索者 STM32F4 开发板板载的蜂鸣器是电磁式的有源蜂鸣器,如图 7.1.1 所示:

C3OKI2)3LIDWS[HME(]}H16.png

这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动,才能发声。

02. 硬件设计
蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,直接编写代码就可以了。蜂鸣器的驱动信号连接在 STM32F4 的 PF8 上。

52)353YM[OIL]N@DTOY9ETO.png

图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R61 主要用于防止蜂鸣器的误发声。当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声。

03. 程序示例一
蜂鸣器不叫

beep.h文件

  1. #ifndef __BEEP_H__
  2. #define __BEEP_H__


  3. #include "sys.h"


  4. //蜂鸣器初始化
  5. void BEEP_Init(void);

  6. #define BEEP PFout(8)

  7. #endif /*__BEEP_H__*/
复制代码

beep.c文件

  1. #include "beep.h"

  2. //蜂鸣器初始化
  3. void BEEP_Init(void)
  4. {
  5.         GPIO_InitTypeDef GPIO_InitStruct;
  6.         
  7.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
  8.         
  9.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
  10.         
  11.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
  12.         
  13.         GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  14.         
  15.         GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;
  16.         
  17.         //使能时钟
  18.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
  19.         
  20.         //初始化GPIO
  21.         GPIO_Init(GPIOF, &GPIO_InitStruct);

  22.         //设置默认低电平
  23.         GPIO_ResetBits(GPIOF, GPIO_Pin_8);
  24. }
复制代码

main.c文件

  1. #include "stm32f4xx.h"

  2. #include "delay.h"
  3. #include "led.h"
  4. #include "beep.h"


  5. int main(void)
  6. {
  7.         //初始化
  8.         delay_init(168);
  9.         LED_Init();
  10.         BEEP_Init();
  11.         
  12.         //蜂鸣器不叫
  13.         GPIO_ResetBits(GPIOF, GPIO_Pin_8);
  14. }
复制代码

04. 程序示例二

蜂鸣器叫

main.c文件

  1. #include "stm32f4xx.h"

  2. #include "delay.h"
  3. #include "led.h"
  4. #include "beep.h"


  5. int main(void)
  6. {
  7.         //初始化
  8.         delay_init(168);
  9.         LED_Init();
  10.         BEEP_Init();

  11.         GPIO_SetBits(GPIOF, GPIO_Pin_8);
  12. }
复制代码

05. 程序实例三
蜂鸣器循环叫1秒 不叫1秒

main.c

  1. #include "stm32f4xx.h"

  2. #include "delay.h"
  3. #include "led.h"
  4. #include "beep.h"


  5. int main(void)
  6. {
  7.         //初始化
  8.         delay_init(168);
  9.         LED_Init();
  10.         BEEP_Init();
  11.         
  12.         //蜂鸣器不叫
  13.         GPIO_ResetBits(GPIOF, GPIO_Pin_8);
  14.         GPIO_ResetBits(GPIOF, GPIO_Pin_9);        
  15.         delay_ms(1000);
  16.         
  17.         //蜂鸣器叫
  18.         GPIO_SetBits(GPIOF, GPIO_Pin_8);
  19.         GPIO_SetBits(GPIOF, GPIO_Pin_9);
  20.         delay_ms(1000);
  21.         
  22. }
复制代码


位带操作

main.c文件

  1. #include "stm32f4xx.h"

  2. #include "delay.h"
  3. #include "led.h"
  4. #include "beep.h"


  5. int main(void)
  6. {
  7.         //初始化
  8.         delay_init(168);
  9.         LED_Init();
  10.         BEEP_Init();
  11.         
  12.         //蜂鸣器不叫
  13.         LED2 = 0;
  14.         BEEP = 0;
  15.         delay_ms(1000);
  16.         
  17.         //蜂鸣器叫
  18.         LED2 = 1;
  19.         BEEP = 1;
  20.         delay_ms(1000);
  21. }
复制代码


收藏 评论0 发布时间:2022-4-2 15:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版