蜂鸣器实验

蜂鸣器介绍

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

STM32的单个 IO 最大可以提供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近。但是全盘考虑, STM32 整个芯片的电流,最大也就150mA ,如果用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了。所以,我们不用 STM32 的 IO 直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样 STM32 的 IO 只需要提供不到 1mA 的电流就足够了。

蜂鸣器在硬件上是直接连好的,不需要经过任何设置。 蜂鸣器的驱动信号连接在STM32的 PB8 上。因此,这里只需要控制蜂鸣器对应的IO口进行供电即可。当 PB.8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声。

main.c

#include"beef.h"

int main(void)
{
	BEEF_Init();
	int i;
	while(1)
	{
		for(i=0;i<1000;i++);
		GPIO_SetBits(GPIOB,GPIO_Pin_8);
		for(i=0;i<1000;i++);
		GPIO_ResetBits(GPIOB,GPIO_Pin_8);
		
	}
}

beep.h

#ifndef __BEEF_H
#define __BEEF_H

#include "stm32f10x.h"

void BEEF_Init(void);

#endif

beep.c

#include"beef.h"

void BEEF_Init()
{
	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 ,关闭蜂鸣器输出
	
}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值