基于STM32F103ZET6库函数蜂鸣器实验

基于STM32F103ZET6库函数蜂鸣器实验

蜂鸣器

类型

精英 STM32 开发板板载的蜂鸣器是电磁式的有源蜂鸣器。

有无源

这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路, 一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动, 才能发声。

驱动方式

我们不用 STM32 的 IO 直接驱动蜂鸣器,而是 通过三极管扩流后再驱动蜂鸣器

硬件设计

原理图

蜂鸣器的驱动信号连接在 STM32 的 PB8 上
在这里插入图片描述
图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R33 主要用于防止蜂鸣器的误发 声。当 PB.8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声。

在这里插入图片描述
在BEEP端输入很小的电流通过三极管的放大作用,使得上面连接蜂鸣器的一端输出放大的电流,就能使蜂鸣器响起来

软件设计

beep.c

#include "beep.h"

void BEEP_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能 GPIOB 端口时钟 
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //BEEP-->GPIOB.8 端口配置 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	   //速度为 50MHz 
 GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据参数初始化 GPIOB.8 
 
 GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出 0,关闭蜂鸣器输出 
}

这里的设计主要是设置GPIO和LED的配置大体相同

beep.h

#ifndef __BEEP_H 
#define __BEEP_H   

#include "sys.h"  //蜂鸣器端口定义 

#define BEEP PBout(8)   // BEEP,蜂鸣器接口  

void BEEP_Init(void);     //初始化  
          
#endif 

这里还是通过位带操作来实现某个 IO 口的输出控制,BEEP 就直接代 表了 PB8 的输出状态。我们只需要令 BEEP=1,就可以让蜂鸣器发声

main.c

#include "sys.h"  
#include "delay.h"  
#include "led.h"  
#include "beep.h" 

int main(void)  
{  
	delay_init();          //延时函数初始化     
	LED_Init();       //初始化与 LED 连接的硬件接口 
	BEEP_Init();            //初始化蜂鸣器端口  
	while(1)  
	{   
		LED0=0;   
		BEEP=0;       
		delay_ms(300);   
		LED0=1;      
		BEEP=1;     
		delay_ms(300);  
	}  
}
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是北豼不太皮吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值