void ee_Erase(void) { uint16_t i; uint8_t buf[EE_SIZE]; /* 填充缓冲区 */ for (i = 0; i < EE_SIZE; i++) { buf[i] = 0xFF; } /* 写EEPROM, 起始地址 = 0,数据长度为 256 */ if (ee_WriteBytes(buf, 0, EE_SIZE) == 0) { printf("擦除eeprom出错!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,110,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,110,"擦除EEPROM出错!",RED); #endif return; } else { printf("擦除eeprom成功!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,110,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,110,"擦除EEPROM成功!",BLUE); #endif } }
void Lcd_List(char page) { #ifdef WORD_MODE //文字版 char i; char lcd_char[28]; //+4是为了预留空间的实验编号 select_index_boardtest=0; //重新显示新的一页时重置select_index Lcd_GramScan( 1 ); //设置扫描方向 LCD_Clear(12,86,206,145,BACKGROUND); sprintf(lcd_char,"第 %0d/%0d 页",current_page_boardtest,all_page_boardtest); //显示页码 LCD_DispEnCh(30,235,(const uint8_t *)lcd_char,BLUE); /* 打开playlist,读取音频文件名 */ for(i=0;(i+PER_PAGE*(page-1))<TEST_NUM && i< PER_PAGE;i++) //仅显示第一页 { sprintf(lcd_char,"%0d.%s",PER_PAGE*(page-1)+i+1,test_name[(PER_PAGE*(page-1) + i)]); //拼接出歌曲列表 LCD_DispEnCh(22,87+i*18,(const uint8_t *)lcd_char,BLACK); //显示 } #else //图标版 char i; char lcd_char[28]; //+4是为了预留空间的实验编号 char pic_name[50]; select_index_boardtest=0; //重新显示新的一页时重置select_index Lcd_GramScan( 1 ); //设置扫描方向 LCD_Clear(12,94,212,160,BACKGROUND);//BLUE BACKGROUND sprintf(lcd_char,"第 %0d/%0d 页",current_page_boardtest,all_page_boardtest); //显示页码 LCD_DispEnCh(30,235,(const uint8_t *)lcd_char,BLUE); /* 打开playlist,读取音频文件名 */ for(i=0;(i+PER_PAGE*(page-1))<TEST_NUM && i< PER_PAGE;i++) //仅显示第一页 { sprintf(pic_name,"/boardtest/ISO_MINI/ui_test%d.bmp",PER_PAGE*(page-1)+i+1); if(i<=((PER_PAGE/2)-1)) { Lcd_show_bmp(160, 166-(70*i),pic_name); } else { Lcd_show_bmp(91, 166-(70*(i-(PER_PAGE/2))),pic_name); } } #endif }
/* * 要想图片显示成功 * 需把字库拷贝到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); }
void ADC_Test(void) { // 局部变量,用于保存转换计算后的电压值 float ADC_ConvertedValueLocal; #ifdef LCD_DISPLAY uint8_t lcd_char[20]; #endif /* enable adc1 and config adc1 to dma mode */ ADC1_Init(); printf("\r\n ----这是一个ADC实验(DMA传输)----\r\n"); while (1) { ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; // 读取转换的AD值 printf("\r\n The current AD value = 0x%04X \r\n", ADC_ConvertedValue); printf("\r\n The current AD value = %f V \r\n",ADC_ConvertedValueLocal); #ifdef LCD_DISPLAY sprintf(lcd_char,"电压值:%f V",ADC_ConvertedValueLocal); LCD_DispEnCh(20,150,lcd_char,BLUE); #endif ADC_Delay(0x4fffee); } }
void Lcd_Note(uint8_t test_num) { uint8_t lcd_char[50]; Lcd_GramScan( 1 ); //设置扫描方向 LCD_Clear(12,86,206,165,BACKGROUND); //清除屏幕 // LCD_Clear(12,72,215,152,BACKGROUND); //RED 清除 //LCD_DispEnCh(50,90,test_name[test_num-1],RED); sprintf(lcd_char,"%s程序运行中:",test_name[test_num-1]); LCD_DispEnCh(15,90,lcd_char,BLACK); LCD_DispEnCh(10,230,"软件或硬件复位返回选择界面",BLACK); }
/** * @brief lcd_list 显示歌曲列表 * @param 歌曲列表的页码 * @retval none */ static void lcd_list(char page) { char i; char music_name[MUSIC_NAME_LEN]; char lcd_char[MUSIC_NAME_LEN+4]; //+4是为了预留空间的歌曲编号 FIL name_file; select_index=0; //重新显示新的一页时重置select_index Lcd_GramScan( 1 ); //设置扫描方向 LCD_Clear(12,86,206,145,BACKGROUND); sprintf(lcd_char,"第 %0d/%0d 页",current_page,all_page); //显示页码 LCD_DispEnCh(30,235,(const uint8_t *)lcd_char,BLUE); sprintf(lcd_char,"音量:%2d",voice); //显示音量 LCD_DispEnCh(155,235,(const uint8_t *)lcd_char,BLUE); /* 打开扫描记录到的歌单 */ fres = f_open (&name_file, "0:mp3player/lcdlist.txt", FA_READ); /* 打开playlist,读取音频文件名 */ for(i=0;(i+8*(page-1))<file_num && i< 8;i++) //仅显示第一页 { fres = f_lseek (&name_file, (8*(page-1) + i)*FILE_NAME_LEN); //文件中的歌曲名按FILE_NAME_LEN来偏移 fres = f_read(&name_file, music_name, MUSIC_NAME_LEN, &rw_num); //只读取MUSIC_NAME_LEN长度的字符,太长的话LCD不够空间显示 music_name[MUSIC_NAME_LEN-1]='\0'; //把最后一个元素设置为'\0'防止没有结束符号而溢出 sprintf(lcd_char,"%0d.%s",8*(page-1)+i+1,music_name); //拼接出歌曲列表 LCD_DispEnCh(22,87+i*18,(const uint8_t *)lcd_char,RED); //显示 } fres = f_close (&name_file); }
/* * 函数名:Time_Display * 描述 :显示当前时间值 * 输入 :-TimeVar RTC计数值,单位为 s * 输出 :无 * 调用 :内部调用 */ void Time_Display(uint32_t TimeVar,struct rtc_time *tm) { static uint32_t FirstDisplay = 1; uint32_t BJ_TimeVar; uint8_t str[15]; // 字符串暂存 #ifdef LCD_DISPLAY uint8_t lcd_char[70]; #endif /* 把标准时间转换为北京时间*/ BJ_TimeVar =TimeVar + 8*60*60; to_tm(BJ_TimeVar, tm);/*把定时器的值转换为北京时间*/ if((!tm->tm_hour && !tm->tm_min && !tm->tm_sec) || (FirstDisplay)) { GetChinaCalendar((u16)tm->tm_year, (u8)tm->tm_mon, (u8)tm->tm_mday, str); printf("\r\n 今天新历:%0.2d%0.2d,%0.2d,%0.2d", str[0], str[1], str[2], str[3]); GetChinaCalendarStr((u16)tm->tm_year,(u8)tm->tm_mon,(u8)tm->tm_mday,str); printf("\r\n 今天农历:%s\r\n", str); if(GetJieQiStr((u16)tm->tm_year, (u8)tm->tm_mon, (u8)tm->tm_mday, str)) printf("\r\n 今天农历:%s\r\n", str); FirstDisplay = 0; } #ifdef LCD_DISPLAY sprintf(lcd_char,"%d年(%s年)%d月%d日(星期%s) %0.2d:%0.2d:%0.2d" ,tm->tm_year, zodiac_sign[(tm->tm_year-3)%12], tm->tm_mon, tm->tm_mday, WEEK_STR[tm->tm_wday], tm->tm_hour, tm->tm_min, tm->tm_sec); LCD_DispEnCh(20,180,lcd_char,BLUE); #endif /* 输出时间戳,公历时间 */ printf(" UNIX时间戳 = %d 当前时间为: %d年(%s年) %d月 %d日 (星期%s) %0.2d:%0.2d:%0.2d\r",TimeVar, tm->tm_year, zodiac_sign[(tm->tm_year-3)%12], tm->tm_mon, tm->tm_mday, WEEK_STR[tm->tm_wday], tm->tm_hour, tm->tm_min, tm->tm_sec); }
/* * 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(); }
/* * 根据串口不同的命令执行不同的程序 * 用户也可以自行添加相应的程序 */ void Board_Test(void) { while( 1 ) { switch( rec_cmd ) { case 1: //来自液晶触摸 case '1': //来自串口数据 printf("按回车返回菜单 \r\n"); printf("实验现象:LED1 LE2 LED3 轮流闪烁 \r\n"); Lcd_Note(1); LCD_DispEnCh(20,110,"实验现象:LED1 LE2 LED3 轮流闪烁",BLUE); LED_Test(); break; case 2: case '2': printf("按回车返回菜单 \r\n"); printf("实验现象:KEY1控制LED1反转,KEY2控制LE2反转 \r\n"); Lcd_Note(2); LCD_DispEnCh(20,110,"实验现象:KEY1控制LED1反转,KEY2控制LE2反转",BLUE); Key_Test(); break; case 3: case '3': printf("按回车返回菜单 \r\n"); printf("实验现象:串口打印出:eeprom读写测试成功 \r\n"); Lcd_Note(3); Eeprom_Test(); break; case 4: case '4': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-按照提示在串口中输入时间\r\n"); printf("实验现象:串口输出新历农历和时间戳\r\n"); Lcd_Note(4); LCD_DispEnCh(20,110,"实验说明:初始时间为程序固定的时间,若下面显示的时间每秒更新一次则说明RTC模块正常",BLUE); RTC_Test(); break; case 5: case '5': printf("按回车返回菜单 \r\n"); printf("实验现象:串口每隔一段时间打印出采集到的电压值 \r\n 旋转ISO上的电位器,可使用电压值在0~3.25之间变动\r\n"); Lcd_Note(5); LCD_DispEnCh(20,110,"实验说明:电压范围0-3.3 V,可调整电位器改变电压",BLUE); ADC_Test(); break; case 6: case '6': testing_state = SB_FM ; printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-将ISO上的MP3-FM-SPK开关拨到FM档位\r\n"); printf("2-接上耳机,同时耳机也是天线,当搜不到台的时候可移动耳机线接收信号\r\n"); printf("实验现象:KEY1向上自动搜台,搜到台LED1亮。KEY2向下自动搜台,搜到台LED2亮 \r\n"); Lcd_Note(6); LCD_DispEnCh(20,110,"实验说明:1-将ISO上的MP3-FM-SPK开关拨到FM档位",BLUE); LCD_DispEnCh(20,145,"2-接上耳机,同时耳机也是天线,当搜不到台的时候可移动耳机线接收信号",BLUE); LCD_DispEnCh(20,195,"稍后将进入FM收音机界面,硬件复位时返回",BLUE); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); RDA5807_FM_Test(); break; case 7: case '7': testing_state=SB_MP3; printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-将ISO上的MP3-FM-SPK开关拨到MP3档位\r\n"); printf("2-接上耳机,选择音乐即可播放,点击屏幕中的野火logo可以使用扬声器\r\n"); Lcd_Note(7); LCD_DispEnCh(20,110,"实验说明:1-将ISO上的MP3-FM-SPK开关拨到MP3档位",BLUE); LCD_DispEnCh(20,145,"2-接上耳机,选择音乐即可播放,点击屏幕中的野火logo可以使用扬声器",BLUE); LCD_DispEnCh(20,195,"稍后将进入MP3界面,硬件复位时返回",BLUE); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); MP3_test(); break; case 8: case '8': printf("按回车返回菜单 \r\n"); printf("实验现象:串口打印信息:CAN回环测试成功同时LED1和LED2亮\r\n"); Lcd_Note(8); LCD_DispEnCh(20,110,"实验说明:CAN回环测试,不需要外部接线",BLUE); CAN_Loopback_Test(); break; case 9: case '9': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上DHT11模块 \r\n"); printf("实验现象:串口打印出:湿度为xxxRH,温度为xxx℃ \r\n"); Lcd_Note(9); LCD_DispEnCh(20,110,"实验说明:把DHT11模块接入开发板,正常时在屏幕显示温湿度",BLUE); DHT11_Test(); break; case 10: case 'a': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上DS18b20模块 \r\n"); printf("实验现象:串口每隔1s打印一次温度值,同时led1闪烁一次\r\n"); Lcd_Note(10); LCD_DispEnCh(20,110,"实验说明:把DS18b20模块接入开发板,正常时在屏幕显示温度,同时LED闪烁",BLUE); DS18B20_Test(); break; case 11: case 'b': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上SD卡,容量需小于32GB\r\n"); printf("2-用microusb线连接电脑和ISO上的供电的microusb口(并不是 usb to uart) \r\n"); printf("实验现象:串口会打印出:野火 ISO STM32 USB MASS STORAGE 实验\r\n LED1闪烁,同时SD卡会在电脑上模拟出一个U盘\r\n"); Lcd_Note(11); LCD_DispEnCh(20,110,"实验说明:1-在ISO上插上SD卡,容量需小于32GB",BLUE); LCD_DispEnCh(20,150,"2-用microusb线连接电脑和ISO上的供电的microusb口(并不是 usb to uart)",BLUE); LCD_DispEnCh(20,195,"正常时LED1闪烁,同时SD卡会在电脑上模拟出一个U盘",BLUE); UsbMassStorage_Test(); break; case 12: case 'c': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上摄像头模块(火眼OV7725)\r\n"); printf("实验现象:液晶实时显示摄像头拍回来的图像\r\n"); Lcd_Note(12); LCD_DispEnCh(20,110,"实验说明:把摄像头模块接入到ISO开发板中,正常时稍后液晶会显示摄像头拍回来的图像,使用硬件复位退出",BLUE); delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); Camera_Test(); //采用二、三级代码优化会出错 break; case 13: case 'd': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上ENC28J60以太网模块,以太网模块用网线连接电脑或者路由器\r\n"); printf("2-在DOS模式下输入命令: ping 192.168.1.15 \r\n"); printf("3-电脑的IP地址或者局域网内的电脑的IP地址必须是192.168.1.x\r\n 但不能是192.168.1.15 \r\n"); Lcd_Note(13); LCD_DispEnCh(20,110,"实验说明:1-在ISO上插上以太网模块,以太网模块用网线连接电脑或者路由器",BLUE); LCD_DispEnCh(20,160,"2-在DOS模式下输入命令: ping 192.168.1.15 (能ping通表示正常)",BLUE); LCD_DispEnCh(20,193,"3-电脑IP地址或者局域网内电脑的IP地址必须是192.168.1.x",BLUE); ENC28J60_Test(); break; case 14: case 'e': printf("按回车返回菜单 \r\n"); printf("实验现象:LED1在PWM信号的控制下在呼吸\r\n"); Lcd_Note(14); LCD_DispEnCh(20,110,"实验说明:LED1在PWM信号的控制下在呼吸",BLUE); Breathing_Test(); break; case 15: case 'f': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上SRAM模块\r\n"); printf("实验现象:串口打印出SRAM测试成功,同时LED2闪烁\r\n"); Lcd_Note(15); LCD_DispEnCh(20,110,"Please connect SRAM module to ISO board",BLUE); delay(50000); SRAM_Test(); break; case 16: case 'g': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上NORFLASH模块\r\n"); printf("实验现象:串口打印出NORFLASH测试成功,同时LED2闪烁\r\n"); printf("\r\n 擦除时间有点长,请耐心等待...... \r\n"); Lcd_Note(16); LCD_DispEnCh(20,110,"实验说明:测试时把NORFLASH模块接入到ISO开发板中,擦除时间有点长,请耐心等待......",BLUE); NORFLASH_Test(); break; case 17: case 'h': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上NANDFLASH模块\r\n"); printf("实验现象:串口打印NANDFLASH Test finished,同时LE1闪烁r\n"); Lcd_Note(17); LCD_DispEnCh(20,110,"实验说明:测试时把NANDFLASH模块接入到ISO开发板中,正常时会显示NANDFLASH的ID",BLUE); NANDFLASH_Test(); break; default: break; } } }
/* * eeprom AT24C02 读写测试 */ void Eeprom_Test(void) { uint16_t i; uint8_t write_buf[EE_SIZE]; uint8_t read_buf[EE_SIZE]; /*-----------------------------------------------------------------------------------*/ if (ee_CheckOk() == 0) { /* 没有检测到EEPROM */ printf("没有检测到串行EEPROM!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,128,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,128,"没有检测到串行EEPROM!",RED); #endif while (1); /* 停机 */ } /*------------------------------------------------------------------------------------*/ /* 填充测试缓冲区 */ for (i = 0; i < EE_SIZE; i++) { write_buf[i] = i; } /*------------------------------------------------------------------------------------*/ if (ee_WriteBytes(write_buf, 0, EE_SIZE) == 0) { printf("写eeprom出错!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,128,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,128,"写EEPROM出错!",RED); #endif return; } else { printf("写eeprom成功!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,128,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,128,"写EEPROM成功!",BLUE); #endif } /*写完之后需要适当的延时再去读,不然会出错*/ ee_Delay(0x0FFFFF); /*-----------------------------------------------------------------------------------*/ if (ee_ReadBytes(read_buf, 0, EE_SIZE) == 0) { printf("读eeprom出错!\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,146,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,146,"读EEPROM出错!",RED); #endif return; } else { printf("读eeprom成功,数据如下:\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,146,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,146,"读EEPROM成功!",BLUE); #endif } /*-----------------------------------------------------------------------------------*/ for (i = 0; i < EE_SIZE; i++) { if(read_buf[i] != read_buf[i]) { printf("0x%02X ", read_buf[i]); printf("错误:EEPROM读出与写入的数据不一致"); #ifdef LCD_DISPLAY // LCD_Clear(20,165,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,165,"错误:EEPROM读出与写入的数据不一致!",RED); #endif return; } printf(" %02X", read_buf[i]); if ((i & 15) == 15) { printf("\r\n"); } } printf("eeprom读写测试成功\r\n"); #ifdef LCD_DISPLAY // LCD_Clear(20,165,206,16,BACKGROUND); //清除屏幕 LCD_DispEnCh(20,165,"EEPROM读写测试成功!",BLUE); #endif while(1); }