/*******************************************************************************
* Function Name  : Sdfs_read
* Description    : 从一个文件读出数据到缓冲区 
* Input          : read_file_name--文件的名称  
*				   				save_buffer--数据需要保存的地址 
* Output         : None
* Return         : 0(success)  -1(fail)
* Attention		 : None
*******************************************************************************/ 
int Sdfs_read(BYTE *read_file_name, BYTE *save_buffer)
{
    
    int count=0;
    BYTE name_buffer[50];
    sprintf((char*)name_buffer,"0:%s",read_file_name);
    Sd_fs_init();
    f_mount(0, &myfs[0]);
    myres = f_open(&myfsrc , (char*)name_buffer , FA_OPEN_EXISTING | FA_READ);
    
    if ( myres == FR_OK ) 
    { 
        for (;;) 
        {
            
            for ( mya=0; mya<512; mya++ ) 	/* 清缓冲区 */
                mybuffer[mya]=0;
            
            myres = f_read( &myfsrc, mybuffer, sizeof(mybuffer), &mybr ); /* 将文件里面的内容以512字节为单位读到本地缓冲区 */
            sprintf((char*)&save_buffer[count*512],"%s",mybuffer);					//打印到用户指定的缓冲区缓冲区
            
            count++;							
            if (myres || mybr == 0) break;   // error or eof        	    	
        }  	
        
        return 0;
    }
    
    else
        return -1;
    
    
}
Example #2
0
/*
 * 要想图片显示成功
 * 需把字库拷贝到sd卡上,然后把sd卡插到开发板的卡槽上
 */
int main(void)
{

	
		LCD_Init();	
		LCD_Clear(0, 0, 240, 320, BACKGROUND);		
		  
		/* USART1 config */
		//USART1_Config();  
		//printf("\r\n this is a fatfs test demo \r\n");
		
	/* 初始化sd卡文件系统,因为汉字的字库放在了sd卡里面 */
		Sd_fs_init();	
	
		/* 设置Lcd Gram 扫描方向为: 左上角 -> 右下角*/
		//Lcd_GramScan( 1 );
		LCD_DispStr(5, 5, (uint8_t *)"fatfs init success", RED);
		LCD_DispStr(5, 25, (uint8_t *)"insure the sdcard has insert......", RED);
	
	  LCD_DispStrCH(50, 50, (uint8_t *)"野火开发板", RED);
	  LCD_DispEnCh(5, 90, "Welcome to use 野火 ISO Stm32 开发板 bigo------", RED);
	
		/* 显示BMP图片 */
		Lcd_show_bmp(0, 0,"/wildfire.bmp");
		Lcd_show_bmp( 10,10,"/pic1.bmp");		
    Lcd_show_bmp( 170,0,"/pic2.bmp");  
	
		while(1);
}
/*
 * 初始化液晶,串口,触摸屏,flash及sd卡 * 
 */
void ISO_Init(void)
{
	uint8_t k;
	
  /* 液晶初始化先于串口,不然会有bug,至于是什么原因我也不知道:( */
  LCD_Init();
	
	LCD_Clear(0,0,240,320,WHITE);
	
	LCD_DispStr(20,150,"board init,please wait... ",RED);
  
  USART1_Config();	
	
	

	/* 初始化sd卡文件系统,因为汉字的字库放在了sd卡里面 */
	Sd_fs_init();	

	#ifdef WORD_MODE
  /* 显示界面图片 */
	Lcd_show_bmp(0, 0,"/boardtest/boardtest.bmp");
	#else
	 /* 显示界面图片 */
	Lcd_show_bmp(0, 0,"/boardtest/ISO/ui_boardtest.bmp");

	#endif
	Lcd_List(1);
	
	/* 初始化外部FLASH */
	SPI_FLASH_Init();
	//SPI_FLASH_SectorErase(0);
  
	/* 触摸屏IO和中断初始化 */
	Touch_Init();		
		
		
		/*-------------------------------------------------------------------------------------------------------*/  
		#if 1
		SPI_FLASH_BufferRead(&cal_flag, 0, 1);
		if( cal_flag == 0x55 )
		{
			SPI_FLASH_BufferRead((void*)cal_p, 1, sizeof(cal_p));
			SPI_FLASH_CS_HIGH();
			for( k=0; k<6; k++ )
						printf("\r\n rx = %LF \r\n",cal_p[k]);
		}
		else
		{
			/* 等待触摸屏校正完毕 */
			while(Touch_Calibrate() !=0);
		}
		#elif 0
		/* 等待触摸屏校正完毕 */
		while(Touch_Calibrate() !=0);
		#endif
	


}
Example #4
0
/* 修复了上下颠倒的BUG,enjoy~
 * 要想中文显示成功
 * 需把字库拷贝到sd卡上,然后把sd卡插到开发板的卡槽上
 */
