Esempio n. 1
0
/**
  * @brief  Main program
  * @param  None
  * @retval None
  */
int main(void)
{
  pFunction JumpToApplication;
  uint32_t JumpAddress;
  
  /* STM32F3xx HAL library initialization:
       - Configure the Flash prefetch
       - Systick timer is configured by default as source of time base, but user 
         can eventually implement his proper time base source (a general purpose 
         timer for example or other time source), keeping in mind that Time base 
         duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and 
         handled in milliseconds basis.
       - Set NVIC Group Priority to 4
       - Low Level Initialization
     */
  HAL_Init();
  
  /* Configure the system clock to get correspondent USB clock source */
  SystemClock_Config();
  
  /* Configure USER Button */
  BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);
  
  /* Check if the KEY Button is pressed */
  if (BSP_PB_GetState(BUTTON_KEY) != 0x00)
  {
    /* Test if user code is programmed starting from address 0x08003000 */
    if (((*(__IO uint32_t*)USBD_DFU_APP_DEFAULT_ADD) & 0x2FFE0000 ) == 0x20000000)
    {
      /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (USBD_DFU_APP_DEFAULT_ADD + 4);
      JumpToApplication = (pFunction) JumpAddress;
      
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) USBD_DFU_APP_DEFAULT_ADD);
      JumpToApplication();
    }
  }
  
  /* Otherwise enters DFU mode to allow user to program his application */
  /* Init Device Library */
  USBD_Init(&USBD_Device, &DFU_Desc, 0);
  
  /* Register the DFU class */
  USBD_RegisterClass(&USBD_Device, &USBD_DFU);
  
  /* Add DFU Media interface */
  USBD_DFU_RegisterMedia(&USBD_Device, &USBD_DFU_Flash_fops);
  
  /* Start Device Process */
  USBD_Start(&USBD_Device);
  /* In an infinite loop */
  while (1)
  {
  }
}
Esempio n. 2
0
/**
  * @brief  Main program
  * @param  None
  * @retval None
  */
int main(void)
{
  pFunction JumpToApplication;
  uint32_t JumpAddress;

  /* STM32F3xx HAL library initialization:
       - Configure the Flash prefetch
       - Configure the Systick to generate an interrupt each 1 msec
       - Set NVIC Group Priority to 4
       - Low Level Initialization
     */
  HAL_Init();
  
  /* Configure the system clock to 72 MHz */
  SystemClock_Config();
  
  /* Configure User push-button */
  BSP_PB_Init(BUTTON_USER, BUTTON_MODE_GPIO);
  
  /* Check if the User push-button is pressed */
  if (BSP_PB_GetState(BUTTON_USER) != GPIO_PIN_RESET)
  {
    /* Test if user code is programmed starting from address 0x08007000 */
    if (((*(__IO uint32_t*)USBD_DFU_APP_DEFAULT_ADD) & 0x2FFE0000 ) == 0x20000000)
    {
      /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (USBD_DFU_APP_DEFAULT_ADD + 4);
      JumpToApplication = (pFunction) JumpAddress;
      
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) USBD_DFU_APP_DEFAULT_ADD);
      JumpToApplication();
    }
  }
  
  /* Otherwise enters DFU mode to allow user to program his application */
  /* Init Device Library */
  USBD_Init(&USBD_Device, &DFU_Desc, 0);
  
  /* Register the DFU class */
  USBD_RegisterClass(&USBD_Device, &USBD_DFU);
  
  /* Add DFU Media interface */
  USBD_DFU_RegisterMedia(&USBD_Device, &USBD_DFU_Flash_fops);

  /* Start Device Process */
  USBD_Start(&USBD_Device);
  /* In an infinite loop */
  while (1)
  {
  }
}
Esempio n. 3
0
void _main_Process(void)
{
		u8 *fname;
		USART_InitTypeDef USART_InitStruct;
		u8 temp;u16 recvLenth=0;u32 savelenth=0;
		KEY_Press kp=KEY_none;char ssid[30]={"SP400-"};char buf[20]={0};
		if(isAppExist)
                 printf("|OK|--Boot to Application\n");
            else printf("|OK|--Load new ver from SD\n");
		     printf("| <|--Load factory ver from SD");
		     printf("| >|--Update form PC\n");
		     printf("******************************");

		kp=readKey();
		if(kp==KEY_ok)
		{
                  if( isAppExist)JumpToApplication(AppProgramAddr);
                  else 
                  {
                        Frimware=f_open(&f_bin,"new.bin",FA_OPEN_EXISTING);
                        f_close(&f_bin);
                        if(Frimware==FR_OK)
                        {
                              clearAppVersion();
                              printf("Firmware Loading......\n");
                              printf("%d Bytes to load\n",WriteFlashFromFile("new.bin"));
                              printf("Jump To Application\n");
                              JumpToApplication(AppProgramAddr);
                        }
                        else
                        {
                                    printf("Can not found file\n");
                        }   
                  }
		}
		else if(kp==KEY_left)
		{
			Frimware=f_open(&f_bin,"factory.bin",FA_OPEN_EXISTING);
                  f_close(&f_bin);
			if(Frimware==FR_OK)
			{
				clearAppVersion();
				printf("Firmware Loading......\n");
				printf("%d Bytes to load\n",WriteFlashFromFile("factory.bin"));
				printf("Jump To Application\n");
				JumpToApplication(AppProgramAddr);
			}
			else
			{
					printf("Can not found file\n");
			}

		}
		else if(kp==KEY_right)
		{
			printf("Starting Wifi...\n");
			EMW_HAL_InitWithDefault();
			EMW_Get_Config(&wifi_paraG);
			memset(wifi_paraG.wifi_ssid,0,sizeof(wifi_paraG.wifi_ssid));
			sprintf(buf,"%d",Bp.serialNum);
			strcat(ssid,buf);
			strcat(wifi_paraG.wifi_ssid,ssid);
			wifi_paraG.use_dhcp=1;
			EMW_Set_Config(&wifi_paraG);
			EMW_Set_Mode(DTU_mode);
			printf("WIFI Network: %s Created\n",wifi_paraG.wifi_ssid);
			rut=ReciveFile2SD(fname);
			SysTick->CTRL=0;
			if(rut)
			{
				clearAppVersion();
				printf("Firmware Loading......\n");
                        if(isFactory)
                        {
                            printf("%d Bytes to load\n",WriteFlashFromFile("factory.bin"));
                        }
                        else 
                        {
                            printf("%d Bytes to load\n",WriteFlashFromFile("new.bin"));  
                        }
				
				printf("Jump To Application\n");
				JumpToApplication(AppProgramAddr);
			}
			else
			{
				SystemReset();
			}
		}
		while(1);
}