stm32之蜂鸣器
2017-11-17 16:38
260 查看
蜂鸣器类别
蜂鸣器分为有源和无源的。注意,这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。 无源蜂鸣器的优点是:1。便宜,2。声音频率可控3。在一些特例中,可以和LED复用一个控制口 ;有源蜂鸣器的优点是:程序控制方便 。如何区分两种蜂鸣器
看蜂鸣器的底部,如果有可以看到一小块的电路板,那就是有源的,如果看到的是封装完整的底部,就是无源的。蜂鸣器使用
通过给一定频率的高低电平来实现发声,占空比来控制声音大小,频率实现音调大小。(但这是适用于无源蜂鸣器)代码实现
因为是单片机的管脚直接控制,所以对蜂鸣器的控制就是对管脚进行配置。beep.c
#include "beep.h" void Beep_Init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; GPIO_Init(GPIOF,&GPIO_InitStructure); GPIO_SetBits(GPIOF,GPIO_Pin_8); }
main.c
int main() { RCC_HSE_Config(8,336,2,7);//配置系统时钟,168mhz。注意这个函数定义要写出来 Beep_Init();//beep初始化,也就是对管脚进行初始化 SysTick_Init(168);//设置systick的时钟源以及配置相关的寄存器 while(1) { GPIO_ResetBits(GPIOF,GPIO_Pin_8); delay_ms(100); GPIO_SetBits(GPIOF,GPIO_Pin_8); delay_ms(100); } }
注意:这里用到了高低电平交替不是为了使蜂鸣器发声,而是为了使他发出的声音为滴滴的声音。因为这里为有源的,所以根据电路图只要低电平就可以发声(只不过不为滴滴声音,是长鸣),给高电平就停止发声。
相关文章推荐
- STM32控制蜂鸣器
- 【连载】【STM32神舟III号实验例程】蜂鸣器实验工程实验(实验二)
- STM32开发指南-蜂鸣器实验
- 【STM32 .Net MF开发板学习-06】蜂鸣器和LED数码管显示
- [置顶] ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫
- [置顶] ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
- 单片机入门学习六 STM32单片机学习三 蜂鸣器
- STM32与蜂鸣器
- [置顶] ARM开发(2)基于STM32的蜂鸣器
- [置顶] ARM开发(10)基于STM32的通用定时器中断控制蜂鸣器响
- 小蚂蚁~STM32端口重映射~驱动蜂鸣器
- 基于stm32处理器的PWM 异步驱动蜂鸣器
- 跟我学STM32107RC--- STM32中的蜂鸣器实验总结
- 【STM32 .Net MF开发板学习-06】蜂鸣器和LED数码管显示
- STM32人门篇——跑马灯、蜂鸣器和按键
- STM32的GPIO口的输出:开漏输出和推挽输出
- STM32--vs1053 WAV录音实现(保存在SD卡)
- 关于stm32的USB学习笔记之USB_HW.c
- 结合固件库探讨STM32读写FLASH步骤、HardFault问题
- STM32的NVIC理解