aboutsummaryrefslogtreecommitdiff
path: root/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c')
-rw-r--r--tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c300
1 files changed, 0 insertions, 300 deletions
diff --git a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c b/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c
deleted file mode 100644
index 9a1b53e..0000000
--- a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/FLASH/Dual_Boot/main.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
- ******************************************************************************
- * @file FLASH/Dual_Boot/main.c
- * @author MCD Application Team
- * @version V3.5.0
- * @date 08-April-2011
- * @brief Main program body
- ******************************************************************************
- * @attention
- *
- * 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.
- *
- * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-
-/** @addtogroup STM32F10x_StdPeriph_Examples
- * @{
- */
-
-/** @addtogroup Dual_Boot
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-typedef enum {FAILED = 0, PASSED = !FAILED} TestStatus;
-
-/* Private define ------------------------------------------------------------*/
-/* Uncomment one of the lines below to select which bank to boot from */
-#if !defined(BOOT_FROM_BANK1) && !defined(BOOT_FROM_BANK2)
-//#define BOOT_FROM_BANK1 /* The program will be loaded on Flash Bank1 */
-//#define BOOT_FROM_BANK2 /* The program will be loaded on Flash Bank2 */
-#endif
-
-#if defined(BOOT_FROM_BANK1)
- #define MESSAGE4 " Running from Bank 1"
-#elif defined(BOOT_FROM_BANK2)
- #define MESSAGE4 " Running from Bank 2"
-#else
- #error "Select Boot from Bank1 or Bank2 using defines:BOOT_FROM_BANK1 or BOOT_FROM_BANK2!"
-#endif
-
-#define MESSAGE1 " STM32 XL Density "
-#define MESSAGE2 " Device running on "
-#define MESSAGE3 " STM3210E-EVAL "
-
-#define MESSAGE5 " Joystick-DOWN: reset BFB2"
-#define MESSAGE6 " bit to Boot from Bank2 "
-#define MESSAGE7 " Joystick-UP: set BFB2 "
-#define MESSAGE8 " bit to Boot from Bank1 "
-
-#define MESSAGE9 " Joystick-SEL: program to "
-#define MESSAGE10 " 0x0 the base @ of Bank1/2"
-
-#define MESSAGE11 " Operation Failed !"
-#define MESSAGE12 "Bank 1/2 base @ -> 0"
-
-#define BANK1_START_ADDRESS 0x08000000
-#define BANK2_START_ADDRESS 0x08080000
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-USART_InitTypeDef USART_InitStructure;
-
-static __IO uint32_t TimingDelay;
-RCC_ClocksTypeDef RCC_Clocks;
-
-/* Private function prototypes -----------------------------------------------*/
-void Delay(__IO uint32_t nTime);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Main program
- * @param None
- * @retval None
- */
-int main(void)
-{
- /*!< At this stage the microcontroller clock setting is already configured,
- this is done through SystemInit() function which is called from startup
- file (startup_stm32f10x_xx.s) before to branch to application main.
- To reconfigure the default setting of SystemInit() function, refer to
- system_stm32f10x.c file
- */
-
- /* Set the vector table address */
-#if defined(BOOT_FROM_BANK1)
- /* Set the vector table to the Bank1 start address */
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, BANK1_START_ADDRESS);
-#elif defined(BOOT_FROM_BANK2)
- /* Set the vector table to the Bank1 start address */
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, BANK2_START_ADDRESS);
-#endif /* BOOT_FROM_BANK1 */
-
- /* Initialize LEDs, Buttons and LCD on STM3210E-EVAL board *****************/
- STM_EVAL_LEDInit(LED1);
- STM_EVAL_LEDInit(LED2);
- STM_EVAL_LEDInit(LED3);
- STM_EVAL_LEDInit(LED4);
-
- /* SysTick end of count event each 10ms */
- RCC_GetClocksFreq(&RCC_Clocks);
- SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);
-
- /* Configure the Joystick buttons */
- STM_EVAL_PBInit(BUTTON_UP, BUTTON_MODE_GPIO);
- STM_EVAL_PBInit(BUTTON_SEL, BUTTON_MODE_GPIO);
- STM_EVAL_PBInit(BUTTON_DOWN, BUTTON_MODE_GPIO);
- /* Initialize the LCD */
- STM3210E_LCD_Init();
-
- /* Display message on STM3210E-EVAL LCD *************************************/
- /* Clear the LCD */
- LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set the LCD Back Color */
-#if defined(BOOT_FROM_BANK1)
- LCD_SetBackColor(LCD_COLOR_BLUE);
-#elif defined(BOOT_FROM_BANK2)
- LCD_SetBackColor(LCD_COLOR_RED);
-#endif /* BOOT_FROM_BANK1 */
-
- /* Set the LCD Text Color */
- LCD_SetTextColor(LCD_COLOR_WHITE);
- LCD_DisplayStringLine(LCD_LINE_0, MESSAGE1);
- LCD_DisplayStringLine(LCD_LINE_1, MESSAGE2);
- LCD_DisplayStringLine(LCD_LINE_2, MESSAGE3);
- LCD_DisplayStringLine(LCD_LINE_4, MESSAGE4);
-
- LCD_SetFont(&Font12x12);
- LCD_DisplayStringLine(LCD_LINE_12, MESSAGE5);
- LCD_DisplayStringLine(LCD_LINE_13, MESSAGE6);
- LCD_DisplayStringLine(LCD_LINE_15, MESSAGE7);
- LCD_DisplayStringLine(LCD_LINE_16, MESSAGE8);
- LCD_DisplayStringLine(LCD_LINE_18, MESSAGE9);
- LCD_DisplayStringLine(LCD_LINE_19, MESSAGE10);
- LCD_SetFont(&Font16x24);
-
- /* Turn on leds available on STM3210E-EVAL **********************************/
- STM_EVAL_LEDOn(LED1);
- STM_EVAL_LEDOn(LED2);
- STM_EVAL_LEDOn(LED3);
- STM_EVAL_LEDOn(LED4);
-
- /* Infinite loop */
- while (1)
- {
- /*--- If Joystick DOWN button is pushed, reset BFB2 bit to enable boot from Bank2
- (active after next reset, w/ Boot pins set in Boot from Flash memory position ---*/
- if (STM_EVAL_PBGetState(BUTTON_DOWN) == 0)
- {
- /* Reset BFB2 bit to enable boot from Flash Bank2 */
- FLASH_Unlock();
- FLASH_EraseOptionBytes();
-
- if (FLASH_BootConfig(FLASH_BOOT_Bank2) == FLASH_COMPLETE)
- {
- /* Generate System Reset to load the new option byte values */
- NVIC_SystemReset();
- }
- else
- {
- /* Display information */
- LCD_DisplayStringLine(LCD_LINE_6, MESSAGE11);
- }
- }
-
- /*--- If Joystick UP button is pushed, set BFB2 bit to enable boot from Bank1
- (active after next reset, w/ Boot pins set in Boot from Flash memory position ---*/
- if (STM_EVAL_PBGetState(BUTTON_UP) == 0)
- {
- /* Set BFB2 bit to enable boot from Flash Bank2 */
- FLASH_Unlock();
- FLASH_EraseOptionBytes();
- if (FLASH_BootConfig(FLASH_BOOT_Bank1) == FLASH_COMPLETE)
- {
- /* Generate System Reset to load the new option byte values */
- NVIC_SystemReset();
- }
- else
- {
- /* Display information */
- LCD_DisplayStringLine(LCD_LINE_6, MESSAGE11);
- }
- }
-
- /*--- If Joystick UP button is pushed, program the content of address 0x08080000
- (base address of Bank2) and 0x08000000(base address of Bank1) to 0x00 --*/
- if (STM_EVAL_PBGetState(BUTTON_SEL) == 0)
- {
- FLASH_Unlock();
- /* Erase stack pointer value at Bank 2 start address */
- FLASH_ProgramWord(BANK2_START_ADDRESS, 0x00);
- /* Erase stack pointer value at Bank 1 start address */
- FLASH_ProgramWord(BANK1_START_ADDRESS, 0x00);
- FLASH_Lock();
-
- LCD_ClearLine(LCD_LINE_7);
- LCD_ClearLine(LCD_LINE_8);
- LCD_ClearLine(LCD_LINE_9);
-
- /* Check if erase operation is OK */
- if ((uint32_t)(*(uint32_t *)BANK2_START_ADDRESS) == 0x00)
- {
- if ((uint32_t)(*(uint32_t *)BANK1_START_ADDRESS) != 0x00)
- {
- /* Display information */
- LCD_DisplayStringLine(LCD_LINE_6, MESSAGE11);
- }
- else
- {
- /* Display information */
- LCD_DisplayStringLine(LCD_LINE_6, MESSAGE12);
- }
- }
- else
- {
- /* Display information */
- LCD_DisplayStringLine(LCD_LINE_6, MESSAGE11);
- }
- }
-
- /* Toggle LD3 */
- STM_EVAL_LEDToggle(LED3);
-
- /* Insert 50 ms delay */
- Delay(5);
-
- /* Toggle LD2 */
- STM_EVAL_LEDToggle(LED2);
-
- /* Insert 100 ms delay */
- Delay(10);
- }
-}
-
-/**
- * @brief Inserts a delay time.
- * @param nTime: specifies the delay time length, in 10 ms.
- * @retval None
- */
-void Delay(__IO uint32_t nTime)
-{
- TimingDelay = nTime;
-
- while (TimingDelay != 0);
-}
-
-/**
- * @brief Decrements the TimingDelay variable.
- * @param None
- * @retval None
- */
-void TimingDelay_Decrement(void)
-{
- if (TimingDelay != 0x00)
- {
- TimingDelay--;
- }
-}
-
-#ifdef USE_FULL_ASSERT
-
-/**
- * @brief Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval 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) */
-
- while (1)
- {}
-}
-
-#endif
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/