久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32F1單片機播放wav文件音樂的源程序
[打印本頁]
作者:
mycnxp
時間:
2018-8-8 17:12
標題:
STM32F1單片機播放wav文件音樂的源程序
一個將WAV文件轉(zhuǎn)換成代碼,直接儲存在STM32上并直接播放的程序。親測在STM32F1系列上直接可用,將你的耳機或者功放+喇叭接在B0,就可以聽到美妙的音樂啦。
附件
單片機源程序如下:
#include"typedef.h"
#include"sysinit.h"
#include"wav_fmt.h"
#include"driver.h"
#include<stdio.h>
extern u8 WaveData[];
struct RIFF_BLOCK RiffBlock;
struct FMT_BLOCK FmtBlock;
struct FACT_BLOCK FactBlock;
struct DATA_BLOCK DataBlock;
u32 MusicPosite = 0;
void WavResolve(void);
void SongInfoLCD(void);
int main()
{
RCC_Config();
NVIC_Config();
GPIO_Config();
// LCD1602_Init();
WavResolve();
// SongInfoLCD();
TIMx_Config();
while(1)
{
}
}
void WavResolve(void)
{
/* RIFF WAVE Chunk 內(nèi)容解析 */
RiffBlock.szRiffID[0] = WaveData[MusicPosite++]; // 'R'
RiffBlock.szRiffID[1] = WaveData[MusicPosite++]; // 'I'
RiffBlock.szRiffID[2] = WaveData[MusicPosite++]; // 'F'
RiffBlock.szRiffID[3] = WaveData[MusicPosite++]; // 'F'
RiffBlock.dwRiffSize = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite++] << 24);
RiffBlock.szRiffFormat[0] = WaveData[MusicPosite++]; // 'W'
RiffBlock.szRiffFormat[1] = WaveData[MusicPosite++]; // 'A'
RiffBlock.szRiffFormat[2] = WaveData[MusicPosite++]; // 'V'
RiffBlock.szRiffFormat[3] = WaveData[MusicPosite++]; // 'E'
/* Format Chunk 內(nèi)容解析 */
FmtBlock.szFmtID[0] = WaveData[MusicPosite++]; // 'f'
FmtBlock.szFmtID[1] = WaveData[MusicPosite++]; // 'm'
FmtBlock.szFmtID[2] = WaveData[MusicPosite++]; // 't'
FmtBlock.szFmtID[3] = WaveData[MusicPosite++]; // ' '
FmtBlock.dwFmtSize = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite++] << 24);
FmtBlock.wavFormat.wFormatTag = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8);
FmtBlock.wavFormat.wChannels = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8);
FmtBlock.wavFormat.dwSamplesPerSec = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite++] << 24);
FmtBlock.wavFormat.dwAvgBytesPerSec = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite++] << 24);
FmtBlock.wavFormat.wBlockAlign = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8);
FmtBlock.wavFormat.wBitsPerSample = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8);
if(WaveData[MusicPosite] != 'f')
goto dt;
/* Fact Chunk(optional) 內(nèi)容解析 */
FactBlock.szFactID[0] = WaveData[MusicPosite++]; // 'f'
FactBlock.szFactID[1] = WaveData[MusicPosite++]; // 'a'
FactBlock.szFactID[2] = WaveData[MusicPosite++]; // 'c'
FactBlock.szFactID[3] = WaveData[MusicPosite++]; // 't'
FactBlock.dwFactSize = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite++] << 24);
MusicPosite +=FactBlock.dwFactSize;
/* Data Chunk 內(nèi)容解析 */
dt: DataBlock.szDataID[0] = WaveData[MusicPosite++]; // 'd'
DataBlock.szDataID[1] = WaveData[MusicPosite++]; // 'a'
DataBlock.szDataID[2] = WaveData[MusicPosite++]; // 't'
DataBlock.szDataID[3] = WaveData[MusicPosite++]; // 'a'
DataBlock.dwDataSize = WaveData[MusicPosite++] + (WaveData[MusicPosite++] << 8) +
(WaveData[MusicPosite++] << 16) + (WaveData[MusicPosite] << 24);
}
/*****************************************************************************
*函數(shù)名稱:SongInfoLCD
*功能描述:將歌曲信息顯示在顯示器上
*函數(shù)輸入:
*函數(shù)輸出:
*注意事項:
*****************************************************************************/
void SongInfoLCD(void)
{
lcd_clr_screen();
lcd_set_cursor(0,0);
lcd_printf("Music Freq: %dHz",FmtBlock.wavFormat.dwSamplesPerSec/1000);
lcd_set_cursor(0,1);
lcd_printf("Music Time: %ds",(u8)(DataBlock.dwDataSize/FmtBlock.wavFormat.dwSamplesPerSec));
}
復制代碼
所有資料51hei提供下載:
PWMMusic.rar
(424.61 KB, 下載次數(shù): 145)
2018-8-8 17:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
邰夏留
時間:
2018-11-8 08:04
這個用dac會不會好點呢。不過RB應該沒DAC。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产一级视频在线观看
|
激情视频网址
|
国产欧美日韩视频
|
成人福利网
|
欧美日韩国产中文字幕
|
日韩成人中文字幕
|
亚洲午夜av
|
国产黄色免费
|
亚洲激情视频在线观看
|
色综合天天
|
欧美在线播放视频
|
国产一区二区不卡
|
中文字幕国产视频
|
亚洲精品一区二区三
|
欧美日韩在线不卡
|
国产黄色精品
|
东方成人av
|
在线免费观看av片
|
久久综合亚洲
|
高潮毛片又色又爽免费
|
久草视频观看
|
91久久精品视频
|
黄色特级毛片
|
在线黄网
|
国产香蕉视频
|
国产一级网站
|
日本不卡视频
|
国产不卡视频
|
香蕉福利视频
|
欧美精品一级片
|
51调教丨国产调教视频
|
国产激情久久
|
国产女人18毛片水18精品
|
国产精品视频免费
|
日本一区二区三区免费观看
|
国产97视频
|
一区
|
wwwav在线
|
国产一级视频在线观看
|
黄视频网站在线观看
|
精品国产aⅴ麻豆
|