stm32无源蜂鸣器定时器_STM32单片机实现无源蜂鸣器产生音乐声的设计

使用有源蜂鸣器,只能发出固定的”滴滴“声,当然不能满足于此呀。使用无源蜂鸣器,只要输出不同频率的PWM波,即可发出不同的音符。不同的音符组合起来就是一个曲子了。1 乐谱简析1.1 音阶音阶是音乐必不可少的要素,主要由声音的频率决定。通过给蜂鸣器不同频率的音频脉冲,可以产生不同的音阶,而要产生某频率的音频脉冲,最简单的办法是算出该音频的周期,然后将此周期除以2即为半周期的时间。通过程序控制单片机某引...
摘要由CSDN通过智能技术生成

使用有源蜂鸣器,只能发出固定的”滴滴“声,当然不能满足于此呀。使用无源蜂鸣器,只要输出不同频率的PWM波,即可发出不同的音符。不同的音符组合起来就是一个曲子了。

1 乐谱简析

1.1 音阶

音阶是音乐必不可少的要素,主要由声音的频率决定。通过给蜂鸣器不同频率的音频脉冲,可以产生不同的音阶,而要产生某频率的音频脉冲,最简单的办法是算出该音频的周期,然后将此周期除以2即为半周期的时间。通过程序控制单片机某引脚半周期为“高”、半周期为“低”,不断交替变换,即可产生该频率的矩形波,接到蜂鸣器上就可发出该频率的声音。若想改变音阶,只需要改变半周期时间即可。下表为各音调音符频率对照表,据此可产生不同音阶的音符。“#”表示半音,用于上升或下降半个音,乘以2就提升该声音一个8度音阶,减半则降一个8度。

1.2 节拍

若要构成音乐,光有音阶是不够的,还需要节拍,也就是音符持续时间的长短,一般用拍数表示。至于1拍是多少秒,没有严格的规定,只要节拍适宜,声音悦耳即可。假如某首歌曲的节奏是每分钟120拍,那么1拍为0.5 s,1/4拍为0.125 s,以此类推可得到其他节拍对应的时长。这样,利用不同的频率,加上与拍数对应的延时,就构成了乐曲。

音阶的产生与声音频率有关,为了实现不同音阶,必须能为蜂鸣器提供不同频率的脉冲。为此,选择STM32芯片,利用其自带的定时器,通过PWM产生脉冲信号。STM32中一共有11个定时器,包含2个高级控制定时器、4个普通定时器、2个基本定时器,以及2个看门狗定时器和1个系统滴答定时器SysTiek。其中,TIM1和TIM8是高级定时器,时钟由APB2的输出产生。TIM2~TIM5是普通定时器,TIM6和TIM7是基本定时器,这6个定时器的时钟由APB1的输出产生。

2.1 定时时长的计算

定时器的一个主要功能就是到指定时间就会产生一个溢出事件,这个时间的设置与定时器时钟有关,在定时器时钟基础上进行预分频,设置计数溢出大小即可。

2.1.1 系统时钟设置

要保证定时的准确性,必须先确保系统时钟的设置是我们所预期的。定时器时钟分配可查看数据手册。通过编程使SYSCLK为72 MHz,APB1预分频后得到PCLK1为36 MHz,再经TIM2&#

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值