基于STM32F103,用蜂鸣器播放歌曲

您所在的位置:网站首页 放一首儿歌来听歌词 基于STM32F103,用蜂鸣器播放歌曲

基于STM32F103,用蜂鸣器播放歌曲

#基于STM32F103,用蜂鸣器播放歌曲| 来源: 网络整理| 查看: 265

本文的内容,分为下面几部分:

1,参考网上例程;

2,移植,运行,查看,尽力理解代码; 3,调整测试参数; 4,添加一首歌曲。         

下面详细描述一下过程:

一,参考网上例程

主要参考的是这一篇《使用STM32F103控制蜂鸣器发声播放音乐》,地址如下:使用STM32F103控制蜂鸣器发声播放音乐_blue@sky的博客-CSDN博客_stm32蜂鸣器音乐代码 看起来代码比较简洁,就两个文件,就开始移植到自己的板子上。

二,移植,运行,查看代码,尽力理解代码

说明一下,我使用的芯片类型是stm32F103C8,集成开发环境用的是Keil5 MDK-ARM,仿真器使用JLINK。 查看板子上的蜂鸣器接口,相应修改下代码中的引脚。这个和硬件相关,每个人只能根据自己的硬件来调整。 然后是将这个引脚配置成推挽输出,默认是低电平,输出高电平可以驱动蜂鸣器响报警。 然后是开关的操作,Buzzer_On(),Buzzer_Off()来替换; 然后就开始运行,能听到蜂鸣声响,但是刺刺啦啦的,不像音乐。 没有办法,偷懒不行啦,就只好开始看程序了,尽力去理解代码。毕竟代码在手,任我蹂躏,哈哈! 大体理解了一遍程序,调整了几个延时相关的值,发现效果有所好转,比较像音乐了。 但是,到底对不对,对于例程中的歌曲《红尘情歌》,我没听过啊,比较不出来对不对,好不好。 如果能添加一首自己熟悉的歌曲,就能判断了。不过,先别着急,慢慢来。先来个最简单的,就是先听听“多瑞咪”吧。

    u8 music[]={13,1,2,3,4,5,6,7,8};//音调 测试基础音     u8 time[] ={4, 4,4,4,4,4,4,4,4};//持续时长

例子中,歌曲由两个数组来表示,一个是音调,一个是这个音调的持续时长。 音调数组music[],里面的数字看起来就是123,与曲谱上的一样,它是怎么实现那个声音的呢? 看代码,是这么调用的:   

 tone[music[i]]

也就是说,是把它作为索引传给了tone[]数组,而tone[]的定义如下:    

// 低7 1 2 3 4 5 6 7 高1 高2 高3 高4 高5 不发音 uc16 tone[] = {247,262,294,330,349,392,440,294,523,587,659,698,784,1000};//音频数据表

这个数组中的数值,又有什么用呢? 注释说是音频数据。根据蜂鸣器的原理,就是输出不同频率的PWM波,即可发出不同的声音(音符)。然后将不同的音符组合起来就是一个曲子。所以这里的数据应该是用于控制蜂鸣器的发声频率的。 看看调用的地方:

        for(e=0;e


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3