STM32用蜂鸣器播放MIDI音乐(可以基于这个基础上开发简单电子琴/魔音盒),经典程序代码,程序代码注释简明,易懂,便于移植开发。

无源蜂呜器引脚定义
#define BUZZERPORT GPIOB—GPIOB口宏定义
#define BUZZER GPIO_Pin_5—具体PIN脚宏定义
void BUZZER_Init(void);—函数声明
void BUZZER_BEEP1(void);—函数声明

无源蜂呜器初始化定义
void BUZZER_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;—声明函数结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);—打开GPIOA|GPIOB高速时钟
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);—将定义引脚功能写入函数结构体
}

一段音乐就是不同频率的声音按一定的时间节拍转换发出。所以音乐包含音调和节拍信息。
uc16 music1[78]={ //音乐1的数据表(奇数是音调,偶数是节拍长度)
330,750,
440,375,
494,375,
523,750,
587,375,
659,375,
587,750,
494,375,
392,375,
440,1500,
330,750,
440,375,
494,375,
523,750,
587,375,
659,375,
587,750,
494,375,
392,375,
784,1500,
659,750,
698,375,
784,375,
880,750,
784,375,
698,375,
659,750,
587,750,
659,750,
523,375,
494,375,
440,750,
440,375,
494,375,
523,750,
523,750,
494,750,
392,750,
440,3000
};
void MIDI_PLAY(void)—MIDI音乐控制程序
{
u16 a,b;
for(a=0;a<39;a++)—共39个音符
{
for(b=0;b<music1[a2]music1[a2+1]/1000;b++)—每个音符节拍时间长度
{
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0));
delay_us(500000/music1[a2]);—每0.5S音调(蜂鸣器打开频率次数)
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1));
delay_us(500000/music1[a*2]);—每0.5S音调(蜂鸣器关闭频率次数)
}
}
}

主程序调用无源蜂呜器发声程序
int main (void)
{
{
MIDI_PLAY();—无限循环播放MIDI音乐
}
}

嵌入式(stm32)学习之路---MIDI音乐播放器相关推荐

  1. Android学习之路4——音乐播放器后台播放

    Android学习之路4--音乐播放器后台播放 一.实验题目 简单音乐播放器 二.实现内容 实现一个简单的播放器,要求功能有: 播放.暂停.停止.退出功能,按停止键会重置封面转角,进度条和播放按钮:按 ...

  2. 嵌入式(stm32)学习之路---无源蜂呜器

    无源蜂呜器引脚定义 #define BUZZERPORT GPIOB-GPIOB口宏定义 #define BUZZER GPIO_Pin_5-具体PIN脚宏定义 void BUZZER_Init(vo ...

  3. C#学习 winform实现简单音乐播放器

    C#学习 winform实现简单音乐播放器 窗体设计 代码实现 using System; using System.Collections.Generic; using System.Compone ...

  4. 安卓学习期末大作业——音乐播放器基础功能

    步骤 系列文章 前言 1.实现效果 2.关于自动切到后台 3.给予权限访问本地音乐,如果本地指定文件夹没有音乐会无法运行 4.注意配置jdk11 下载资源 总结 系列文章 提示:转到安卓学习专栏,观看 ...

  5. Python基础学习项目之 简单音乐播放器

    项目简要 歌词解析 界面设计 音乐播放 数据抓取 项目整合 歌词解析 播放器中显示的歌词从什么地方来? LRC歌词标签结构: [] 为一个歌词标签 标签内的格式分两种 一种为标签值类型如: [ti:阿 ...

  6. DIY一个自己的音乐播放器

    前言:在最近的一个外包项目中包联盟(PC端)中使用到了video,遇到了好多坑.突发奇想来踩一踩audio的坑?,果然一入深似海,?下面将分享我的DIY之路-Vue音乐播放器. 注:本项目为开源项目, ...

  7. STM32之音乐播放器

    STM32之音乐播放器 1.硬件平台 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 音频解码器: VS1053 SD卡.外扩Sram 2.示例效果 3.软件设计   VS1053b 是 ...

  8. [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计【2018年给力项目】

    [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计[2018年给力项目]是[创科之龙]团队aiku嵌入式视频教程系列制作的现有的音乐播放器. 主要功能实现: 1.新建工程,基类选 ...

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

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

最新文章

  1. 模拟和存根有什么区别?
  2. ci github 通知_初探CI,Github调戏Action手记——自动构建并发布
  3. WCF获取客户端IP和端口
  4. 数组排序(选择排序和冒泡排序)
  5. 6000字说透,如何做好产品「适老化」!
  6. UE3 Lightmass 技术指南
  7. python中yield的使用_python中yield的用法详解-转载
  8. 【干货】js判断url是否是合法http/https
  9. houdini 渲染wireframe
  10. acegis连接使用方法_铝型材配件间隔连接块的分类与使用方法
  11. python 判断是否有某个属性_用Python怎么判断是否闰年?
  12. ios android c跨平台,Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)...
  13. 【软件安装管家】Axure RP 8软件安装包下载地址及安装教程
  14. android手机更改手机密码,重要提醒:手机这个密码一定要改!
  15. 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶
  16. 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试了Test,进行测试
  17. 如何在 Mac 上录制屏幕?mac录屏教程分享
  18. 歌曲背後真實的故事 (看完这个故事我流泪了~~~)
  19. 简单聊聊HDFS RBF第二阶段工作近期的一些进展
  20. 尚医通项目学习笔记Part1

热门文章

  1. 广州互联网公司和生活成本
  2. 数据分析 — 用户粘性的两个计算指标(DAU/MAU和月人均活跃天数)
  3. 关于樱桃键盘锁定alt键和win键这件事
  4. windows下设置GPU加速tensorflow运算(GT940M)
  5. 发现一个好办法-有问题可以到UNITY论坛搜索
  6. 2022图灵奖出炉!以太网之父鲍勃·梅特卡夫获奖,76岁进入新领域再出发
  7. [Pytorch 常用函数] 激活函数Relu, Leaky Relu
  8. 程序的灵活性与可扩展性
  9. Vera++ 默认Rules文件功能解读
  10. 俄勒冈大学计算机科学专业,俄勒冈大学计算机与信息科学详解 热门专业不容错过...