无缘蜂鸣器——stm32定时器PWM实现控制发出“哆瑞咪发…“七个音及简单音乐

一、有缘蜂鸣器和无缘蜂鸣器

所谓的有源蜂鸣器是指蜂鸣器内部内置振荡电路,一通电就能响。但发生频率固定,音色单一;无源蜂鸣器内部不含振荡源,内部结构相当于电磁场扬声器,可以通过给他输出一定频率的信号才能发声。人耳能听到的频率范围在20Hz–20kHz之间,通过STM32的GPIO引脚快速切换高低电平输出就能实现无源蜂鸣器的发声,切换的频率不同,发出的音调就不一样。需要外部提供2~5khz左右的方波。

二、"哆瑞咪发…"的实现

每个音节都有不用的频率可以发出不同的声音

//Do Re Mi Fa So La Si

无缘蜂鸣器——stm32定时器PWM实现控制发出“哆瑞咪发…“七个音及简单音乐_第1张图片

根据 f=72MHZ/[(arr+1)(psc+1)]公式(频率确定后,再通过寄存器TIMX->CCRY寄存器来确定通道Y的占空比。计数器向上计数时,当计数器的值比CCR寄存器值小时输出低电平,比它大时就输出高电平,高电平占总周期的时间就是占空比。)来实现发出不同的音调。

三、程序

1.timer.c

1.1//通用定时器3中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!

void TIM3_Int_Init(u16 arr,u16 psc)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBas

你可能感兴趣的:(stm32,单片机,arm)