int main(void) { //Clock Setup Internal Clock , CoreClock = 24M SystemClockSetup(ClockSource_IRC,CoreClock_24M); //DelayInit DelayInit(); //LED Init LED_Init(); //Init a debug UART prot // UART_DebugPortInit(UART1_RX_PC03_TX_PC04,115200); UART_DebugPortInit(UART0_RX_PB16_TX_PB17,115200); DisplayCPUInfo(); GPIO_Test(); MAG3110_Test(); AT24Cxx_Test(); SPIFLASH_Test(); ADC_Test(); WDOG_Init(); while(1); }
/* * 根据串口不同的命令执行不同的程序 * 用户也可以自行添加相应的程序 */ 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; } } }