蜂鸣器的实现与led差不多,只需要写出蜂鸣器初始化函数和发声函数,然后在main函数里加入他们即可。
下面是main.c里的函数

#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
int main (void)
{u16 a;RCC_Configuration();//RCC时钟类的设置LED_Init ();//led初始化KEY_Init ();//按键初始化buzzer_int();//蜂鸣器初始化BUZZER_beep();//响声while(1){if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){delay_ms(20); //防抖if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){a++;if(a>3){a=0;}GPIO_Write(LEDPORT,a);BUZZER_beep();while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); }}}
}

下面是初始化和发声函数

void buzzer_int(void)
{GPIO_InitTypeDef  GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=BUZZER;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(BUZZERPORT,&GPIO_InitStructure);GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1));
}
void BUZZER_beep(void)
{u16 i;for(i=0;i<200;i++){GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0));delay_us(500);GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1));delay_us(500);}
}

值得注意的是,蜂鸣器不能总是处在低电平,否则容易烧坏,故在写程序时,最后一定要把IO口的电平置高。
如果想播放音乐的话,就要对照音调与频率的关系表,建立一个数组,然后用循环语句将歌曲输出出来,里面涉及到几个数学公式。

void MIDI_PLAY(void) //MIDI音乐
{                        u16 i,e;for(i=0;i<39;i++){for(e=0;e<music1[i*2]*music1[i*2+1]/1000;e++){GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //蜂鸣器接口输出0delay_us(500000/music1[i*2]); //延时  GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器接口输出高电平1delay_us(500000/music1[i*2]); //延时 } }
}

其中music1[]数组中奇数位是频率,偶数位是时间。i<39的意思是有39组音符,所以循环39次,将你所想要播放的音乐数组和MIDI_PLAY();函数写在buzzer.c文件中,在buzzer.h文件中声明void MIDI_PLAY(void);,然后在主函数文件中使用这个函数就行了,如果把它放在while循环里,就会一直循环播放。通过更改音乐数组与循环次数,可以播放不同的音乐!

STM32蜂鸣器andMIDI音乐相关推荐

  1. STM32蜂鸣器播放音乐实例项目 【评论区留言领取项目资料】

    本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE. 实验效果 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是声音频率固定. 无源蜂鸣器 内部不含振荡源,蜂鸣器 ...

  2. FPGA蜂鸣器播放音乐

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

  3. 基于STM32制作的音乐播放器,用PWM控制蜂鸣器

    目录 效果展示 前言 一.设计背景 1.1.知识储备 二.系统设计方案 2.1.实现功能 2.2.硬件部分 2.3.软件部分 三.软件设计 3.1.设计流程图 3.2.音乐频率的设置 3.3.编程主要 ...

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

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

  5. 蜂鸣器播放音乐 fpga实现

    目录 原理 实现 原理 蜂鸣器分为有源蜂鸣器和无源蜂鸣器,即以有无震荡源分类, 有震荡源直接通直流电就可发生,无震荡源则需要通震荡波才能发声. 这里介绍无源蜂鸣器播放音乐的方法. 思路: 利用计数器产 ...

  6. 【FPGA】五、蜂鸣器播放音乐

    文章目录 前言 一.蜂鸣器简介 二.音频音符简介 三.任务要求 四.程序设计 1.设计思路 2.程序代码 总结 前言 蜂鸣器(Buzzer)是现代常用的一种电子发声器,主要用于产生声音信号.它是一种一 ...

  7. 单片机并行口控制蜂鸣器播放音乐

    要用单片机并行口控制蜂鸣器播放音乐,需要完成以下步骤: 设计音乐:需要先确定音乐的节拍和音符,并将其转换为代码中的数值. 设置并行口:需要将单片机的并行口配置为输出模式,以便控制蜂鸣器. 编写代码:需 ...

  8. 基于STM32的电子琴音乐播放器设计

    基于STM32的电子琴/音乐播放器设计 文章目录 基于STM32的电子琴/音乐播放器设计 @[toc] 引言 第一章 总体设计 1.1 系统功能 1.2 主要技术性能指标 第二章 系统设计 2.1 系 ...

  9. arduino+无源蜂鸣器制作音乐(引入篇)——从结构到原理

    前言 之前在网上看到好多关于用单片机+无源蜂鸣器制作音乐的视频,就挺有意思的,自己就在网上买了一个KC-1206的无源电磁蜂鸣器.今天来跟大家分享一下! 蜂鸣器分为两种:无源蜂鸣器和有源蜂鸣器[a)是 ...

最新文章

  1. Jenkins + sonarqube集成实现发布代码审计
  2. @transaction 提交事务_分布式事务 TCC-Transaction 源码分析——TCC 实现
  3. Page类的IsPostBack原理
  4. ihtml2document能不能根据id获取dom_回到基础:什么是DOM及DOM操作?
  5. RXThink 官方网站正式上线
  6. 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)
  7. python for selenium 数据驱动测试
  8. visio 形状_分享我Visio经验(问题从来都不是问题)
  9. 为什么使用Binder而不是其他IPC机制
  10. ORACLE数据加载加本,使用oracle sqlldr加载数据
  11. cls_template.php on line 1072,博客 – 联发多彩网页技术博客
  12. Mysql (21)---连接的使用
  13. GridView 中 DataFormatString 的使用
  14. python通讯录文件读取_python通用读取vcf文件的类(可以直接复制粘贴使用)
  15. Solr 原理、API 使用
  16. socket(java) 搭建一个多人在线聊天室
  17. Laravel 之搜索引擎elasticsearch扩展Scout
  18. 企业信息化建设中流程梳理的步骤及方法
  19. 网工行业里的多面手,数据通信工程师2022年最新系统学习路线整理
  20. linux内核ppt刘小明,【陈老师华为北研所讲座PPT】从机制与策略探究Linux内核设计之道(4)...

热门文章

  1. 细说;(function ($, undefined){ })(jQuery); 的使用
  2. 白话理解java多线程之setDaemon()方法
  3. Android Animator(Android动画)
  4. 戴尔OptiPlex 7060 SSD+HHD+win10和ubuntu双系统安装
  5. CSP拼图问题--矩阵快速幂
  6. 通过evel将字符串作为函数执行函数
  7. 调试基恩士KV-H20S定位模块记录
  8. DailyFi - 9.20|NFT 平台 Vera 将于明日在 Polkastarter 上 IDO
  9. 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
  10. vue v-for循环改变循环数据视图不更新