实验2:蜂鸣器实验

一、蜂鸣器简介

    蜂鸣器可以分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器自带震荡电路,一通电就会发声;无源蜂鸣器没有自带震荡电路,必须外部提供2~5KHz左右的方波驱动,才能发声。

    本实验中的蜂鸣器为有源蜂鸣器。

    单个IO最大可以提供25mA电流,而蜂鸣器的驱动电流是30mA,所以不使用IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样IO只需要提供不到1mA的电流就足够了。

二、原理图

实验2:蜂鸣器实验_第1张图片

三、程序

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); 

    }
}

你可能感兴趣的:(STM32)