Esempio n. 1
0
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;
    }
  }
}