Readme
Readme
@verbatim
******************** (C) COPYRIGHT 2016 STMicroelectronics *******************
* @file ADC/ADC_AnalogWatchdog/readme.txt
* @author MCD Application Team
* @brief Description of the ADC conversion example
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
* All rights reserved.</center></h2>
*
* 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
How to use the ADC peripheral to perform conversions with an analog watchdog
and out-of-window interrupts enabled.
ADC settings:
Trig of conversion start done by external event (timer at 1kHz).
Continuous mode disabled to have only 1 conversion at each conversion trig.
Analog watchdog thresholds are set between 1/8 and 5/8 of full range (between
0.41V and 2.06V with full range of 3.3V).
Board settings:
- ADC is configured to convert ADC_CHANNEL_1 (pin PA.04).
- The voltage input on ADC channel is provided from DAC channel.
ADC and DAC channel have been chosen to have the same pad shared at device
level: pin PA.04.
==> Therefore, there is no external connection needed to run this example.
- Voltage is increasing at each click on push button, from 0 to maximum range in 4
steps.
Clicks on push button follow circular cycles: At clicks counter maximum value
reached, counter is set back to 0.
STM32F303RE-Nucleo Rev C board's LED is be used to monitor the program execution
status:
- Normal operation: LED2 is turned-on/off in function of ADC conversion
result.
- Turned-off if voltage into of AWD window
- Turned-on if voltage is out of AWD window
- Error: In case of error, LED2 is toggling at a frequency of 1Hz.
@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 needs to ensure that the SysTick time base is always set to 1
millisecond
to have correct HAL operation.
- This example has been tested with STM32F303RE-Nucleo Rev C board and can be
easily tailored to any other supported device and development board.