当前位置: 首页 > article >正文

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

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


文章目录

  • STM32CubeIDE基础学习-BEEP蜂鸣器实验
  • 前言
  • 第1章 硬件介绍
  • 第2章 工程配置
    • 2.1 工程外设配置部分
    • 2.2 生成工程代码部分
  • 第3章 代码编写
  • 第4章 实验现象
  • 总结


前言

前面学习了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也是可以正常驱动的,这种情况不使用使用三极管也行。


http://www.kler.cn/a/273388.html

相关文章:

  • Java 继承
  • Java进阶-在Ubuntu上部署SpringBoot应用
  • 【LabVIEW FPGA入门】并行执行
  • 未来之路:Python PDF处理技术的革新
  • Redis - 缓存访问 缓存穿透 缓存击穿 缓存雪崩
  • Docker部署TeamCity来完成内部CI、CD流程
  • AJAX-原理XMLHttpRequest
  • yocto编译测试
  • 部署Zabbix Agents添加使能监测服务器_Windows平台_MSI/Archive模式
  • 二、Eureka注册中心
  • 计算机视觉之三维重建(1)---摄像机几何
  • MacOS本地使用Docker Desktop 搭建Minio容器
  • Zinx框架的高级用法
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Polygon)
  • csv编辑器是干什么的?
  • python知识点总结(四)
  • STM32:定时器
  • Grid布局
  • 每周编辑精选|微软开源 Orca-Math 高质量数学数据集、清华大学研究团队发布条件去噪扩散模型 SPDiff...
  • 深入学习NIO三大核心:缓冲区 Buffer、通道Channel、Selector选择器
  • nextjs 使用 lru-cache 进行缓存,在api里访问不到page中的缓存
  • Easy-Jmeter: 性能测试平台