【学习笔记】在STM32_Mini上使用无源蜂鸣器

参考的教程:杨桃电子《STM32入门100步》

目录

蜂鸣器的介绍

有源蜂鸣器

无源蜂鸣器

蜂鸣器配置程序

在主函数中的使用


蜂鸣器的介绍

蜂鸣器分为无源蜂鸣器和有源蜂鸣器,这个源,不是电源的意思,而是振荡源。

有源蜂鸣器

有源蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,程序控制方便但频率固定,单片机一个高低电平就可以让其发出声音。


无源蜂鸣器

无源蜂鸣器和电磁扬声器一样没有内部驱动电路需要接在音频输出电路中才能发声。如果给直流信号是不响的,因为磁路恒定,必须用2K~5K的方波去驱动它。声音频率可控,可以做出“多来米发索拉西”的效果。在一些特例中,可以和LED复用一个控制口。

我买的是无源蜂鸣器模块 ,是低电平触发。

这是原理图,可见,连接十分简单。只需要一个I/O端口。

3V3-5V供电。

我使用的是PB12端口。

蜂鸣器配置程序

/*buzzer.h*/

#ifndef __BUZZER_H
#define __BUZZER_H
#include "stm32f10x.h"

#define BUZZER_PORT   GPIOB
#define BUZZER_PIN    GPIO_Pin_12

void BUZZER_Init(void);
void BUZZER_BEEP1(void);
void BUZZER_BEEP2(void);
void MIDI_PLAY(void);

#endif  /*__BUZZER_H*/


/*buzzer.c*/

#include "buzzer.h"
#include "Delay.h"


void BUZZER_Init(void)
	{ //LED灯的接口初始化
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	    GPIO_InitTypeDef  GPIO_InitStructure; 	     
        GPIO_InitStructure.GPIO_Pin = BUZZER_PIN; //选择端口号(0~15或all)                        
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    
	    GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);			
		
		GPIO_WriteBit(BUZZER_PORT,BUZZER_PIN,(BitAction)(1)); /*高电平才不会响*/
  }

	/*蜂鸣器音1*/
	void BUZZER_BEEP1(void)
	{
		uint16_t i;
		for(i=0;i<200;i++)/*产生200个频率周期,让蜂鸣器响一段时间*/
		{
			/*
			脉冲输出
			发出1KHz的声音,每秒1000个周期,每个周期1000us
			*/
		    GPIO_WriteBit(BUZZER_PORT,BUZZER_PIN,(BitAction)(0)); /*高电平才不会响*/
			Delay_us(500);
			GPIO_WriteBit(BUZZER_PORT,BUZZER_PIN,(BitAction)(1)); /*高电平才不会响,以输出高电平结束*/
			Delay_us(500);
			
		}
	}

看注释应该能理解

在主函数中的使用

可以作为程序初始化完成的提示音

int main(void)
{
	// 来到这里的时候,系统的时钟已经被配置成72M。
	BUZZER_Init();
	BUZZER_BEEP1();/*完成各个初始化,响一声*/
	while(1)
	{
	}
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值