单片机入门学习六 STM32单片机学习三 蜂鸣器

蜂鸣器的控制仍是GPIO的入门开发,本篇仅罗列下蜂鸣器的相关概念和蜂鸣器开发源码

1、蜂鸣器

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

本篇学习的板子上的蜂鸣器是电磁式的有源蜂鸣器,有源蜂鸣器是指自带震荡电路而不是指自带电源。(无源蜂鸣器没有自带震荡电路,必须外部提供2~5Khz左右的方波驱动才能发声。)

所用板子的蜂鸣器的原理图如下:
BEEP
从原理图可以看出板子上的蜂鸣器接了一个三极管放大器,使用三极管的原因是stm32 IO的驱动电流不够大驱动蜂鸣器发声很吃劲,所以用一个放大器增大电流来驱动放大器。
看原理图我们会发现在R36旁还接了一个R38电阻,该电阻的作用是分流保证stm32 IO空闲状态下不会驱动蜂鸣器发声,因为stm32 IO空闲状态是浮空状态的,其输出的电压值不确定,所以旁接R38电阻目的是风流掉浮空状态下低电压产生的小电流。

从stm32原理图中,我们可以知道蜂鸣器接的IO口是PB8,如下图:
stm32

2、程序

#include "beep.h"

//初始化PB8为输出口.并使能这个口的时钟          
//蜂鸣器初始化
void BEEP_Init(void)
{
     GPIO_InitTypeDef  GPIO_InitStructure;

     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能GPIOB端口时钟

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;               //BEEP-->PB.8 端口配置
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //速度为50MHz
     GPIO_Init(GPIOB, &GPIO_InitStructure);  //根据参数初始化GPIOB.8

     GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出
}
#include "std32f10x.h"  
#include "beep.h" 

int main(void)
{
    delay_init();            //延时函数初始化  
    BEEP_Init();            //初始化蜂鸣器端口
    while(1)
    {
        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
        delay_ms(300);//延时300ms
        GPIO_SetBits(GPIOB,GPIO_Pin_8);   
        delay_ms(300);//延时300ms
    }
}
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值