/**
  @page PWR_CurrentConsumption PWR Current Consumption example
  
  @verbatim
  ******************** (C) COPYRIGHT 2014 STMicroelectronics *******************
  * @file    PWR/PWR_CurrentConsumption/readme.txt 
  * @author  MCD Application Team
  * @version V1.4.0
  * @date    24-July-2014
  * @brief   Description of the PWR Current Consumption example.
  ******************************************************************************
  *
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
  * You may not use this file except in compliance with the License.
  * You may obtain a copy of the License at:
  *
  *        http://www.st.com/software_license_agreement_liberty_v2
  *
  * Unless required by applicable law or agreed to in writing, software 
  * distributed under the License is distributed on an "AS IS" BASIS, 
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
  ******************************************************************************
   @endverbatim

@par PWR PWR_CurrentConsumption example Description 

This example shows how to configure the STM32F0xx system to measure different
Low Power modes current consumption. The Low Power modes are:
  - Sleep Mode
  - STOP mode with RTC
  - STANDBY mode without RTC 
  - STANDBY mode with RTC

To run this example, user has to follow the below given steps:
 1. Select the Low power mode to be measured by uncommenting its corresponding
    line inside the stm32f0xx_lp_modes.h file.
    @code
       /*#define SLEEP_MODE*/
       /*#define STOP_MODE*/
       /*#define STANDBY_MODE*/
       #define STANDBY_RTC_MODE
    @endcode       

 2. Use an external amperemeter to measure the IDD current. 

 3. This example can not be used in DEBUG mode as the JTAG IOs are disabled to
    reduce power consumption.

Here below a detailed description of the example code:

 1. After reset, the program waits for Tamper button connected to the PC.13 to be 
    pressed to enter the selected low power mode.
     - In SLEEP_MODE, press again the Joystick SEL button to exit the low power mode.
     - In STOP_MODE and STANDBY_RTC_MODE, the wakeup from low power mode is automatically 
       generated by the RTC (after ~5s).
     - In STANDBY_MODE test, press SEL button to exit the low power mode.
     
 2. Low power modes description:

    - Sleep Mode
    ============  
            - System Running at PLL (48MHz)
            - Flash 1 wait state
            - Code running from Internal FLASH
            - All peripherals disabled.
            - Wakeup using EXTI Line 0 (PA.00, connected to Joystick SEL button on EVAL board)

    - STOP Mode
    ===========
            - RTC Clocked by LSI
            - Regulator in LP mode
            - HSI, HSE OFF and LSI if not used as RTC Clock source
            - No IWDG
            - FLASH in deep power down mode
            - Automatic Wakeup using RTC clocked by LSI 

    - STANDBY Mode
    ==============
            - RTC OFF
            - IWDG and LSI OFF
            - Wakeup using WakeUp Pin1 (PA.0, connected to SEL push-button on EVAL board)
                        
    - STANDBY Mode with RTC clocked by LSI 
    ==========================================
            - RTC Clocked by LSI
            - IWDG OFF
            - Automatic Wakeup using RTC 


@par Directory contents
  - PWR/PWR_CurrentConsumption/stm32f0xx_conf.h     Library Configuration file
  - PWR/PWR_CurrentConsumption/stm32f0xx_it.c       Interrupt handlers
  - PWR/PWR_CurrentConsumption/stm32f0xx_it.h       Interrupt handlers header file
  - PWR/PWR_CurrentConsumption/main.c               Main program
  - PWR/PWR_CurrentConsumption/main.h               Header for main.c module
  - PWR/PWR_CurrentConsumption/system_stm32f0xx.c   STM32F0xx system source file

@note The "system_stm32f0xx.c" is generated by an automatic clock configuration 
      tool and can be easily customized to meet user application requirements. 
      To select different clock setup, use the "STM32F0xx_Clock_Configuration_VX.Y.Z.xls" 
      provided with the AN4055 package available on <a href="http://www.st.com/internet/mcu/class/1734.jsp">  ST Microcontrollers </a>

      
@par Hardware and Software environment

  - This example runs on STM32F0xx Devices.
  
  - This example has been tested with STMicroelectronics STM320518-EVAL and
    STM32072B-EVAL including respectively STM32F051R8T6 and STM32F072VBT6 devices
    and can be easily tailored to any other supported device and development board

  - STM320518-EVAL Set-up
    - Use the Joystick SEL button connected to PA0 pin
    - Use the Tamper push-button connected to PC13 pin
    - Connect an amperemeter to JP7 to measure the IDD current
    - Make sure that JP11 is open to disconnect VDDA from all analog power. 
    - Make sure that JP9 and JP10 are in 2-3 position     

  - STM32072B-EVAL Set-up
    - Use the Joystick SEL button connected to PA0 pin
    - Use the Tamper push-button connected to PC13 pin
    - Connect an amperemeter to JP12 to measure the IDD current
    - Make sure that JP9 is open to disconnect VDDA from all analog power.
    - Make sure that JP8 and JP13 are in 1-2 position 
    
@par How to use it ? 

In order to make the program work, you must do the following :
 - Copy all source files from this example folder to the template folder under
   Project\STM32F0xx_StdPeriph_Templates
 - Open your preferred toolchain 
 - If the used device is STM32F051R8T6 choose STM32F051 project
    - Add the following files to the project source list
       - Utilities\STM32_EVAL\STM320518_EVAL\stm320518_eval.c
 - If the used device is STM32F072VBT6 choose STM32F072 project
    - Add the following files to the project source list
       - Utilities\STM32_EVAL\STM32072B_EVAL\stm32072b_eval.c
 - Rebuild all files and load your image into target memory
 - Run the example
        
 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */
