OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3778|回复: 5

新手:求高手们帮忙解释下面程序

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-6-10
在线时间
0 小时
发表于 2015-6-10 20:09:30 | 显示全部楼层 |阅读模式
5金钱
void read_file(void);
 void goto_menu(void);
 int main(void)
 {	
	delay_init(72);	    	 //延时函数初始化	  
     uart_init(9600);	 	//串口初始化为9600
	Init_LCD(); 
	KEY_Init();	 			//按键初始化
	Audiosel_Init();	//初始化音源选择
 	mem_init(SRAMIN);	//初始化内部内存池	
 	VS_Init();	  
 	exfuns_init();					//为fatfs相关变量申请内存  
  	f_mount(0,fs[0]); 		 		//挂载SD卡 
 	f_mount(1,fs[1]); 				//挂载FLASH.
   goto_menu();
 
 }			  
void read_file(void)
{	 
	FIL fmp3;
    u16 br;
	u8 res,number;	  
    BYTE databuf[512];	   		   
	u16 a=0; 
    char str[25]={0,}; 
	u8 key=0; 
	u16 index=0;
 while(!(key==3))
	{
		key=KEY_Scan(0);
		LCD_num(5,5,index,0,2);	
		if(key==1)number++;	  
		  if(key==2&&number>0) number--; 
		 snprintf(str,24, "0:RECORDER/REC%05d.wav",number);
	   LCD_write_String(0,4,(u8 *)str+11,0);	
		}
	res=f_open(&fmp3,str,FA_READ);//打开文件	 
	if(!res)
   {
	br=1;
	a=0;
    for (;;)
	{ 
	for(a=0; a<512; a++) databuf[a]=0;
	 	res=f_read(&fmp3,databuf,512,(UINT*)&br);//读出4096个字节  
  for(a=0; a<512; a++)
{	printf("%x\r",databuf[a]); //打印LCD ID  
  }	  printf("%x\r\n","000010000");
 if (res || br < sizeof(databuf)) break;  // error or eof
 }		 
		}
			else  LCD_write_String(0,4,"NO the file...",0);
		f_close(&fmp3);
	}						     	 
/****************************菜单********************************************/
	void goto_menu(void)            
	{
	u8 key_test;
	LCD_clear();
    	    LCD_write_String(0,0,"KEY1=recoder ",0);
    	LCD_write_String(0,1,"KEY2=mp3_play",0);
 		LCD_write_String(0,2,"KEY3=PC_USART",0);
while(1)
  {
		while(!key_test)
	{   key_test=KEY_Scan(0);
	
   		 if(key_test)
			{	LCD_clear();
		
	 		  if(key_test==1)	     LCD_write_String(0,1,"you ->recoder ",0);
	  			 else if(key_test==2)	 LCD_write_String(0,1,"you ->mp3_play",0);
	  			 else if(key_test==3)	 LCD_write_String(0,1,"you ->C_USART",0);
	 
				}
	}
	delay_ms(800);
     LCD_clear();
		Audiosel_Set(0);	//MP3通道
		LCD_write_String(0,1,"RAM TEST",0);		
		VS_Ram_Test();	   
		LCD_write_String(0,1,"SINETEST",0);		
 		VS_Sine_Test();	   
		LCD_write_String(0,1,"WAVETEST",0);	
	  LCD_clear();
		if(key_test==1) recoder_play();
    if( key_test==2)	mp3_play();
		if(key_test==3)	 read_file();			 
	}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

?for(a=0;?a<512;?a++)?databuf[a]=0;    所有元素都送0,一般用于初始化。  printf 是“打印”语句,对应的物理动作是从串口输出数据; snprintf 不清楚,似乎也是打印; 括号里都是参数,具体格式去查下 c 语言的书吧,我也记不住。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-6-10 20:09:31 | 显示全部楼层
?for(a=0;?a<512;?a++)?databuf[a]=0;    所有元素都送0,一般用于初始化。

 printf 是“打印”语句,对应的物理动作是从串口输出数据;
snprintf 不清楚,似乎也是打印;
括号里都是参数,具体格式去查下 c 语言的书吧,我也记不住。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-6-10 21:45:20 | 显示全部楼层
一句都不懂吗?
回复

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2015-6-10 22:19:43 | 显示全部楼层
你想问什么?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-11 09:06:35 | 显示全部楼层
回复【3楼】Mrjiang:
---------------------------------
 for(a=0; a<512; a++) databuf[a]=0;
snprintf(str,24, "0:RECORDER/REC%05d.wav",number);这两句
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-6-10
在线时间
0 小时
 楼主| 发表于 2015-6-11 09:18:07 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
 printf("%x\r\n","000010000");这一句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 14:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表