STM32f103 蜂鸣器发声

一、 蜂鸣器简介

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
精英 STM32F103 板载的蜂鸣器是电磁式的有源蜂鸣器,如图所示

                                                   

 有源蜂鸣器:自带了震荡电路, 一通电就会发声;
 无源蜂鸣器:没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动, 才能发声。
STM32F1 的单个 IO 最大可以提供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,但是全盘考虑,STM32F1 整个芯片的电流,最大也就 150mA,如果用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用 STM32F1 的 IO 直接驱动 蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样 STM32F1 的 IO 只需要提供不到 1mA 的 电流就足够了。
IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就 越可靠,可能出现的问题也就越少。


三、软件

    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);  //DS0 拉低,亮   
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);  //BEEP 引脚拉低  
    HAL_Delay(300); //延时 300ms
        
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); //DS0 拉高,灭    
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); //BEEP 引脚拉高   
    HAL_Delay(300); //延时 300ms

四、效果

可以看到 DS0 亮的时候蜂鸣器不叫,而 DS0 灭的时候,蜂鸣器叫(因为他们的有效信号相反)。间隔为 0.3 秒左右,符合预期设计。
 

 

posted @ 2022-12-02 14:26  Yoku  阅读(645)  评论(0)    收藏  举报