PWM生成及歌曲实现原理
STM32F407有两类定时器:基础定时器和通用定时器(关于定时器可以看这里)。
通用定时器具有生成PWM波的功能,因此本例中使用通用定时器中的TIM13生成PWM波。
在定时器中时基单元有三种寄存器:计数寄存器(CNT)、 预分频寄存器(PSC)、自动重载寄存器(ARR)。
PWM波生成,通过设置ARR寄存器和CCR寄存器的值,在计数器的值CNT变化过程中,输出PWM波。PWM波的频率由ARR寄存器决定,占空比由CCR寄存器决定。
单片机输出高低不同的脉冲信号来控制蜂鸣器发音,要想产生音频脉冲信号,需要算出某音频的周期(1/频率)关键是每个音阶对应频率的方波如何求.在歌曲中,音调就是PWM波的频率(ARR),音量是其占空比(CCR),节拍通过delay延时函数实现。
f P W M = f 时 钟 频 率 ( P S C + 1 ) ( A R R + 1 ) f_{PWM}=\frac{f_{时钟频率}}{(PSC+1)(ARR+1)} fPWM=(PSC+1)(ARR+1)