凡亿教育-苏苏
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | stm32版蜂鸣器播放爱若琉璃
stm32版蜂鸣器播放爱若琉璃

      在小哈公众号上,公众号:嵌入式从0到1,小哈用鸿蒙平台做了个播放爱若琉璃歌曲的文章,写的非常详细,视频做的也非常好,伙伴们可以去看看,哈哈,说了这么多,就是为了抄点素材。。。鉴于stm32f103c8t6(便宜好用)平台应该是比较普遍的了,做个32版本的,嘿嘿 这次废话有点多,上干货!

1、音乐的音调(音符)和节拍(摘自小哈公众号) 要想实现一个乐谱,我们只要确定“音符(音调)”和“节拍”即可。音调表示一个音符响的频率,节拍表示一个音符该唱多长的时间。


音符(音调)的确定一般钢琴键盘有88个按键:

ba41fbe406a1df05fe925cc8afd106.jpg

钢琴上88按键的频率如下表所示:

740d82429230285d07d25c30e7915e.jpg 比如中央C音的标准频率就是261,在上面表格中就是:音名为C4的按键。程序中定义一个音频的数组:

925ed24cc59b0c847f4afc816c72cd.jpg

在系统时钟为40MHZ的情况下,输出的脉冲的最低频率为:40M / 65535 (下面有计算方法) ,即 40 * 1000 * 1000 / 65535 = 610.3608758678569‬,所以在系统时钟40MHZ下,只能产生频率610Hz以上的音,即D#5及以上的按键音,所以我们选择C6那组按键的音作为主音。所以我们预定义正常音的C6对应数组的起始索引为63。

166ae0f07fd8d188e3958f6449c7ea.jpg


要想让蜂鸣器发出某个音只需要让PWM输出对应频率的脉冲即可。网上找个《爱若琉璃》的简谱,然后按照对应关系创建如下乐谱数组:

df23988b53fef80a7e28983db84984.jpg

节拍的确定节拍就是一个音持续的时间,这里就是PWM脉冲持续的时间,那么持续的时间如何确定呢?

a320386ffde2baac5c99bb4253d578.jpg

基础知识算是写完(抄完)了,那么怎么在程序上实现呢,王者荣耀达摩常说的,公式才是永恒的真理,现在理论有了,来,实现它,干!
         2、此次使用的可视化配置工具cubemx,不得不说,基本的配置,用这玩意还是非常省事(懒)的,由于我的蜂鸣器控制引脚接在了PB3上,也即是TIM2-CH2的通道上,配置PB3为TIM2-CH2模式

77815ba1a5ca232aa0562c5283661b.jpg

接下来是最重要的时钟配置,宛若人的心脏般,芯片工作的基本,这里选择的也是配置为了40MHZ,为什么是40MHZ,懒!配置40MHZ剩下的就直接搬运小哈的,无非是换个平台啦。

7aa787b4b30b26694d36d63d3dbd19.jpg

然后配置定时器2的一些参数,和通道2配置为PWM模式,分频系数选择不分频,周期设为0,这里只是初始值,即使设置了,也没关系的,后面播放音符的时候,会修改的咯,所以这个不用担心具体设置什么值

1b27d7e2d2c045bba4cbcd35c5e791.jpg

这里可以设置我们代码生成时候的一些设置,第一项是只添加需要的文件,用到哪些库文件添加那些,我们可以选择用到的文件添加,第二处是为每个模块生成单独的.c,.h文件,建议勾选,否则所有的东西都在main函数里面,代码可读性会比较差,小飞哥是经常勾选的。

1b53d98fbb813e0d1db7206f2da76f.jpg

3、代码解读

至此我们的配置就完成了,生成代码就可以啦!TIM2的初始化配置,和我们cubemx配置上一样的咯,不分频,周期为0,占空比为0,这些参数后面会用到,在进行修改

9b49c5d914374eea61e75a5735b7c9.jpg

这里可以看到,配置PB3引脚复用功能

248087a9e6ed2bc32a4a862b0c3288.jpg

  在播放音乐的时候,我们主要通过不断修改频率来实现,PWM占空比设置为50%,占空比通过设置CCR寄存器的值来控制

PWM频率计算:

Fpwm=Ftimclk/(arr 1)*(psc 1)

arr:周期

psc:预分频值

比如:

Ftimclk = 40MHZ

arr=399

psc=0

Fpwm = 40/40=100000HZ

TIM2->CCR2 = 199

占空比为50%

代码实现:

706328c77624f94d97bfee3fc04c03.jpg


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论