98 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
/**
 | 
						|
  @page RTC_Tamper RTC Tamper Example
 | 
						|
  
 | 
						|
  @verbatim
 | 
						|
  ******************** (C) COPYRIGHT 2016 STMicroelectronics *******************
 | 
						|
  * @file    RTC/RTC_Tamper/readme.txt 
 | 
						|
  * @author  MCD Application Team
 | 
						|
  * @brief   Description of the RTC Tamper example.
 | 
						|
  ******************************************************************************
 | 
						|
  * @attention
 | 
						|
  *
 | 
						|
  * Copyright (c) 2016 STMicroelectronics.
 | 
						|
  * All rights reserved.
 | 
						|
  *
 | 
						|
  * This software is licensed under terms that can be found in the LICENSE file
 | 
						|
  * in the root directory of this software component.
 | 
						|
  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
						|
  *
 | 
						|
  ******************************************************************************
 | 
						|
  @endverbatim
 | 
						|
 | 
						|
@par Example Description 
 | 
						|
 | 
						|
Configuration of the RTC HAL API to write/read data to/from RTC Backup registers. 
 | 
						|
It also demonstrates the tamper detection feature.
 | 
						|
 | 
						|
At the beginning of the main program the HAL_Init() function is called to reset 
 | 
						|
all the peripherals, initialize the Flash interface and the systick.
 | 
						|
Then the SystemClock_Config() function is used to configure the system
 | 
						|
clock (SYSCLK) to run at 72 MHz.
 | 
						|
 | 
						|
The RTC peripheral configuration is ensured by the HAL_RTC_Init() function.
 | 
						|
This later is calling the HAL_RTC_MspInit()function which core is implementing
 | 
						|
the configuration of the needed RTC resources according to the used hardware (CLOCK, 
 | 
						|
PWR, RTC clock source and BackUp). You may update this function to change RTC configuration.
 | 
						|
 | 
						|
@note LSI oscillator clock is used as RTC clock source by default.
 | 
						|
      The user can use also LSE as RTC clock source. The user uncomment the adequate 
 | 
						|
      line on the main.h file.
 | 
						|
      @code
 | 
						|
        #define RTC_CLOCK_SOURCE_LSI  
 | 
						|
        /* #define RTC_CLOCK_SOURCE_LSE */
 | 
						|
      @endcode
 | 
						|
      LSI oscillator clock is delivered by a 40 kHz RC.
 | 
						|
      LSE (when available on board) is delivered by a 32.768 kHz crystal.
 | 
						|
 | 
						|
HAL_RTCEx_SetTamper_IT() function is then called to initialize the Tamper with 
 | 
						|
interrupt mode.
 | 
						|
 | 
						|
The associated firmware performs the following:
 | 
						|
1. It configures the Tamper pin to be falling edge, and enables the Tamper 
 | 
						|
   interrupt.
 | 
						|
2. It writes the data to all RTC Backup data registers, then check whether the 
 | 
						|
   data were correctly written. If yes, LED2 turns ON, otherwise LED3 turns ON.
 | 
						|
3. Applying a low level on the TAMPER_BUTTON_PIN(PC.13) by pressing Tamper push-button,
 | 
						|
   the RTC backup data registers are reset and the Tamper interrupt is generated 
 | 
						|
   and LED1 turns ON. 
 | 
						|
   The corresponding ISR then checks whether the RTC Backup data registers are cleared. 
 | 
						|
   If yes LED4 toggles, otherwise LED3 turns ON.
 | 
						|
 | 
						|
@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds)
 | 
						|
      based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from
 | 
						|
      a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower)
 | 
						|
      than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
 | 
						|
      To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
 | 
						|
      
 | 
						|
@note The application need to ensure that the SysTick time base is always set to 1 millisecond
 | 
						|
      to have correct HAL operation.
 | 
						|
 | 
						|
@par Directory contents 
 | 
						|
 | 
						|
  - RTC/RTC_Tamper/Inc/stm32f1xx_hal_conf.h    HAL configuration file
 | 
						|
  - RTC/RTC_Tamper/Inc/stm32f1xx_it.h          Interrupt handlers header file
 | 
						|
  - RTC/RTC_Tamper/Inc/main.h                  Header for main.c module  
 | 
						|
  - RTC/RTC_Tamper/Src/stm32f1xx_it.c          Interrupt handlers
 | 
						|
  - RTC/RTC_Tamper/Src/main.c                  Main program
 | 
						|
  - RTC/RTC_Tamper/Src/stm32f1xx_hal_msp.c     HAL MSP module
 | 
						|
  - RTC/RTC_Tamper/Src/system_stm32f1xx.c      STM32F1xx system source file
 | 
						|
 | 
						|
 | 
						|
@par Hardware and Software environment
 | 
						|
 | 
						|
  - This example runs on STM32F103xG devices.
 | 
						|
  - This example has been tested with STMicroelectronics STM3210E-EVAL RevD 
 | 
						|
    evaluation board and can be easily tailored to any other supported device 
 | 
						|
    and development board.
 | 
						|
 | 
						|
@par How to use it ? 
 | 
						|
 | 
						|
In order to make the program work, you must do the following :
 | 
						|
 - Open your preferred toolchain 
 | 
						|
 - Rebuild all files and load your image into target memory
 | 
						|
 - Run the example
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  */
 |