新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2020-4-10
- 在线时间
- 6 小时
|
1金钱
本帖最后由 zxcvsdd 于 2020-4-13 17:32 编辑
key1保存完之后再key0是继续录音了,不能进行相关设置
LCD_Fill(30,230,240,246,WHITE); //清除显示,清除之前显示的录音文件名
recoder_show_time(recsec); //显示时间
// while(delayplay<3||playtimes<3)
// {
// key=KEY_Scan(0);
// switch(key)
// {
// case KEY0_PRES://设置延时播放时间
// delayplay++;
// break;
// case KEY1_PRES://设置延时播放次数
// playtimes++;
// break;
// }
// }
break;
case KEY0_PRES: //REC/PAUSE
if(rec_sta&0X01)//原来是暂停,继续录音
{
rec_sta&=0XFE;//取消暂停
}else if(rec_sta&0X80)//已经在录音了,暂停
{
rec_sta|=0X01; //暂停
}else //还没开始录音
{
rec_sta|=0X80; //开始录音
recoder_new_pathname(pname); //得到新的名字
Show_Str(30,230,240,16,pname+11,16,0); //显示当前录音文件名字
recoder_wav_init(wavhead); //初始化wav数据
res=f_open(f_rec,(const TCHAR*)pname, FA_CREATE_ALWAYS | FA_WRITE);
if(res) //文件创建失败
{
rec_sta=0; //创建文件失败,不能录音
rval=0XFE; //提示是否存在SD卡
}else res=f_write(f_rec,(const void*)wavhead,sizeof(__WaveHeader),&bw);//写入头数据
}
if(rec_sta&0X01)LED1=0; //提示正在暂停
else LED1=1;
break;
case WKUP_PRES://播放录音(仅在非录音状态下有效)
if(rec_sta==0)playFlag=1;
break;
}
///////////////////////////////////////////////////////////
//读取数据
if(rec_sta==0X80)//已经在录音了
{
w=VS_RD_Reg(SPI_HDAT1);
if((w>=256)&&(w<896))
{
idx=0;
while(idx<512) //一次读取512字节
{
w=VS_RD_Reg(SPI_HDAT0);
recbuf[idx++]=w&0XFF;
recbuf[idx++]=w>>8;
}
res=f_write(f_rec,recbuf,512,&bw);//写入文件
if(res)
{
printf("err:%d\r\n",res);
printf("bw:%d\r\n",bw);
break;//写入出错.
}
sectorsize++;//扇区数增加1,约为32ms
}
}else//没有开始录音
{
if(playFlag&&pname[0])//如果KEY_UP按键被按下,且pname不为空
{
Show_Str(30,230,240,16,"播放:",16,0);
// Show_Str(30+40,230,240,16,pname+11,16,0); //显示当播放的文件名字
// delay_ms(delayplay*5000);
// while(playtimes)
// {
// playtimes--;
// rec_play_wav(pname); //播放pname
// }
rec_play_wav(pname); //播放pname
LCD_Fill(30,230,240,246,WHITE); //清除显示,清除之前显示的录音文件名
recoder_enter_rec_mode(1024*recagc); //重新进入录音模式
|
|