蜂鸣器驱动程序(STM 32)

  • 有源蜂鸣器和无源蜂鸣器的区别
    有源蜂鸣器:内置频率发生电路;通电就能发出声音;声音频率固定;成本较高
    无源蜂鸣器:内部没有频率发生电路;需要外部给与频率;可以产生不同频率声音;成本较低
  • 蜂鸣器的连接电路如下:


    蜂鸣器驱动程序(STM 32)_第1张图片
    1550916535(1).png

    电路原理如下:三极管为PNP型,与NPN型三极管导通条件相反,B为基极,C为集电极,E为发射极,电阻R3是为了保护单片机IO口,当基极为低电平时,三极管E和C导通,蜂鸣器工作,当基极为高电平时,三极管E和C导通,蜂鸣器不工作

  • 程序如下:
*************************
  #ifndef __BUZZER_H
  #define __BUZZER_H     
  #define BUZZERPORT    GPIOB   
#define BUZZER  GPIO_Pin_5  
void BUZZER_Init(void);//蜂鸣器初始化函数
void BUZZER_BEEP1(void);//蜂鸣器响应函数                   
#endif
*************************

#include "buzzer.h"
#include "delay.h"

void BUZZER_Init(void){ 
    GPIO_InitTypeDef  GPIO_InitStructure;   
    GPIO_InitStructure.GPIO_Pin = BUZZER;                    
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //
    GPIO_Init(BUZZERPORT, &GPIO_InitStructure); 
    
    GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器初始化,至高    
}

void BUZZER_BEEP1(void){ //蜂鸣器响应函数
    u16 i;
    for(i=0;i<200;i++){
        GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //????????????0
        delay_us(500); //???        
        GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //????????????????1
        delay_us(500); //???        
    }
}






你可能感兴趣的:(蜂鸣器驱动程序(STM 32))