基于STM32-蜂鸣器

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

蜂鸣器初始化函数

/*
函数功能:LED初始化;
硬件连接:
		BEEP -> PB8;
*/
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);
	}
}

最后, 后期会更新我的博客(超声波,GSM,GPS,蓝牙,WIFI,OLED,摄像头,串口封包解包,红外解码编码等)也有上传资源(M3的小实验和小项目),同时也会分享嵌入式相关的,欢迎关注~

猜你喜欢

转载自blog.csdn.net/zdw6868/article/details/80536125