资源简介
一个将WAV文件转换成代码,直接储存在STM32上并直接播放的程序。亲测在STM32F1系列上直接可用,将你的耳机或者功放+喇叭接在B0,就可以听到美妙的音乐啦。

代码片段和文件信息
#include“typedef.h“
#include“sysinit.h“
#include“wav_fmt.h“
#include“driver.h“
#include
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 内容解析 */
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 内容解析 */
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) 内容解析 */
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 内容解析 */
dt: DataBlock.szDataID[0] = WaveData[MusicPosite++]; //
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 25414 2009-08-02 11:00 PWMMusic\bin\cortexm3_macro.lst
文件 2348 2009-08-02 11:00 PWMMusic\bin\cortexm3_macro.o
文件 132093 2009-08-02 11:00 PWMMusic\bin\drv_lcd1602.crf
文件 1398 2009-08-02 11:00 PWMMusic\bin\drv_lcd1602.d
文件 138432 2009-08-02 11:00 PWMMusic\bin\drv_lcd1602.o
文件 126265 2009-08-02 11:00 PWMMusic\bin\drv_tmrx.crf
文件 1337 2009-08-02 11:00 PWMMusic\bin\drv_tmrx.d
文件 132392 2009-08-02 11:00 PWMMusic\bin\drv_tmrx.o
文件 6993 2009-08-02 11:16 PWMMusic\bin\main.crf
文件 191 2009-08-02 11:16 PWMMusic\bin\main.d
文件 14908 2009-08-02 11:16 PWMMusic\bin\main.o
文件 259540 2009-08-02 11:16 PWMMusic\bin\PWMMusic.axf
文件 295784 2009-08-02 11:16 PWMMusic\bin\PWMMusic.hex
文件 87973 2009-08-02 11:16 PWMMusic\bin\PWMMusic.htm
文件 561 2009-08-02 11:16 PWMMusic\bin\PWMMusic.lnp
文件 75733 2009-08-02 11:16 PWMMusic\bin\PWMMusic.map
文件 14285 2009-08-02 11:16 PWMMusic\bin\PWMMusic.plg
文件 479 2009-08-02 10:53 PWMMusic\bin\PWMMusic.sct
文件 1901 2009-08-02 11:16 PWMMusic\bin\PWMMusic.tra
文件 31925 2009-08-02 11:00 PWMMusic\bin\STM32F10x.lst
文件 4816 2009-08-02 11:00 PWMMusic\bin\STM32F10x.o
文件 30017 2009-08-02 11:00 PWMMusic\bin\stm32f10x_flash.crf
文件 341 2009-08-02 11:00 PWMMusic\bin\stm32f10x_flash.d
文件 37860 2009-08-02 11:00 PWMMusic\bin\stm32f10x_flash.o
文件 35060 2009-08-02 11:00 PWMMusic\bin\stm32f10x_gpio.crf
文件 388 2009-08-02 11:00 PWMMusic\bin\stm32f10x_gpio.d
文件 43284 2009-08-02 11:00 PWMMusic\bin\stm32f10x_gpio.o
文件 127396 2009-08-02 11:00 PWMMusic\bin\stm32f10x_it.crf
文件 1410 2009-08-02 11:00 PWMMusic\bin\stm32f10x_it.d
文件 139996 2009-08-02 11:00 PWMMusic\bin\stm32f10x_it.o
............此处省略110个文件信息
- 上一篇:生鲜管理系统
- 下一篇:尚硅谷]_宋红康_4天贯通JDBC
相关资源
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- 51单片机PWM程序,占空比、周期可调整
- 信号估计DOAmusicespritcapon
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- SG3525频率PWM控制均可调模块
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- 现代谱估计算法 music ESPRIT 谐波分解
- MUSIC算法c 实现
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
评论
共有 条评论