蜂鸣器可分为两种:有源蜂鸣器和无源蜂鸣器。这里的源是指是否有自己的冲击电路。有源蜂鸣器有自己的冲击电路,通电时会发出声音;无源蜂鸣器需要提供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开发指南(库函数版)》