fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
134:caf4c9cd5052
Parent:
133:90d0bf0e2996
Child:
135:c1e30e0e8949
--- a/main.c	Wed Apr 13 16:49:22 2016 +0000
+++ b/main.c	Thu Apr 14 14:13:18 2016 +0000
@@ -33,7 +33,8 @@
 /*
 #define	IMG_START_SECTOR	0x00030000//0x00010000	/* Sector 16 
 #define	IMG_END_SECTOR		0x00037FFF	*/
-
+unsigned int addres = 0x1fff1fff;
+uint32_t Result[5];
 extern uint32_t CMD_Mode;
 unsigned int  secPuls;
 float DACF, K_DAC;
@@ -48,26 +49,68 @@
     //UART_DMA_Init();			//инициализация DMA для UART.//не используем
     //WDTInit();
   //  G_Photo_Init();				      //инициализация интерфейса I2C для фотодетектора.
-    //инициализация
-
+    //инициализация/*
+//NVIC_DisableIRQ(TIMER1_IRQn);
+//NVIC_DisableIRQ(TIMER2_IRQn);
+//NVIC_DisableIRQ(TIMER3_IRQn);
+/*
+NVIC_DisableIRQ(WDT_IRQn);
+NVIC_DisableIRQ(TIMER0_IRQn);
+NVIC_DisableIRQ(TIMER1_IRQn);
+NVIC_DisableIRQ(TIMER2_IRQn);
+NVIC_DisableIRQ(TIMER3_IRQn);
+NVIC_DisableIRQ(UART0_IRQn);
+NVIC_DisableIRQ(UART1_IRQn);
+NVIC_DisableIRQ(UART2_IRQn);
+NVIC_DisableIRQ(UART3_IRQn);
+NVIC_DisableIRQ(PWM1_IRQn);
+NVIC_DisableIRQ(I2C0_IRQn);
+NVIC_DisableIRQ(I2C1_IRQn);
+NVIC_DisableIRQ(I2C2_IRQn);
+NVIC_DisableIRQ(SPI_IRQn);
+NVIC_DisableIRQ(SSP1_IRQn);
+NVIC_DisableIRQ(PLL0_IRQn);
+NVIC_DisableIRQ(RTC_IRQn);
+NVIC_DisableIRQ(EINT0_IRQn);
+NVIC_DisableIRQ(EINT1_IRQn);
+NVIC_DisableIRQ(EINT2_IRQn);
+NVIC_DisableIRQ(EINT3_IRQn);
+NVIC_DisableIRQ(ADC_IRQn);
+NVIC_DisableIRQ(BOD_IRQn);
+NVIC_DisableIRQ(USB_IRQn);
+NVIC_DisableIRQ(CAN_IRQn);
+NVIC_DisableIRQ(DMA_IRQn);
+NVIC_DisableIRQ(I2S_IRQn);
+NVIC_DisableIRQ(RIT_IRQn);
+NVIC_DisableIRQ(MCPWM_IRQn);
+NVIC_DisableIRQ(QEI_IRQn);
+NVIC_DisableIRQ(PLL1_IRQn);
+NVIC_DisableIRQ(USBActivity_IRQn);
+NVIC_DisableIRQ(CANActivity_IRQn);
+   */ 
 
-//SystemInitDef();
-//vIAP_ReinvokeISP();
-  
+//NVIC_SetPriorityGrouping(1);
+/*
+SystemInitDef();
+SystemCoreClockUpdate1();
+vIAP_ReinvokeISP();
+  */
     SystemInit1();  // Инициализация контроллера: установка тактовых частот
 
 
 
-    FlashDMA_Init(); 		  // Загрузка параметров с флэш
+    //FlashDMA_Init(); 		  // Загрузка параметров с флэш
     SystemCoreClockUpdate1(); // расчет тактовой частоты процессора перед инициализацией UART - 100MHz
 
+
+
     GLD_Init();
     ///////////старый UART
 //    UARTInit();				  // инициализация  UART0 на скорость 38400.
 //    UART1_Init();             // инициализация  UART1 на скорость 38400.
 
 
-    UART_InitSet (0, 921600, 0x03);  // надо проверить, мож чо с ногам
+      UART_InitSet (0, 921600, 0x03);  // надо проверить, мож чо с ногам
    // UART_InitSet (1, 921600, 0x03);
       UART_InitSet (1, 115200, 0x03);
     
@@ -392,34 +435,49 @@
  if(Gyro.FlashMod == 1)		
  {    		   
  	
- vIAP_ReinvokeISP();	
  	/*	Prepare Sectors to be flashed */
+    NVIC_DisableIRQ(TIMER1_IRQn);
+    NVIC_DisableIRQ(TIMER2_IRQn);
+ 	NVIC_DisableIRQ(TIMER3_IRQn);
+ 	NVIC_DisableIRQ(EINT3_IRQn);
+//SCB->VTOR = 0x00A000;
+//boot_jump(addres);
+SystemInitDef1();
+SystemCoreClockUpdate1();
+vIAP_ReinvokeISP();
 
 
 		if(u32IAP_PrepareSectors(19, 21) == IAP_STA_CMD_SUCCESS)
 
 		{
+			
+			
 			WriteCon("\r\nPrepare Sector OK");
 	   		
 			/*	Copy data (already) located in RAM to flash */
-			if(u32IAP_CopyRAMToFlash(IMG_START_SECTOR, &TempA, 256) == IAP_STA_CMD_SUCCESS)
-				{WriteCon("\r\nWrite");
+			Result[0]=u32IAP_CopyRAMToFlash(IMG_START_SECTOR, &TempA, 256);
+			WriteCon("\r\nWrite");
+				 if(Result[0] != IAP_STA_CMD_SUCCESS)
+                 {
+                   while(1); /* No way to recover. Just let Windows report a write failure */
+                 }
 				
 				/*	Verify the flash contents with the contents in RAM */
-				if(u32IAP_Compare(IMG_START_SECTOR, &TempA, 256, 0) == IAP_STA_CMD_SUCCESS){WriteCon("\r\nCompare");
-				
-				}else{WriteCon("\r\n error Compare");}		
-			
-			}else{WriteCon("\r\n error Write");}
-		
+				if(u32IAP_Compare(IMG_START_SECTOR, &TempA, 256, 0) == IAP_STA_CMD_SUCCESS)
+				{
+				WriteCon("\r\nCompare");
+				}
+				else{WriteCon("\r\n error Compare");}			
 		}else{WriteCon("\r\n error prepare");}
 		Gyro.FlashMod = 0;
+	
  } 
 
- if(Gyro.FlashMod == 2)				// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно
+ if(Gyro.FlashMod == 2)			
     {
       Gyro.FlashMod = 0;
-      WriteCon("\r\Rnead from Flash");
+      WriteCon("\r\Read from Flash");
+      boot_jump(addres);
     }