1.无源蜂鸣器
它价格低廉、使用简单。但是它内部没有激励源,所以我们要通过不断将IO口电平置高和置低来产生一定频率的方波信号,驱动蜂鸣器内部的震动装置震动,来达到让蜂鸣器发声的目的。输入不同频率的方波信号可使蜂鸣器发出不同频率的声音。
2.有源蜂鸣器
它与无源蜂鸣器相比价格稍贵,但是使用更加简单。它内部自带多个振荡电路,因此我们只需接入额定电压的直流电即可发出指定频率的声音,但频率由内部振荡电路决定,无法改变。
以下是一个简单的STM32F103有源蜂鸣器驱动程序的例子
#include "stm32f10x.h"
#include "delay.h"
#define BEEP_GPIO_PORT GPIOA //定义蜂鸣器所使用的GPIO口为PA4
void Beep_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB6输出
GPIO_InitStructure.GPIO_Mode = GPI