600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 嵌入式(stm32)学习之路---MIDI音乐播放器

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

时间:2022-08-18 16:36:13

相关推荐

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

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音乐

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。