关于探索者录音机实验的代码

2019-07-20 08:29发布

最近一直在学习录音机实验, 代码部分遇到好几个问题:
1、recorder.c程序中定义了一个8位的全局变量rec_sta用来表示录音状态,它作为一个变量应该是假定高位表示是否开启录音,低位表示是否暂停录音,但在如下代码中要关闭录音只令变量rec_sta=0,可不明白的是原理上(实际上)是如何关闭录音的呢?没看到哪有关闭录音的操作啊,要是rec_sta是一个寄存器那还好理解,可他应该只是一个变量。
                                        case KEY2_PRES:        //STOP&SAVE
                                        if(rec_sta&0X80)//有录音
                                        {
                                                rec_sta=0;        //关闭录音
                                                wavhead->riff.ChunkSize=wavsize+36;                //整个文件的大小-8;
                                           wavhead->data.ChunkSize=wavsize;                //数据大小
2.如上代码,wavsize的大小不知在哪计算出来的,进入录音状态后调用了录音 I2S_DMA接收中断服务函数,里面有一句“wavsize+=I2S_RX_DMA_BUF_SIZE;”可这也不是计算wavsize吧,看不懂还请大家开导开导
3.进入录音状态函数recoder_enter_rec_mode中这行代码表示回调函数指针指向rec_i2s_dma_rx_callback函数的首地址,即"i2s_rx_callback=rec_i2s_dma_rx_callback;"那么每当一个缓冲接数据满了,硬件自动切换为下一个缓冲,同时进入中断服务函数,将已满缓冲的数据写入 SD 卡的 wav 文件, 就应该调用一次中断服务函数啊,可是在别处并没有再见函数指针i2s_rx_callback,不知道它是如何工作的?
以上就是我的问题,请会的兄台教教我.拜谢



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。