基于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 选择芯片型号
2.1.2 时钟源配置
2.1.3 启用 Debug 配置
2.1.4 选择外部高速时钟作为来源
2.1.5 GPIO引脚配置,作为输出功能。如果找不到端口,可以用搜索查找比较方便。
引脚工作模式相关配置,由于是高电平发声的,所以我初始化时用了低电平,开始就把蜂鸣器关闭了。
2.1.6 工程名字及路径不能有中文,否则生成工程时会报错。
2.1.7 生成独立的.c/.h相关头文件。
2.1.8 打开MDK工程
2.2.硬件连接部分
蜂鸣器的硬件控制引脚接到芯片的PB8引脚上,根据原理图分析,是高电平作用发声。
由于单片机IO口输出的电流是比较小的,所以在这里用一个NPN型三极管来驱动蜂鸣器,增加io口的的驱动能力。
2.3.MDK程序部分
2.3.1 打开工程后首先全局编译一下,确保工程在编写之前正常编译通过,以免后续麻烦排查。
2.3.2 GPIO初始化,由cubemx生成的,和之前的配置保持一致,不用自己写了,比较方便。
2.3.3 主要功能代码:
代码如下:
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配置,勾选下载后自带运行代码。
2.3.5 如果在编程过程中没有开启代码补全提示功能,可以根据下图所示的配置打开。
需要几个字符后开始提示,根据个人喜欢设置。
2.4.下载验证
程序编译下载到开发板后,可以听到蜂鸣器以1s为周期,500ms间隔发声。
3、总结
蜂鸣器的使用还算是比较基础的,一些简单步骤就不详细写了。主要是区分蜂鸣器的种类和驱动方式、GPIO的相关配置步骤等。