一、蜂鸣器简介
蜂鸣器可以分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器自带震荡电路,一通电就会发声;无源蜂鸣器没有自带震荡电路,必须外部提供2~5KHz左右的方波驱动,才能发声。
本实验中的蜂鸣器为有源蜂鸣器。
单个IO最大可以提供25mA电流,而蜂鸣器的驱动电流是30mA,所以不使用IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样IO只需要提供不到1mA的电流就足够了。
二、原理图
三、程序
beep.h文件
#ifndef __BEEP_H__
#define __BEEP_H__
#include "stm32f4xx_conf.h"
void BEEP_Config(void);
void BEEP_ON(void);
void BEEP_OFF(void);
#endif
beep.c文件
#include "./BEEP/beep.h"
/*
BEED--->PD7
*/
/**************************
功能:配置蜂鸣器
参数:无
返回值:无
***************************/
void BEEP_Config(void)
{
GPIO_InitTypeDef initValue;
/*1、打开GPIO时钟*/
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
/*2、初始化BEEP*/
initValue.GPIO_Mode = GPIO_Mode_OUT;
initValue.GPIO_OType = GPIO_OType_PP;
initValue.GPIO_Pin = GPIO_Pin_7;
initValue.GPIO_PuPd = GPIO_PuPd_DOWN;
initValue.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&initValue);
/*3、设置默认值(默认不响)*/
GPIO_ResetBits(GPIOD,GPIO_Pin_7);
}
/**************************
功能:开启蜂鸣器
参数:无
返回值:无
***************************/
void BEEP_ON(void)
{
GPIO_SetBits(GPIOD,GPIO_Pin_7);
}
/**************************
功能:关闭蜂鸣器
参数:无
返回值:无
***************************/
void BEEP_OFF(void)
{
GPIO_ResetBits(GPIOD,GPIO_Pin_7);
}
main.c文件
#include "delay.h"
#include "./LED/led.h"
#include "./BEEP/beep.h"
int main(void)
{
//配置BEEP
BEEP_Config();
while(1)
{
LED_ON(1); //点亮LED1
BEEP_OFF(); //蜂鸣器不响
delay_ms(500);
LED_OFF(1); //熄灭LED1
BEEP_ON(); //蜂鸣器响
delay_ms(500);
}
}