STM32F103 PWM驱动无源蜂鸣器演奏乐曲

5星 · 超过95%的资源 需积分: 42 51 下载量 107 浏览量 更新于2024-09-08 6 收藏 155KB DOC 举报
本篇内容主要介绍了如何在STM32F103微控制器上利用通用定时器实现PWM驱动无源蜂鸣器,以模拟乐曲的演奏。作者基于流明LM3SLib_Timer.pdf文档中的例程9和例程10进行了移植,这些例程涉及到了STM32F103的PWM功能,特别适用于交流蜂鸣器,即无源蜂鸣器,它需要接收到一系列方波信号才能发声。 首先,蜂鸣器驱动电路如图1.1所示,该电路设计为EasyARM1138开发板上的蜂鸣器,使用的是交流蜂鸣器,它不包含内置电源,需要外部提供驱动信号。蜂鸣器发声频率与驱动方波的频率一致。 程序清单1.9展示了实际的主函数和相关的库函数。主函数`main()`首先确保JTAG接口不会失效,然后进行时钟初始化,设定系统时钟为6MHz。接着,调用`buzzerInit()`进行蜂鸣器初始化,设置其工作状态。接下来,通过`buzzerSound()`函数发送两个不同频率的声音,1500Hz和2000Hz,以模拟音乐中的音符。每个音符后都有适当的延时,通过`SysCtlDelay()`函数控制,以保持音符间的间隔。最后,当播放完这两个音符后,调用`buzzerQuiet()`使蜂鸣器停止发声,并进入无限循环,等待下一次指令。 `buzzer.h`头文件定义了三个函数原型:`buzzerInit()`用于初始化蜂鸣器,`buzzerSound(unsigned short usFreq)`用于播放指定频率的声音,而`buzzerQuiet()`则用于让蜂鸣器静音。`buzzer.c`文件实现了这些函数的具体操作,包括硬件相关的数据类型声明。 本文提供了使用STM32F103的通用定时器进行PWM控制,实现无源蜂鸣器演奏简单乐曲的方法,展示了如何通过编程来控制蜂鸣器的发声频率、音调和停顿,为初学者和实验者提供了实用的硬件驱动示例。同时,这个案例也体现了微控制器在实际项目中的应用,特别是如何将理论知识转化为实际操作。