0
点赞
收藏
分享

微信扫一扫

STM32CubeIDE基础学习-BEEP蜂鸣器实验

英乐 03-22 13:30 阅读 2

STM32CubeIDE基础学习-BEEP蜂鸣器实验


文章目录


前言

前面学习了LED闪烁实验,现在来学习一下蜂鸣器发声实验,直接在LED的工程基础上进行添加蜂鸣器的功能代码就行,其它的功能不用修改。

STM32CubeIDE基础知识学习回顾

实验目的:
学习配置GPIO作为输出功能使用,从而实现控制BEEP每隔500ms交替响灭功能。


第1章 硬件介绍

本实验使用的开发板主控芯片是STM32F103C8T6,其核心原理图如下:

在这里插入图片描述

时钟来源使用的是外部高速8M晶振作为高速时钟。

蜂鸣器接到芯片的PA15引脚上,原理图如下图所示:

在这里插入图片描述

第2章 工程配置

本实验直接采用上一个LED闪烁实验的工程作为基础模板,直接拷贝粘贴即可,然后在上面添加BEEP的相关功能配置即可,其它不用修改,就不用再新建工程了。

2.1 工程外设配置部分

配置GPIO,跟着标号依次设置,如果找不到芯片的引脚,可以在右下角进行搜索,就可以看到芯片对应的引脚出现黑色闪烁的,然后点击进行选择需要配置的功能即可。

鼠标左键点击该引脚,选择对应需要的功能,BEEP发声实验的使用选择输出功能就行。如下图所示:

在这里插入图片描述

接着配置GPIO引脚工作模式,根据查看BEEP的连接原理图可知,控制蜂鸣器的引脚是接到三极管上的,根据该该型号三极管的开关原理可知,当单片机引脚输出高电平时,三极管会导通,输出低电平时三极管截止不工作,从而可以控制蜂鸣器的响或不响。

引脚的配置如下图所示:

在这里插入图片描述

端口功能配置如下:
1、由于初始上电要蜂鸣器不发声,则需要配置初始化状态为低电平状态。
2、模式配置为推挽输出。
3、输出保持设置不用上下拉即可,也可以设置输出上拉,这里输出设置这个上下拉作用不是很大。
4、输出速度选择中速或低速都行。
5、User Label建议定义一个自己喜欢见名知意的名字,方便写程序时查看和方便使用。

接着RCC时钟、调试接口都不用修改,保持默认设置即可。

最后新增的蜂鸣器引脚如下图所示:

在这里插入图片描述

到此,整个工程需要新增的功能就配置完成了,接下来就可以生成代码工程进行功能代码编写了。

2.2 生成工程代码部分

可以快捷键ALT+K,或者点击生成工程的图标按钮生成代码工程。

生成后最终会显示下图这样的代码:

在这里插入图片描述

可以看到继承了上一个LED实验功能的代码。

接着就可以在上面添加自己需要实现的蜂鸣器功能代码了。

第3章 代码编写

进入代码工程后,可以先点击编译一下,看代码工程是否会报错,如果没有警告和报错就可以进行代码编写了。不然如果在一开始的工程都报错了,后面就不好找问题了。

在main.h里面可以看到蜂鸣器相关的宏定义,如下图所示:

在这里插入图片描述

创建beep.h文件,在里面添加的代码如下图所示,可以直接从led.h文件里面拷贝,对应修改为beep相关的配置即可。

在这里插入图片描述

最终main函数里面的while循环里面可以写如下代码就可以了:

while(1)
{
	BEEP(0);             /* 关闭BEEP */
	HAL_Delay(500);      /* 延时500ms */
	BEEP(1);             /* 打开BEEP */
	HAL_Delay(500);      /* 延时500ms */
}

在这里插入图片描述

要注意main文件里面对应添加引入头文件路径才行,不然会报警告的。如下图所示:

在这里插入图片描述

添加完上面这些代码后,编译下载,可以听到板子上的蜂鸣器每隔500毫秒在交替响灭了。

附加部分:
为了方便测试,可以在创建的beep.c文件里面添加函数代码如下图所示,可以直接从led.c文件里面拷贝,对应修改为beep相关的即可,如下图所示:

在这里插入图片描述

然后在头文件声明一下该函数。

在这里插入图片描述

最终在main.c文件里面调用测试功能函数如下图所示:

在这里插入图片描述

第4章 实验现象

下载代码后,就可以听到板子的蜂鸣器每隔500毫秒在交替响灭了。


总结

蜂鸣器的实验还是比较简单的,采用的是有源蜂鸣器,主要弄明白三极管的导通原理就可以,本电路添加三极管的作用是为了增加IO口的驱动能力,保证该蜂鸣器能正常工作的。

一般情况下STM32 的IO口的驱动电流是比较小的,而蜂鸣器的工作电流是需要比较高,测试有一些比较小功率的蜂鸣器直接接IO也是可以正常驱动的,这种情况不使用使用三极管也行。

举报

相关推荐

0 条评论