STM32CubeWL/Projects/NUCLEO-WL55JC/Examples/LPTIM/LPTIM_PWMExternalClock
Ali Labbene 378e461e46 Release v1.3.0 2022-12-08 15:37:52 +01:00
..
EWARM Release v1.2.0 2022-12-07 18:38:46 +01:00
Inc Release v1.2.0 2022-12-07 18:38:46 +01:00
MDK-ARM Release v1.2.0 2022-12-07 18:38:46 +01:00
STM32CubeIDE Release v1.2.0 2022-12-07 18:38:46 +01:00
Src Release v1.3.0 2022-12-08 15:37:52 +01:00
.extSettings Release v1.0.0 2020-12-18 15:30:45 +01:00
LPTIM_PWMExternalClock.ioc Release v1.2.0 2022-12-07 18:38:46 +01:00
readme.txt Release v1.0.0 2020-12-18 15:30:45 +01:00

readme.txt

/**
  @page LPTIM_PWMExternalClock LPTIM PWM External clock example
  
  @verbatim
  ******************************************************************************
  * @file    LPTIM/LPTIM_PWMExternalClock/readme.txt 
  * @author  MCD Application Team
  * @brief   Description of the LPTIM PWM with an External clock example.
  ******************************************************************************
  *
  * Copyright (c) 2020 STMicroelectronics. All rights reserved.
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                       opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  @endverbatim

@par Example Description 

How to configure and use, through the HAL LPTIM API, the LPTIM peripheral using an external counter clock, 
to generate a PWM signal at the lowest power consumption.

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.
The SystemClock_Config() function is used to configure the system clock for STM32WL55JCIx Devices :
The CPU at 48 MHz  

The Autorelaod equal to 99 so the output frequency (OutputFrequency) will
be equal to the external counter clock (InputFrequency) divided by (99+1).

  OutputFrequency = InputFrequency / (Autoreload + 1)
                  = InputFrequency / 100

Pulse value equal to 49 and the duty cycle (DutyCycle) is computed as follow:

  DutyCycle = 1 - [(PulseValue + 1)/ (Autoreload + 1)]
  DutyCycle = 50%

To minimize the power consumption, after starting generating the PWM signal,
the MCU enters in STOP mode. Note that GPIOs are configured in Low Speed to
lower the consumption.

User push-button (B1) pin (PA.00)is configured as input with external interrupt (External line 0),
falling edge. When User push-button (B1) is pressed, wakeup event is generated and PWM signal
generation is stopped.

@note This example can not be used in DEBUG mode, this is due to the fact
      that the Cortex-M4 core is no longer clocked during low power mode
      so debugging features are disabled.

@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 This example needs to ensure that the SysTick time base is always set to 1 millisecond
      to have correct HAL operation.


@par Keywords

Timer, Low Power, PWM, Stop mode, Interrupt, External Clock, Output, Duty Cycle

@par Directory contents

  - LPTIM/LPTIM_PWMExternalClock/Inc/stm32wlxx_nucleo_conf.h     BSP configuration file
  - LPTIM/LPTIM_PWMExternalClock/Inc/stm32wlxx_hal_conf.h    HAL configuration file
  - LPTIM/LPTIM_PWMExternalClock/Inc/stm32wlxx_it.h          Interrupt handlers header file
  - LPTIM/LPTIM_PWMExternalClock/Inc/main.h                  Header for main.c module  
  - LPTIM/LPTIM_PWMExternalClock/Src/stm32wlxx_it.c          Interrupt handlers
  - LPTIM/LPTIM_PWMExternalClock/Src/main.c                  Main program
  - LPTIM/LPTIM_PWMExternalClock/Src/stm32wlxx_hal_msp.c     HAL MSP module
  - LPTIM/LPTIM_PWMExternalClock/Src/system_stm32wlxx.c      STM32WLxx system source file


@par Hardware and Software environment

  - This example runs on STM32WL55JCIx devices.
    
  - This example has been tested with STMicroelectronics NUCLEO-WL55JC RevC
    board and can be easily tailored to any other supported device
    and development board.   
	
  - Connect a clock signal to PC0 (pin 14 in CN10 connector).
  - Connect PC1 (pin 23 in CN10 connector) to an oscilloscope 
    to monitor the LPTIM output waveform.

@par How to use it ? 

In order to make the program work, you must do the following :
 - Open your preferred tool chain 
 - Rebuild all files and load your image into target memory
 - Run the example 

 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */