/******************************************************************************* * 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; }
/* * 要想图片显示成功 * 需把字库拷贝到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 }
/* 修复了上下颠倒的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(); }