@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精英,战舰版 蜂鸣器播放菊次郎的夏天相关推荐

  1. 32蜂鸣器天空之城代码_stm32版蜂鸣器播放爱若琉璃

    在小哈公众号上,公众号:嵌入式从0到1,小哈用鸿蒙平台做了个播放爱若琉璃歌曲的文章,写的非常详细,视频做的也非常好,伙伴们可以去看看,哈哈,说了这么多,就是为了抄点素材...鉴于stm32f103c8 ...

  2. 正点原子STM32精英版LCD实验白屏

    最近在咸鱼上买了一块正点原子的STM32精英版,带一个2.8寸的lcd屏幕,然后下载官方的历程测试,但是到lcd实验的时候发现下载样例后屏幕仍然是白色的,这让我很疑惑,于是我直接下载最后一个综合实验, ...

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

    1.STM32产生PWM波驱动无源蜂鸣器使其发声 1)查看原理图,找到对应引脚(我这里时PA1) 2)打开CubeMax,输入自己芯片的类型确定后,配置好系统时钟RCC,我这里是80Mhz,找到相应引 ...

  4. (十)51单片机——利用蜂鸣器播放《孤勇者》(附成果展示)

    目录 硬件部分 蜂鸣器介绍 驱动电路 ULN2003 乐理部分 音符 音符与频率对照 代码部分 运行结果 随着最近孤勇者成为小朋友们的接头暗号之后,于是产生了利用单片机去播放孤勇者的想法,接下来我们来 ...

  5. FPGA蜂鸣器播放音乐

      最近做EDA课设,看到自己的买的板子上有蜂鸣器,所以就打算做一个FPGA控制蜂鸣器播放音乐.   这里我使用的板子是睿智助学的FPGA开发板,板子上的芯片是EP4CE6E22C8,如果是你使用的是 ...

  6. STM32之独立版USB(Host)驱动+MSC+Fatfs移植

    源:STM32之独立版USB(Host)驱动+MSC+Fatfs移植 STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序)

  7. 和平精英要多少Android版本,和平精英外国版

    <和平精英外国版>是一款非常好玩的吃鸡竞技类的动作冒险游戏,玩家在实景地图中冒险闯关,自由畅快的进行战斗,体验多样化的玩法.游戏内的道具武器种类丰富,能够给玩家带来最刺激热血的对战体验.喜 ...

  8. 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法

    火线精英手机版登录失败进不去怎么办?火线精英手机版开测以来受到很多喜欢射击游戏的玩家喜爱,但是有玩家表示在游戏中遇到了登录失败进不去的情况,下面小编就为玩家们介绍一下火线精英手机版登录失败进不去的解决 ...

  9. STM32精英板连接wifi,通过指令控制继电器

    STM32精英板连接wifi,通过指令控制继电器 一.连线 我是用的wifi是正点原子官方的,在精英板上有留出wifi接口,直接插入即可 继电器的连接: CH1-连接你设置好的管脚,我设置的是PB5 ...

最新文章

  1. java 线程相关的属性介绍
  2. vue实现点击改变颜色
  3. 中国工业脚轮行业前景展望及营销战略分析报告2021-2027年
  4. 百度大脑公开课:快速定制、部署高精度深度学习模型!
  5. 【Java】Java趣味分享:try finally
  6. c#通过反射移除所有事件
  7. 百度语义预训练ERNIE实现物流信息抽取任务
  8. arcmap新手教程_ArcGIS入门教程(1)——ArcMap应用基础
  9. linux系统——hadoop环境搭建
  10. javaweb实现pdf预览
  11. 陈丹琦-我是如何学习计算机编程的
  12. 阿里云服务器使用宝塔面板管理以及项目部署
  13. php接入阿里云OOS
  14. GOTS认证咨询,对于GOTS/GRS标准还需关注其污染物的排放是否符合要求
  15. Axure与Mockplus的区别
  16. linux双机连通找不到con1,Linux服务器崩溃 - 错误在反序列化(节点$ CON):错误的连接...
  17. 软件测试工作面试的74个常见问题
  18. 强制推到远程git push
  19. 一级计算机考试计算,全国计算机一级MS OFFICE等级考试计算题(3)
  20. 2018.11~2019.4马拉松训练计划

热门文章

  1. Linux | 将文件移动到指定文件夹中
  2. UOJ#271. 【清华集训2016】连通子树(虚树+倍增)
  3. python access violation_python – “WindowsError:exception:access violation …” – ctypes问题...
  4. YOLSO: You Only Look Small Object
  5. qt飞扬青云 / Qt开发经验
  6. 人工智能法甲分析报告:揭秘巴黎独霸原因
  7. android平板投屏,Mac、ipad投屏安卓平板
  8. Latex数学公式转Word公式
  9. 微信小程序添加插屏广告
  10. (第16-17讲)STM32F4单片机,FreeRTOS中断管理简介【视频笔记、代码讲解】【正点原子】【原创】