资讯详情

STM32单片机蜂鸣器实验

蜂鸣器可分为两种:有源蜂鸣器和无源蜂鸣器。这里的源是指是否有自己的冲击电路。有源蜂鸣器有自己的冲击电路,通电时会发出声音;无源蜂鸣器需要提供2~5Khz左右的方波进行驱动,才可以发出声音。 在这里插入图片描述 上一个实验是对的GPIO简单介绍一下,本章不对GPIO在做细讲。 让我们简要了解蜂鸣器模块的基本原理: 蜂鸣器的驱动电流是30mA左右,而STM单片机单个32IO最大提供电流为25mA,虽然很常相似,但考虑到各个方面,决定不直接使用IO用嘴驱动蜂鸣器此时需要使用三极管来增加电流,然后驱动蜂鸣器,所以我们甚至不需要使用25mA的电流,单片机的IO口只要不到1mA可使用电流。 下面为蜂鸣器模块原理图: 从原理图可以看出,蜂鸣器是高电平时,蜂鸣器发声,低电平时停止发声。

void BEEP1_Init(void) { 
         GPIO_InitTypeDef GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOA,&GPIO_InitStructure);  GPIO_SetBits(GPIOE,GPIO_Pin_4);//设置GPIOA--GPIO_Pin_4为高电平 } 

配置方式和LED配置方式相似,但设置的端口不同, 头文件

#ifndef __BEEP_H #define __BEEP_H  #include "sys.h" //蜂鸣器端口定义 #define BEEP PEout(4) // BEEP,蜂鸣器接口  void BEEP1_Init(void); //初始化  #endif 

蜂鸣器主要函数控制在主函数中,注:初始函数

while(1)  { 
          //LED0初始化时设置为高电平LED0 = 0时,灯不亮   BEEP=0;       delay_ms(1000);   BEEP=1;     delay_ms
      
       (
       1000
       )
       ; 
       } 
      

注:本文中的图片使用的是网图,如有侵权,即删除图片。 参考文献:《STM32F1开发指南(库函数版)》

标签: 三极管f1

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台