stm32无源蜂鸣器定时器_STM32无源蜂鸣器播放音乐

本文介绍了如何使用STM32通过定时器产生PWM波驱动无源蜂鸣器发声,并详细讲解了音乐播放的原理,包括不同频率的PWM波构成音调,不同持续时间形成节拍。还分享了音乐文件的制作方法,以及如何用STM32蜂鸣器播放生日快乐歌的示例代码。
摘要由CSDN通过智能技术生成

1.STM32产生PWM波驱动无源蜂鸣器使其发声

1)查看原理图,找到对应引脚(我这里时PA1)

2)打开CubeMax,输入自己芯片的类型确定后,配置好系统时钟RCC,我这里是80Mhz,找到相应引脚PA1设置为GPIO_Output模式(用来切换引脚状态,使蜂鸣器发声),

3)设置定时器我这里用TM2

2.音乐播放原理

原理:给无源蜂鸣器输入不同频率的PWM波(构成不同音调)  让PWM波持续不同长度的时间(构成节拍)

3.音乐文件制作(播放自己喜欢的音乐)

(1)1=F,表示这首曲子是F调的。

3/4,是表示这首曲子是34拍。

(2)音符下面有一条横线,这个表示的是节拍。

下面没有线的音符,叫做四分音符,也就是一拍,如果用数组来表示节拍时一般用4来表示一拍(当然可根据自己喜好来定)

下面有一根横线的音符,叫八分音符,是半拍,如果用数组来表示节拍时一般用2来表示半拍(当然可根据自己喜好来定)

(3)音符上面有一个点。上面有点的是高音,下面有点的是低音,没有点的是中音。(对应的音区,我们称之为低音区,中音区,高音区,看图更易懂)

(4)音符后面有一根短横线。这个叫做延音线,意思就是唱到这里得拖长音。

延音线在节拍数组中一般省略不写

(5)0。叫做休止符,就是停顿不唱,等待下一段

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现STM32无源蜂鸣器发声,可以使用定时器来产生PWM波形,从而控制蜂鸣器的震动频率和音量。 以下是一个简单的示例代码,使用TIM3定时器产生PWM波形,并将其输出到GPIOB的PB0引脚上,从而驱动无源蜂鸣器发声: ``` #include "stm32f10x.h" void TIM3_PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseInitStructure.TIM_Period = 999; // PWM频率 = 72M / 1000 = 72KHz TIM_TimeBaseInitStructure.TIM_Prescaler = 71; // 定时器分频 = 72M / (71+1) = 1MHz TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; // PWM占空比 = 50% TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_Cmd(TIM3, ENABLE); } int main(void) { TIM3_PWM_Init(); while(1) { // 在这里可以修改PWM占空比和延时时间,从而改变蜂鸣器的音量和频率 TIM_SetCompare3(TIM3, 500); // 占空比为50% Delay(1000); // 延时1秒 TIM_SetCompare3(TIM3, 0); // 占空比为0% Delay(1000); // 延时1秒 } } ``` 在上面的示例中,我们使用TIM3定时器产生PWM波形,频率为72KHz,占空比为50%。在main函数中,我们不断地修改PWM占空比和延时时间,从而控制蜂鸣器的音量和频率。 你可以根据需要修改占空比和延时时间,从而产生不同的音调和节奏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值