基于STM32-蜂鸣器

 
点击 45回复 0 原帖 2021-10-25 13:51

1.蜂鸣器


蜂鸣器是一种发声设备,被广泛用于计算机、打印机、复印机、报警器、电子玩具等。后面介绍定时器是会给大家说说利用蜂鸣器实现歌曲演奏。蜂鸣器分为有源蜂鸣器和无源蜂鸣器。那么什么是有源,什么是无源呢?这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动才能发声。 


2.硬件介绍


这里使用STM32F103实现无源蜂鸣器的交替发声,下图是硬件设计图。首先,STM32F1 的单个 IO 最大可以提供 25mA 电流(数据手册查看),而蜂鸣器的驱动电流是 30mA 。这里使用一个NPN三极管(S8050)扩流驱动蜂鸣器,R37主要用于防止蜂鸣器的误发声。当 PB.8 输出高电平的时候,蜂鸣器将发声, 当 PB.8 输出低电平的时候,蜂鸣器停止发声。



3.软件介绍


#ifndef _LED_H

#define _LED_H

#include "stm32f10x.h"

#include "sys.h"

 

 

void Led_Init(void);

void Beep_Init(void);

 

#define LED1 PFout(7)

#define LED2 PBout(5)

#define LED3 PAout(8)

#define LED4 PAout(1)

 

#define BEEP PBout(8)

 

#endif

蜂鸣器初始化函数


void Beep_Init(void)

{

//时钟使能

RCC->APB2ENR |=1<<3;


GPIOB->CRH &=0xFFFFFFF0;

GPIOB->CRH |=0x00000003;

}

主函数


#include "led.h"

#include "delay.h"

int main(void)

{

Led_Init();

Delay_Init(72);

Beep_Init();//蜂鸣器初始化

while(1)

{

BEEP=!BEEP;

delay_MS(500);


举报收藏 0打赏 0