STM32控制有源蜂鸣器模块

前言

        蜂鸣器模块在一个单片机项目中同样不可或缺,可能这篇文章对大多数人帮助并不大,但对刚刚入门的同学快速上手蜂鸣器模块应该有所帮助。

一、模块介绍

       有源蜂鸣器模块,与无源蜂鸣器模块最大的区别是其内部已经包含振荡器,只要输入高低电平,就能控制蜂鸣器的发声,支持3.3V和5V的工作电压。在使用的时候应注意,蜂鸣器是由高电平触发还是低电平触发。我在这里也给出我使用的有源蜂鸣器模块。
链接:【淘宝】https://m.tb.cn/h.5B0iEVGJQXvEn6A?tk=KDQCWLeSzjg CZ3458 「电子积木 有源蜂鸣器模块 低电平触发 蜂鸣器控制板」点击链接直接打开 或者 淘宝搜索直接打开

二、硬件设计

1.硬件清单

stm32f103c8t6,有源蜂鸣器模块、杜邦线、STlink烧录器

2.硬件接线

PS:基本除了PB3、PB4、PA15(他们用作SWI)之外的引脚都可以使用,此处以PB7为例。

蜂鸣器模块 stm32
GND GND
IO PB7
VCC 3.3V

3.硬件实物图

三、软件设计

1.BEEP.c

.c文件如果不需要添加其他特殊程序,可以无需修改,注释中写了如何使用。

/*
有源蜂鸣器(低电平触发)
1.c8t6一般用不了PA15、PB3、PB4(用作SW)
2.使用:引用beep.h 
        初始化Beep_Init();
        BEEP=0/1;
*/

#include "beep.h"

void Beep_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;   //初始化
	
  RCC_APB2PeriphClockCmd(BEEP_GPIO_CLK,ENABLE);
  GPIO_InitStructure.GPIO_Pin = BEEP_GPIO_Pin;
  GPIO_InitStructure.GPIO_Mode = BEEP_GPIO_Mode;        
  GPIO_InitStructure.GPIO_Speed = BEEP_GPIO_Speed;   //速度为50M
  GPIO_Init(BEEP_GPIO_Port, &GPIO_InitStructure);   //端口初始化
  
	GPIO_SetBits(BEEP_GPIO_Port,BEEP_GPIO_Pin);   //高电平
}

2.BEEP.h

修改引脚及对应时钟即可

#ifndef __BEEP_H
#define __BEEP_H
#include "stm32f10x.h"
#include "sys.h"

#define BEEP PBout(7)
#define BEEP_GPIO_Pin GPIO_Pin_7
#define BEEP_GPIO_Mode GPIO_Mode_Out_PP   //推挽输出
#define BEEP_GPIO_Port GPIOB
#define BEEP_GPIO_Speed GPIO_Speed_50MHz
#define BEEP_GPIO_CLK RCC_APB2Periph_GPIOB

void Beep_Init(void);

#endif

3.main.c

主函数中只要引用BEEP.h,并初始化BEEP即可,然后我们就可以通过BEEP=0或者BEEP=1来控制蜂鸣器啦

#include "BEEP.h"
#include "stm32f10x.h"

int main(void)
{	
	Beep_Init();
	
	while(1)
	{
		BEEP = 0;
	}
}

四、完整工程

希望我的程序能帮到大家,也希望大家多多提出建议!完整工程如下
链接:https://pan.baidu.com/s/1L42beEeaIFsLeDY1pZBkEA?pwd=1234 提取码:1234

作者:我是cc你是谁

物联沃分享整理
物联沃-IOTWORD物联网 » STM32控制有源蜂鸣器模块

发表评论