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 秒左右,符合预期设计。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」