STM32 蜂鸣器实验

STM32 蜂鸣器实验

项目说明

使用STM32控制无源蜂鸣器播放声音。

知识点

  • 1、无源蜂鸣器的“源”指的不是电源,而是指有没有自带震荡电路,有源蜂鸣器带震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供2~5Khz 左右的方波驱动,才能发声。
  • 2、对蜂鸣器的控制仅需要IO口的一个引脚。该引脚产生一个2~5kHz的方波即可。产生的方式为每过一段时间后就输出高,之后输出同样时间的低,如此反复。
  • 3、脉冲宽度调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这个项目中,输出口并不是直接接到无源蜂鸣器的,而是通过连接欸一个三极管后再连接。
  • 4、GPIO口的初始化。和流水灯一样,需要使用IO口就需要对其进行初始化。

部分代码

  • 1、产生方波的代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void sound2()  //电动车声音
    {
    u32 i=1000;
    while(i--) //产生一段PWM波
    {
    GPIO_SetBits(GPIOB,BZ); //IO输出高电平
    delay(i);
    GPIO_ResetBits(GPIOB,BZ); //IO输出低电平
    delay(i--);
    }
    }

这里实现PWM的方式是通过while循环不断对i进行减一操作。这样做既保证了输出波形为方波,同时又保证了每一次周期都减1。
可通过更改i的值来改变发出的声音。