下面我们一wav头文件来分析一下:

下面是双声道的,16位,48000采样录的wav文件:

打开属性,能看到的有用信息只有比特率了:

上图的比特率就是

wav头文件里的bitrate:

1536kbps=量化采样点*位深*声道数

这个比特率是按照 '位' 来算的,,, * 2  :每秒内消耗多少位

用GoldWave软件打开,滑动滚轮进行放大:

200us总共输出了20个数据,,但是每个数据是16位(因为消耗两个8位得到的数据)

这20个数据是由40个8位的音频数据组成的.

200us消耗了40个数据

20us消耗4个数据

消耗4个数据就是完成一个 '音' 单元的播放  一个音,也就是图中的一个阶梯

所以产生一个 '音' 需要20us  [也就是 一个音对应一个中断,当产生一个中断的时候,让两个DAC分别播放出去一个阶梯]

1秒产生500 000 个约等于480 000个 '音'   :频率是根据 '音' 的设置,,一个 '音' 可能等于好几个音频数据

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

实际上这个音频的定时器是这样设置的

通过仿真得到:

转换成十进制  48000

bitrate=0x00177000 ------转换成十进制就是1536000

得到:

samplerate=48000     #在我们编写程序的时候,这个是中断设定的参数

这个是WAV头文件里得到的

按照程序里计算,48000就相当于20.833us

取整就相当于20us

20us播放两个声道,每个声道是由两个数据得到的,,

也就是20us消耗4个数据

这个结果,和我们用软件打开的查看一样的.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

用 UltraEdit软件打开

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

这是百度文库的一篇文章,讲解的很清楚

https://wenku.baidu.com/view/45960348551810a6f424863f.html

上面的例子属于16位立体声道,,,

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

下面是摘自网上的:可以不用看,有些事不对的:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

推荐文档:http://www.sohu.com/a/115830046_119709

通过调整计时器,,每25us控制ADC进行一次采集,,,,采集的数据交给DMA,,,,然后DMA给一个数组缓存,,,之后存入SD卡

如果25us采集一个

采样率就是SampleRate=40000;  其值为通道数×每秒样本数×每样本的数据位数/8

怎么得到的呢?

采样率实际上意义是每秒采集的位数:

那么就是    25us采1个8位数,,,那么100us采集4个8位数,,,,1000 000us 就是1s采集 40 000个8位数

所以就是采样率为40000

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

一个例子讲解wav头文件 stm32声音程序 录音和播放 wav的更多相关文章

  1. 一个包含所有C++头文件的头函数

    #include<bits/stdc++.h> using namespace std; 使用方法和平常的头文件一样,#include<bits/stdc++.h>包含以下头文 ...

  2. 从一个例子讲解拷贝构造函数与return

    #include "iostream" using namespace std; class Location { public: Location(, ) { X = xx; Y ...

  3. C语言解析WAV音频文件

    C语言解析WAV音频文件 代码地址: Github : https://github.com/CasterWx/c-wave-master 目录 前言 了解WAV音频文件 什么是二进制文件 WAV的二 ...

  4. c++中头文件include规则浅析[译]

    英文原文地址 在开发大型的软件项目时,头文件需要得到恰当的管理,甚至在c中也会面临这种问题,当我们用c++开发时,头文件的管理会变得更复杂,更加耗费我们的时间去管理,下面我将讲一些包含规则来简化这个苦 ...

  5. Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件

    原文 Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件 第21部分:永久保存Wav音频文件 原文地址:http://channel9.msdn.com/Series/Win ...

  6. S3C2416裸机开发系列19_Fatfs播放录像wav音频文件

    S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩    1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...

  7. wav格式文件、pcm数据

    wav格式文件是常见的录音文件,是声音波形文件格式之一,wav 文件由文件头和数据体两部分组成. 文件头是我们在做录音保存到文件的时候,要存储的文件的说明信息,播放器要通过文件头的相关信息去读取数据播 ...

  8. gsoap 学习 1-由wsdl文件生成h头文件

    开始前先看一下用户向导吧 http://www.cs.fsu.edu/~engelen/soap.html 中左侧点击Documentation 英语水平确实有限,有些内容可能说的不准确,敬请参考向导 ...

  9. 头文件与cpp文件为什么要分开写

    最表面的机制是: 头文件是程序的界面(是代码界面),提供给程序员以  类.模版.函数等一系列的声明,让程序员知道应该怎么调用里面的"东西". 从动态链接库的角度看: 头文件提供界面 ...

随机推荐

  1. SSH远程快速登录Linux

    SSH远程快速登录Linux        使用SSH管理linux服务器,通常要使用ssh,然后输入用户,密码,其实只要配置一个文件就可以方便登录.假设要登录server域名是www.interne ...

  2. 从USB闪存驱动器启动 Hiren的BootCD --制作U盘启动盘

    从USB闪存驱动器启动 Hiren的BootCD 原文  http://www.hirensbootcd.org/usb-booting/ 本文基本上是翻译而来 要从USB闪存驱动器启动Hiren的B ...

  3. Angular:内置指令

    [ngIf]表达式结果为真,显示元素:表达式结果为假,移除元素. <div *ngIf="a > b"></div> [ngSwitch]对表达式进行 ...

  4. C#操作SQLite方法实例详解

    用 C# 访问 SQLite 入门(1) CC++C#SQLiteFirefox  用 C# 访问 SQLite 入门 (1) SQLite 在 VS C# 环境下的开发,网上已经有很多教程.我也是从 ...

  5. 洛谷 P3654 First Step (ファーストステップ)

    洛谷 P3654 First Step (ファーストステップ) https://www.luogu.org/problemnew/show/P3654 题目描述 可是……这个篮球场,好像很久没有使用过 ...

  6. 【习题 7-8 UVA-12107】Digit Puzzle

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 迭代加深搜索. 枚举最大层数.(也即改变的数字个数 然后枚举第一个改哪个数字,第二个改哪个数字.. 一定要注意字典序问题. 每次优先 ...

  7. 【2017 Multi-University Training Contest - Team 7】Hard challenge

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6127 [Description] 平面上有n个点,每个点有一个价值,每两个点之间都有一条线段,定义 ...

  8. 一个虐你千百遍的问题:“RPC好,还是RESTful好?”

    看到知乎上有这样一个问题 WEB开发中,使用JSON-RPC好,还是RESTful API好? 还有其他优秀的推荐方案吗? -------------------------------------- ...

  9. 洛谷 P2628 冒险岛

    P2628 冒险岛 题目背景 冒险岛是费老师新开发的一种情景模拟电脑的游戏,通过掷骰子(1~6个数字之间),让一种人物(棋子)在棋纸上从左至右的行走,从而模拟冒险的故事…… 题目描述 棋纸上有一条从左 ...

  10. 洛谷 P1416 攻击火星

    P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...