STM32精英,战舰版 蜂鸣器播放菊次郎的夏天
@STM32精英,战舰版 蜂鸣器播放菊次郎的夏天
原理
使用TIM32 PA6产生不同频率,占空比为50%的PWM波,连接到beep的PB8脚。不同的频率代表不同的音符。
/* 定义音符表 */ // C调 中央C为do
// 音频变量名 定时器初值 音频率值 音名 #define A 65455 // 110Hz A
#define As 62068 // 116Hz A#
#define B 58536 // 123Hz B
#define c 54961 // 131Hz c
#define cs 52174 // 138Hz c#
#define d 48980 // 147Hz d
#define ds 46452 // 155Hz d#
#define e 43636 // 165Hz e
#define f 41379 // 174Hz f
#define fs 39130 // 184Hz f#
#define g 36735 // 196Hz g
#define gs 34783 // 207Hz g#
#define a 32579 // 221Hz a
#define as 30901 // 233Hz a#
#define b 29032 // 248Hz b
#define c1 27481 // 262Hz c1 (中央C) 1
#define c1s 25993 // 277Hz c1# 升1
#define d1 24573 // 293Hz d1 2
#define d1s 23151 // 311Hz d1# 升2
#define e1 21884 // 329Hz e1 3
#define f1 20630 // 349Hz f1 4
#define f1s 19512 // 369Hz f1# 升4
#define g1 18414 // 391Hz g1 5
#define g1s 17349 // 415Hz g1# 升5
#define a1 16364 // 440Hz a1 (标准音) 6
#define a1s 15451 // 466Hz a1# 升6
#define b1 14604 // 493Hz b1 7
#define c2 13766 // 523Hz c2
#define c2s 12996 // 554Hz c2#
#define d2 12266 // 587Hz d2
#define d2s 11576 // 622Hz d2#
#define e2 10926 // 659Hz e2
#define f2 10315 // 698Hz f2
#define f2s 9743 // 739Hz f2#
#define g2 9195 // 783Hz g2
#define g2s 8674 // 830Hz g2#
#define a2 8182 // 880Hz a2
#define a2s 7725 // 932Hz a2#
#define b2 7295 // 987Hz b2
#define c3 6883 // 1046Hz c3
#define c3s 6498 // 1108Hz c3#
#define d3 6133 // 1174Hz d3
#define d3s 5788 // 1244Hz d3#
#define e3 5463 // 1318Hz e3
#define f3 5157 // 1396Hz f3
#define f3s 4868 // 1479Hz f3#
#define g3 4595 // 1567Hz g3
#define g3s 4335 // 1661Hz g3#
#define a3 4090 // 1760Hz a3
#define a3s 3863 // 1864Hz a3#
#define b3 3646 // 1975Hz b3//定义发声时值
//T*4全音符,T*2二分音符,T四分音符,T/2八分音符,T/4十六分音符
#define T 700uint16_t MusicTab[200][2] = //菊次朗的夏天
{{b1,T/2},{f1,T/2},{b1,T/4},{0,T/4},{f1,T/4},{0,T/4},{g,T/2},{d,T/2},{g,T/4},{0,T/4},{d,T/4},{0,T/4},{a1,T/2},{e,T/2},{a1,T/4},{0,T/4},{e,T/4},{0,T/4},{d,T/2},{a1,T/2},{d,T/4},{0,T/4},{a1,T/4},{0,T/4},{0,T},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4}, {b1,T/2},{f1,T/2},{b1,T/4},{0,T/4},{f1,T/4},{0,T/4},{g,T/2},{d,T/2},{g,T/4},{0,T/4},{d,T/4},{0,T/4},{a1,T/2},{e,T/2},{a1,T/4},{0,T/4},{e,T/4},{0,T/4},{d,T/2},{a1,T/2},{d,T/4},{0,T/4},{a1,T/4},{0,T/4},{e2,T/2},{d2,T/4},{d2,T/2},{d2,T/4},{0,T},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4},{e2,T/2},{d2,T/4},{e2,T/2},{f2,T/2},{f2,T/4}, {f2,T},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4},{b1,T/2},{f1,T/2},{b1,T/4},{0,T/4},{f1,T/4},{0,T/4},{g,T/2},{d,T/2},{g,T/4},{0,T/4},{d,T/4},{0,T/4},{a1,T/2},{e,T/2},{a1,T/4},{0,T/4},{e,T/4},{0,T/4},{d,T/2},{a1,T/2},{d,T/4},{0,T/4},{a1,T/4},{0,T/4},{e2,T/2},{d2,T/4},{d2,T/2},{d2,T/4},{0,T},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4},{e2,T/2},{d2,T/4},{e2,T/2},{f2,T/2},{f2,T/4}, {f2,T},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4},{b1,T/2},{f1,T/2},{b1,T/4},{0,T/4},{f1,T/4},{0,T/4},{g,T/2},{d,T/2},{g,T/4},{0,T/4},{d,T/4},{0,T/4},{a1,T/2},{e,T/2},{a1,T/4},{0,T/4},{e,T/4},{0,T/4},{d,T/2},{a1,T/2},{d,T/4},{0,T/4},{a1,T/4},{0,T/4},{f1,T/2},{f1,T/4},{f1,(T/4)*3},{f1,T/2},{f1,T/2},{b2,T/4},{b2,T/4},{f1,T/4},{d1,T/2},{e1,T},{b2,T/2},{b2,T/4},{b2,T/4},{b2,T/2},{c2,T/4},{0,T/4},{a2,T/4},{d2,T/4},{e2,T/4},{f2,T/4},//结束标志};
在main函数中
每个音符持续的时间MusicTab的第二行,之后要关闭蜂鸣器30ms,防止杂声。
int main(void){delay_init(); //延时函数初始化 LED_Init(); //初始化与LED连接的硬件接口BEEP_Init(); //初始化蜂鸣器端口TIM3_PWM_Init(0xEFA3,11-1);while(1){ if(i<=174) ///174{ if(MusicTab[i][0]!=0){TIM3->ARR=MusicTab[i][0];//计数到归零重新计数TIM_SetCompare1(TIM3,MusicTab[i][0]/2);delay_ms(MusicTab[i][1]);//延时buzzerQuiet();delay_ms(30);TIM_CCxCmd(TIM3,TIM_Channel_1 ,ENABLE);//}else if(MusicTab[i][0]==0){delay_ms(MusicTab[i][1]);//延时buzzerQuiet();delay_ms(30);TIM_CCxCmd(TIM3,TIM_Channel_1 ,ENABLE);//}i++;} else if(i>=174) ///174{i=0;}}}
如果手头有开发板,可以下载一试。
完整链接: 蜂鸣器代码
注意:PA6连接到PB8蜂鸣器
STM32精英,战舰版 蜂鸣器播放菊次郎的夏天相关推荐
- 32蜂鸣器天空之城代码_stm32版蜂鸣器播放爱若琉璃
在小哈公众号上,公众号:嵌入式从0到1,小哈用鸿蒙平台做了个播放爱若琉璃歌曲的文章,写的非常详细,视频做的也非常好,伙伴们可以去看看,哈哈,说了这么多,就是为了抄点素材...鉴于stm32f103c8 ...
- 正点原子STM32精英版LCD实验白屏
最近在咸鱼上买了一块正点原子的STM32精英版,带一个2.8寸的lcd屏幕,然后下载官方的历程测试,但是到lcd实验的时候发现下载样例后屏幕仍然是白色的,这让我很疑惑,于是我直接下载最后一个综合实验, ...
- stm32无源蜂鸣器定时器_STM32无源蜂鸣器播放音乐
1.STM32产生PWM波驱动无源蜂鸣器使其发声 1)查看原理图,找到对应引脚(我这里时PA1) 2)打开CubeMax,输入自己芯片的类型确定后,配置好系统时钟RCC,我这里是80Mhz,找到相应引 ...
- (十)51单片机——利用蜂鸣器播放《孤勇者》(附成果展示)
目录 硬件部分 蜂鸣器介绍 驱动电路 ULN2003 乐理部分 音符 音符与频率对照 代码部分 运行结果 随着最近孤勇者成为小朋友们的接头暗号之后,于是产生了利用单片机去播放孤勇者的想法,接下来我们来 ...
- FPGA蜂鸣器播放音乐
最近做EDA课设,看到自己的买的板子上有蜂鸣器,所以就打算做一个FPGA控制蜂鸣器播放音乐. 这里我使用的板子是睿智助学的FPGA开发板,板子上的芯片是EP4CE6E22C8,如果是你使用的是 ...
- STM32之独立版USB(Host)驱动+MSC+Fatfs移植
源:STM32之独立版USB(Host)驱动+MSC+Fatfs移植 STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序)
- 和平精英要多少Android版本,和平精英外国版
<和平精英外国版>是一款非常好玩的吃鸡竞技类的动作冒险游戏,玩家在实景地图中冒险闯关,自由畅快的进行战斗,体验多样化的玩法.游戏内的道具武器种类丰富,能够给玩家带来最刺激热血的对战体验.喜 ...
- 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法
火线精英手机版登录失败进不去怎么办?火线精英手机版开测以来受到很多喜欢射击游戏的玩家喜爱,但是有玩家表示在游戏中遇到了登录失败进不去的情况,下面小编就为玩家们介绍一下火线精英手机版登录失败进不去的解决 ...
- STM32精英板连接wifi,通过指令控制继电器
STM32精英板连接wifi,通过指令控制继电器 一.连线 我是用的wifi是正点原子官方的,在精英板上有留出wifi接口,直接插入即可 继电器的连接: CH1-连接你设置好的管脚,我设置的是PB5 ...
最新文章
- java 线程相关的属性介绍
- vue实现点击改变颜色
- 中国工业脚轮行业前景展望及营销战略分析报告2021-2027年
- 百度大脑公开课:快速定制、部署高精度深度学习模型!
- 【Java】Java趣味分享:try finally
- c#通过反射移除所有事件
- 百度语义预训练ERNIE实现物流信息抽取任务
- arcmap新手教程_ArcGIS入门教程(1)——ArcMap应用基础
- linux系统——hadoop环境搭建
- javaweb实现pdf预览
- 陈丹琦-我是如何学习计算机编程的
- 阿里云服务器使用宝塔面板管理以及项目部署
- php接入阿里云OOS
- GOTS认证咨询,对于GOTS/GRS标准还需关注其污染物的排放是否符合要求
- Axure与Mockplus的区别
- linux双机连通找不到con1,Linux服务器崩溃 - 错误在反序列化(节点$ CON):错误的连接...
- 软件测试工作面试的74个常见问题
- 强制推到远程git push
- 一级计算机考试计算,全国计算机一级MS OFFICE等级考试计算题(3)
- 2018.11~2019.4马拉松训练计划
热门文章
- Linux | 将文件移动到指定文件夹中
- UOJ#271. 【清华集训2016】连通子树(虚树+倍增)
- python access violation_python – “WindowsError:exception:access violation …” – ctypes问题...
- YOLSO: You Only Look Small Object
- qt飞扬青云 / Qt开发经验
- 人工智能法甲分析报告:揭秘巴黎独霸原因
- android平板投屏,Mac、ipad投屏安卓平板
- Latex数学公式转Word公式
- 微信小程序添加插屏广告
- (第16-17讲)STM32F4单片机,FreeRTOS中断管理简介【视频笔记、代码讲解】【正点原子】【原创】