/******************** (C) COPYRIGHT 2010 STMicroelectronics ******************** * File Name : main.c * Author : MCD Application Team * Version : V3.2.1 * Date : 07/05/2010 * Description : Custom HID demo main file ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. *******************************************************************************/ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" #include "usb_lib.h" #include "hw_config.h" #include "stm32_eval.h" #include "common.h" extern void FLASH_Download(); /* Private typedef -----------------------------------------------------------*/ typedef void (*pFunction)(void); /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ pFunction Jump_To_Application; uint32_t JumpAddress; /* Extern variables ----------------------------------------------------------*/ uint8_t DeviceState; uint8_t JumpToApp = 0; /* Private function prototypes -----------------------------------------------*/ void Delay(__IO uint32_t nCount); void DelayWithDown(__IO uint32_t nCount); /* Private functions ---------------------------------------------------------*/ /******************************************************************************* * Function Name : main. * Description : main routine. * Input : None. * Output : None. * Return : None. *******************************************************************************/ int main(void) { Set_System(); USB_Interrupts_Config(); Set_USBClock(); USB_Init(); DeviceState = idle; while (JumpToApp == 0) { STM_EVAL_LEDToggle(LED1); DelayWithDown(10);//1000000); } if (((*(__IO uint32_t*) StartOfUserCode) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */ FLASH_Lock(); RCC_APB2PeriphResetCmd(0xffffffff, ENABLE); RCC_APB1PeriphResetCmd(0xffffffff, ENABLE); RCC_APB2PeriphResetCmd(0xffffffff, DISABLE); RCC_APB1PeriphResetCmd(0xffffffff, DISABLE); _SetCNTR(0); // clear interrupt mask _SetISTR(0); // clear all requests JumpAddress = *(__IO uint32_t*) (StartOfUserCode + 4); Jump_To_Application = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ __set_MSP(*(__IO uint32_t*) StartOfUserCode); Jump_To_Application(); } while (1) { STM_EVAL_LEDToggle(LED1); STM_EVAL_LEDToggle(LED2); Delay(1000000); } } /******************************************************************************* * Function Name : Delay * Description : Inserts a delay time. * Input : nCount: specifies the delay time length. * Output : None * Return : None *******************************************************************************/ void Delay(__IO uint32_t nCount) { for (; nCount != 0; nCount--) { } } /******************************************************************************* * Function Name : Delay * Description : Inserts a delay time. * Input : nCount: specifies the delay time length. * Output : None * Return : None *******************************************************************************/ void DelayWithDown(__IO uint32_t nCount) { for (; nCount != 0; nCount--) { for (__IO uint32_t delay = DownloadDelay; delay != 0; delay--) { } FLASH_Download(); } } #ifdef USE_FULL_ASSERT /******************************************************************************* * Function Name : assert_failed * Description : Reports the name of the source file and the source line number * where the assert_param error has occurred. * Input : - file: pointer to the source file name * - line: assert_param error line source number * Output : None * Return : None *******************************************************************************/ void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while(1) { } } #endif /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/