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);