学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-5-3
|
录音与回放实验中的源码有段代码不是很理解
在static void StartRecord(const char *filename)
{
.....
I2Sx_Mode_Config(g_FmtList[Recorder.ucFmtIdx][0],g_FmtList[Recorder.ucFmtIdx][1],g_FmtList[Recorder.ucFmtIdx][2]);
I2Sxext_Mode_Config(g_FmtList[Recorder.ucFmtIdx][0],g_FmtList[Recorder.ucFmtIdx][1],g_FmtList[Recorder.ucFmtIdx][2]);
I2Sx_TX_DMA_Init(&recplaybuf[0],&recplaybuf[1],1);
DMA_ITConfig(I2Sx_TX_DMA_STREAM,DMA_IT_TC,DISABLE);//开启传输完成中断
I2S_DMA_RX_Callback=Recorder_I2S_DMA_RX_Callback;
I2Sxext_RX_DMA_Init(buffer0,buffer1,RECBUFFER_SIZE);
I2S_Play_Start();
I2Sxext_Recorde_Start();
}
StartRecord函数是用来开启录音的,也就是一般是用来接收数据的,但为什么又要开启数据发送DMA呢?
而对比播放函数就只有发送数据。
static void StartPlay(const char *filename)
{
。。。。
I2Sx_Mode_Config(g_FmtList[Recorder.ucFmtIdx][0],g_FmtList[Recorder.ucFmtIdx][1],g_FmtList[Recorder.ucFmtIdx][2]);
I2Sxext_Mode_Config(g_FmtList[Recorder.ucFmtIdx][0],g_FmtList[Recorder.ucFmtIdx][1],g_FmtList[Recorder.ucFmtIdx][2]);
I2Sxext_RX_DMA_Init(&recplaybuf[0],&recplaybuf[1],1);
DMA_ITConfig(I2Sxext_RX_DMA_STREAM,DMA_IT_TC,DISABLE);//开启传输完成中断
I2Sxext_Recorde_Stop();
I2Sx_TX_DMA_Init(buffer0,buffer1,RECBUFFER_SIZE);
I2S_Play_Start();
}
|
|