小学生
最后登录1970-1-1
在线时间 小时
注册时间2013-11-11
|
想自己做个基于STM32的液晶触摸MP3 ,整合了一下火哥光盘的例程,但是现在就是能控制音乐开始,不能控制音乐关闭和暂停,就是开始音乐后就进入播放的过程,不能再去读取别的动作标志位。不知道该怎么处理 了自己写的一点处理。
//通过触摸来决定是哪个功能
if(touch_flag == 1)
{
if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !=DISABLE)
{
if((display.x>0&&display.x<239)&&(display.y>0&&display.y<80))
{
LCD_Rectangle(0,0,40,40,WHITE);
flag=1;
}
if((display.x>0&&display.x<239)&&(display.y>80&&display.y<160))
{
LCD_Rectangle(51,0,40,40,WHITE);
flag1=1;
}
if((display.x>0&&display.x<239)&&(display.y>160&&display.y<240))
{
LCD_Rectangle(102,0,40,40,WHITE);
flag2=1;
}
}
}
if(flag==1)
{ /* ------------------- 一曲开始 --------------------*/
printf( " \r\n 开始播放 \r\n" );
for (;;)
{
res = f_read( &fsrc, buffer, sizeof(buffer), &br );
if ( res == 0 )
{
count = 0; /* 512字节完重新计数 */
Delay_us( 1000 ); /* 10ms 延时 */
while ( count < 512) /* SD卡读取一个sector,一个sector为512字节 */
{
if ( DREQ != 0 ) /* 等待DREQ为高,请求数据输入 */
{
for (j=0; j<32; j++ ) /* VS1003的FIFO只有32个字节的缓冲 */
{
VS1003_WriteByte( buffer[count] );
count++;
}
}
}
}
if (res || br == 0) break; /* 出错或者到了MP3文件尾 */
}
printf( " \r\n 播放结束 \r\n" );
/* ------------------- 一曲结束 --------------------*/
count = 0;
/* 根据VS1003的要求,在一曲结束后需发送2048个0来确保下一首的正常播放 */
while ( count < 2048 )
{
if ( DREQ != 0 )
{
for ( j=0; j<32; j++ )
{
VS1003_WriteByte( 0 );
count++;
}
}
}
count = 0;
TXDCS_SET( 1 ); /* 关闭VS1003数据端口 */
f_close(&fsrc); /* 关闭打开的文件 */
}
if(flag2==1) break;
|
|