汽车
蜂鸣器程序(STM32嵌入式-蜂鸣器实验)

1、使无源蜂鸣器发出声音。

1.1 蜂鸣器简介


STM32嵌入式-蜂鸣器实验nerror="javascript:errorimg.call(this);">

无源蜂鸣器

这里的无源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器带震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供2~5Khz 左右的方波驱动,才能发声。前面我们已经对 STM32 的 IO 做了简单介绍,上一章,我们就是利用 STM32 的 IO 口直接驱动 LED 的,本章的蜂鸣器,我们能否直接用 STM32 的 IO 口驱动呢? 让我们来分析下:STM32 的单个 I/O最大可以提供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,但是全盘考虑, STM32 整个芯片的电流,最大也就 150mA,如果用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用STM32 的 IO 直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样STM32 的 IO 只需要提供不到 1mA 的电流就足够了。IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。本章将要实现的是控制普中科技 STM32 开发板上的蜂鸣器发出急促的报警声,进一步熟悉 STM32 IO 口的使用。

首先我们来看一下我们开发板上面蜂鸣器的接线图:

从上面的图,我们可以看到蜂鸣器是接到单片机的 PB 口的 PB5。而驱动无

发声也就是将单片机 PB5 管脚每间隔一段时间不输出一个高低电平脉冲即可。

int main()

BEEP_Init(); //端口初始化

while(1)

sound2();

}

这个主程序其实跟 LED 的主程序是差不多的,只是对应换成了蜂鸣器端口的初始化和驱动子函数。

GPIO_InitStructure.GPIO_Pin=BZ;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率

GPIO_Init(GPIOB,&GPIO_InitStructure);

蜂鸣器管脚定义在其头文件内如下:

#define BZ GPIO_Pin_5 //PB5 定义端口 PB5

*

* 函 数 名 : sound2

: 蜂鸣器报警函数 通过改变频率控制声音变化

* 输 入 : 无

*******************************************************************************

void sound2() //电动车报警

u32 i=1000;

//产生一段时间的 PWM 波,使蜂鸣器发声

GPIO_SetBits(GPIOB,BZ);

delay(i);

delay(i--);

}


顶一下()     踩一下()

热门推荐

发表评论
0评