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