基于CubeMX学习 驱动蜂鸣器发声实验



目录

  • 基于CubeMX学习 驱动蜂鸣器发声实验
  • 前言
  • 1、蜂鸣器原理
  • 2、配置过程
  • 2.1.CubeMX部分
  • 2.2.硬件连接部分
  • 2.3.MDK程序部分
  • 2.4.下载验证
  • 3、总结



前言

蜂鸣器广泛应用于报警器、电子玩具、汽车电子等各类电子产品中,常作为发声器件提示等领域使用。

1、蜂鸣器原理

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,本实验使用到的蜂鸣器是有源蜂鸣器。
这里的有源不是指电源的“源”,而是指内部有没有自带的震荡源,所以有源蜂鸣器自带了震荡电路,通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波才能驱动发声。

2、配置过程

2.1.CubeMX部分

2.1.1 选择芯片型号

linux bios蜂鸣器 cubemx蜂鸣器_单片机

2.1.2 时钟源配置

linux bios蜂鸣器 cubemx蜂鸣器_引脚_02

2.1.3 启用 Debug 配置

linux bios蜂鸣器 cubemx蜂鸣器_学习_03

2.1.4 选择外部高速时钟作为来源

linux bios蜂鸣器 cubemx蜂鸣器_学习_04

2.1.5 GPIO引脚配置,作为输出功能。如果找不到端口,可以用搜索查找比较方便。

linux bios蜂鸣器 cubemx蜂鸣器_单片机_05


linux bios蜂鸣器 cubemx蜂鸣器_学习_06

引脚工作模式相关配置,由于是高电平发声的,所以我初始化时用了低电平,开始就把蜂鸣器关闭了。

linux bios蜂鸣器 cubemx蜂鸣器_stm32_07

2.1.6 工程名字及路径不能有中文,否则生成工程时会报错。

linux bios蜂鸣器 cubemx蜂鸣器_单片机_08

2.1.7 生成独立的.c/.h相关头文件。

linux bios蜂鸣器 cubemx蜂鸣器_linux bios蜂鸣器_09

2.1.8 打开MDK工程

linux bios蜂鸣器 cubemx蜂鸣器_学习_10

2.2.硬件连接部分

蜂鸣器的硬件控制引脚接到芯片的PB8引脚上,根据原理图分析,是高电平作用发声。

linux bios蜂鸣器 cubemx蜂鸣器_学习_11


由于单片机IO口输出的电流是比较小的,所以在这里用一个NPN型三极管来驱动蜂鸣器,增加io口的的驱动能力。

linux bios蜂鸣器 cubemx蜂鸣器_引脚_12

2.3.MDK程序部分

2.3.1 打开工程后首先全局编译一下,确保工程在编写之前正常编译通过,以免后续麻烦排查。

linux bios蜂鸣器 cubemx蜂鸣器_学习_13

2.3.2 GPIO初始化,由cubemx生成的,和之前的配置保持一致,不用自己写了,比较方便。

linux bios蜂鸣器 cubemx蜂鸣器_stm32_14

2.3.3 主要功能代码:

linux bios蜂鸣器 cubemx蜂鸣器_linux bios蜂鸣器_15

代码如下:

while (1)
  {
      HAL_GPIO_WritePin(BEEP_GPIO_Port,GPIO_PIN_8,GPIO_PIN_SET);  /* 打开蜂鸣器 */
      HAL_Delay(500);                                             /* 延时 500ms */
      HAL_GPIO_WritePin(BEEP_GPIO_Port,GPIO_PIN_8,GPIO_PIN_RESET);/* 关闭蜂鸣器 */
      HAL_Delay(500);                                             /* 延时 500ms */
  }

2.3.4 debug配置,勾选下载后自带运行代码。

linux bios蜂鸣器 cubemx蜂鸣器_引脚_16

2.3.5 如果在编程过程中没有开启代码补全提示功能,可以根据下图所示的配置打开。

linux bios蜂鸣器 cubemx蜂鸣器_stm32_17


需要几个字符后开始提示,根据个人喜欢设置。

linux bios蜂鸣器 cubemx蜂鸣器_linux bios蜂鸣器_18

2.4.下载验证

程序编译下载到开发板后,可以听到蜂鸣器以1s为周期,500ms间隔发声。

3、总结

蜂鸣器的使用还算是比较基础的,一些简单步骤就不详细写了。主要是区分蜂鸣器的种类和驱动方式、GPIO的相关配置步骤等。