- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于 STM32 的 PWM 音乐播放器应用设计
在科研项目开发中,有时会遇到需要播放电话铃声、音乐等情况。简单
的做法是购买专用音乐芯片,但该方法的缺点是播放的内容不可变,不能很好
地满足项目需求。一般地,可采用 89C51 等单片机实现音乐播放,其播放内容
及歌曲数量都可以随时修改,使用上相对方便。随着 STM32 系列微处理器的
出现,其基于 ARM Cortex—M 内核的 32 位闪存微控制器,高达 72 MHz 的主
频,高集成度、实时性、数字信号处理、低功耗、低电压操作等众多特点,使
得其应用越来越广泛。本文基于 STM32 处理器,根据乐曲简谱制作供程序识
别的乐谱,并利用内部定时器产生 PWM 输出信号,驱动蜂鸣器完成自定义乐
谱的播放。经测试,播放效果良好。1 乐谱简析 1.1 音阶 音阶是音乐必不可
少的要素,主要由声音的频率决定。通过给蜂鸣器不同频率的音频脉冲,可以
产生不同的音阶,而要产生某频率的音频脉冲,最简单的办法是算出该音频的
周期,然后将此周期除以 2 即为半周期的时间。通过程序控制单片机某引脚半
周期为“高”、半周期为“低”,不断交替变换,即可产生该频率的矩形波,接到
蜂鸣器上就可发出该频率的声音。若想改变音阶,只需要改变半周期时间即可。
表 1 为 C 调时音符频率对照表,据此可产生不同音阶的音符。“#”表示半音,用
于上升或下降半个音,乘以 2 就提升该声音一个 8 度音阶,减半则降一个 8 度。
?1.2 节拍 若要构成音乐,光有音阶是不够的,还需要节拍,也就是音符持
续时间的长短,一般用拍数表示。至于 1 拍是多少秒,没有严格的规定,只要
节拍适宜,声音悦耳即可。假如某首歌曲的节奏是每分钟 120 拍,那么 1 拍为
0.5 s,1/4 拍为 0.125 s,以此类推可得到其他节拍对应的时长。这样,利
用不同的频率,加上与拍数对应的延时,就构成了乐曲。2 STM32 中的定时器
音阶的产生与声音频率有关,为了实现不同音阶,必须能为蜂鸣器提供不同频
率的脉冲。为此,选择 STM32 芯片,利用其自带的定时器,通过 PWM 产生
脉冲信号。STM32 中一共有 11 个定时器,包含 2 个高级控制定时器、4 个普
通定时器、2 个基本定时器,以及 2 个看门狗定时器和 1 个系统滴答定时器
SysTiek。其中,TIM1 和 TIM8 是高级定时器,时钟由 APB2 的输出产生。
TIM2~TIM5 是普通定时器,TIM6 和 TIM7 是基本定时器,这 6 个定时器的时
钟由 APB1 的输出产生。2.1 定时时长的计算 定时器的一个主要功能就是到
指定时间就会产生一个溢出事件,这个时间的设置与定时器时钟有关,在定时
器时钟基础上进行预分频,设置计数溢出大小即可。tips:感谢大家的阅读,本
文由我司收集整编。仅供参阅!
文档评论(0)