int main(void)
{
   /* USART1 config */
		//USART1_Config();
		//printf("\r\n this is a fatfs test demo \r\n");
	
		LCD_Init();
	
		/* 设置Lcd Gram 扫描方向为: 右下角->左上角 */		
		Lcd_GramScan( 3 );	
		LCD_Clear(0, 0, 320, 240, BACKGROUND);	
		
		/* 初始化sd卡文件系统,因为汉字的字库和bmp图片放在了sd卡里面 */
		Sd_fs_init();
	

		Screen_shot(0,0,320,240,"/myscreen");
		
		while(1);
}
/* 
 * ISO 自动整板测试 
 */
void ISO_AutoTest(void)
{
	uint32_t i=0x10ffff;
	uint8_t board_state = 1;
	uint8_t board_test = 0x55;
	
  /* 液晶初始化先于串口,不然会有bug,至于是什么原因我也不知道:( */
  LCD_Init();
	
	USART1_Config();	
	
		/* 初始化sd卡文件系统,因为汉字的字库放在了sd卡里面 */
	Sd_fs_init();	
  
	LCD_Clear(0,0,240,320,WHITE);
	
	LCD_DispStr(50,10,"ISO board auto test ",BLUE);
	
  USART1_Config();			
	
	SysTick_Init();
	
	/* LED 端口初始化 */
	LED_GPIO_Config();	
	
	LED1_ON;
	LED2_ON;
	LED3_ON;
	
	/*按键*/
	Key1_GPIO_Config();
  Key2_GPIO_Config();
	
	
	/* EEPROM测试 */
	LCD_DispEnCh(20,40,"1.EEPROM 自检中",BLUE);
	/*-----------------------------------------------------------------------------------*/  
  if (EEPROM_AutoTest() == 0) //坏
	{
		board_state = 0;	
		LCD_DispEnCh(20,40,"1.EEPROM 检测失败!",RED);
	}
	else
	{
		LCD_DispEnCh(20,40,"1.EEPROM 检测通过!",BLUE);

	}		

	/* FLASH 测试 */
	
	LCD_DispEnCh(20,70,"2.FLASH 自检中",BLUE);
	
	if(FLASH_AutoTest() == 0) //坏
	{
		board_state = 0;
		LCD_DispEnCh(20,70,"2.FLASH 检测失败!",RED);
	}
	else
	{
		LCD_DispEnCh(20,70,"2.FLASH 检测通过!",BLUE);

	}
	
	/* RTC测试 */
	
	LCD_DispEnCh(20,100,"3.RTC 自检中",BLUE);
	
	if(RTC_AutoTest() == 0) //坏
	{
		board_state = 0;
		LCD_DispEnCh(20,100,"3.RTC 检测失败!",RED);
	}
	else
	{
		LCD_DispEnCh(20,100,"3.RTC 检测通过!",BLUE);

	}
	
		/* FM测试 */
	
	LCD_DispEnCh(20,130,"4.FM 自检中",BLUE);
	
	if(RDA5807_FM_AutoTest() == 0) //坏
	{
		board_state = 0;
		LCD_DispEnCh(20,130,"4.FM检测失败!",RED);
	}
	else
	{
		LCD_DispEnCh(20,130,"4.FM检测通过",BLUE);

	}
	/* mp3 sd 喇叭测试 */
	/* 关闭systick定时器 以免影响mp3播放效果*/
	SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
	
	LCD_DispEnCh(20,160,"5.MP3及喇叭自检中",BLUE);
	
	if(MP3_AutoTest() == 0) //坏
	{
		board_state = 0;
		LCD_DispEnCh(20,160,"5.sd 卡错误!!!            ",RED);
	}
	else
	{
		LCD_DispEnCh(20,160,"5.请确认喇叭是否有声音",BLUE);

	}	
	
		
	if(board_state == 0)// 测试不通过
	{
			LCD_DispEnCh(20,220,"自检测试不通过!!!",RED);
			while(1);
		}
		
	/* 按键测试 */
	LCD_DispEnCh(20,190,"6.请检查按键及led灯 ",BLUE);			

		
	while(i--)
	{
		/* 按键测试 */
		if(	Key_Scan(GPIOA,GPIO_Pin_0) == KEY_ON)
		{	
				key_state =~key_state;
				LED1_TOGGLE;
				LED2_TOGGLE;
				LED3_TOGGLE;
			
			}
		
		if(	Key_Scan(GPIOC,GPIO_Pin_13)== KEY_ON)
		{
				key_state =~key_state;
				LED1_TOGGLE;
				LED2_TOGGLE;
				LED3_TOGGLE;

			}
	}	
	
   
	ee_WriteBytes(&board_test,0,1); //自测成功,写入标记
	Soft_Reset();	

}