资源简介
一个将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
相关资源
- STM32-PWM输出源码
- STM32F429 USB HID
- 2019电赛舵机云台控制代码.zip
- STM32 OLED显程
- 基于stm32的数字示波器c程序绝对完整
- FreeModbus--RTU--Master+Slave--uCOSIII--STM32F
- 基于STM32F4的小兵与大炮游戏
- keil.Jansson.1.0.0.pack
- OLED驱动STM32
- stm32 5路循迹智能小车资料,可遥控
- STM32F103VET6驱动HC-SR04.rar
- 旋钮编码器STM32F407
- stm32 407ad7606 程序开fa
- 基于STM32的简易脉搏计的设计
- AS608指纹模块和ESP8266wifi模块在STM32f
- STM32 RFID RC522 模拟SPI 读写卡程序
- stm32单片机实现心电图采样以及显示
- 基于stm32的hmc5983和mpu6500的驱动程序
- STM32F091多串口程序
- 通过串口控制呼吸灯的频率
- STM32快递箱程序密码界面+舵机开锁+称
-
stm32 keil用jli
nk4.40驱动 - stm32f103 编码器测试程序
- ADF4351控制代码
- stm32 42相步进电机驱动完整工程
- 基于stm32f103和OV7725的监控拍照计数显
- STM32F103步进电机、压力传感器、温湿
- STM32F1控制六自由度机器人 程序源码,
- 基于stm32的仿生机械手程序-基础
- STM32F103 驱动四路MAX6675 采集温度 LC
评论
共有 条评论