蜂鸣器驱动程序(STM 32)

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


    1550916535(1).png

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

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

#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); //???        
    }
}






©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容