一、 蜂鸣器简介
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。精英 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 秒左右,符合预期设计。
标签:STM32f103,发声,HAL,PIN,IO,GPIO,蜂鸣器,STM32F1 From: https://www.cnblogs.com/CC-C/p/16944368.html