fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Committer:
bogdanm
Date:
Thu Oct 01 15:25:22 2015 +0300
Revision:
0:9b334a45a8ff
Initial commit on mbed-dev

Replaces mbed-src (now inactive)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 /**
bogdanm 0:9b334a45a8ff 2 ******************************************************************************
bogdanm 0:9b334a45a8ff 3 * @file stm32f0xx_hal_dac.c
bogdanm 0:9b334a45a8ff 4 * @author MCD Application Team
bogdanm 0:9b334a45a8ff 5 * @version V1.3.0
bogdanm 0:9b334a45a8ff 6 * @date 26-June-2015
bogdanm 0:9b334a45a8ff 7 * @brief DAC HAL module driver.
bogdanm 0:9b334a45a8ff 8 * This file provides firmware functions to manage the following
bogdanm 0:9b334a45a8ff 9 * functionalities of the Digital to Analog Converter (DAC) peripheral:
bogdanm 0:9b334a45a8ff 10 * + Initialization and de-initialization functions
bogdanm 0:9b334a45a8ff 11 * + IO operation functions
bogdanm 0:9b334a45a8ff 12 * + Peripheral Control functions
bogdanm 0:9b334a45a8ff 13 * + Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 14 *
bogdanm 0:9b334a45a8ff 15 *
bogdanm 0:9b334a45a8ff 16 @verbatim
bogdanm 0:9b334a45a8ff 17 ==============================================================================
bogdanm 0:9b334a45a8ff 18 ##### DAC Peripheral features #####
bogdanm 0:9b334a45a8ff 19 ==============================================================================
bogdanm 0:9b334a45a8ff 20 [..]
bogdanm 0:9b334a45a8ff 21 *** DAC Channels ***
bogdanm 0:9b334a45a8ff 22 ====================
bogdanm 0:9b334a45a8ff 23 [..]
bogdanm 0:9b334a45a8ff 24 STM32F0 devices integrates no, one or two 12-bit Digital Analog Converters.
bogdanm 0:9b334a45a8ff 25 STM32F05x devices have one converter (channel1)
bogdanm 0:9b334a45a8ff 26 STM32F07x & STM32F09x devices have two converters (i.e. channel1 & channel2)
bogdanm 0:9b334a45a8ff 27
bogdanm 0:9b334a45a8ff 28 When 2 converters are present (i.e. channel1 & channel2) they
bogdanm 0:9b334a45a8ff 29 can be used independently or simultaneously (dual mode):
bogdanm 0:9b334a45a8ff 30 (#) DAC channel1 with DAC_OUT1 (PA4) as output
bogdanm 0:9b334a45a8ff 31 (#) DAC channel2 with DAC_OUT2 (PA5) as output
bogdanm 0:9b334a45a8ff 32
bogdanm 0:9b334a45a8ff 33 *** DAC Triggers ***
bogdanm 0:9b334a45a8ff 34 ====================
bogdanm 0:9b334a45a8ff 35 [..]
bogdanm 0:9b334a45a8ff 36 Digital to Analog conversion can be non-triggered using DAC_TRIGGER_NONE
bogdanm 0:9b334a45a8ff 37 and DAC_OUT1/DAC_OUT2 is available once writing to DHRx register.
bogdanm 0:9b334a45a8ff 38 [..]
bogdanm 0:9b334a45a8ff 39 Digital to Analog conversion can be triggered by:
bogdanm 0:9b334a45a8ff 40 (#) External event: EXTI Line 9 (any GPIOx_PIN_9) using DAC_TRIGGER_EXT_IT9.
bogdanm 0:9b334a45a8ff 41 The used pin (GPIOx_PIN_9) must be configured in input mode.
bogdanm 0:9b334a45a8ff 42
bogdanm 0:9b334a45a8ff 43 (#) Timers TRGO: TIM2, TIM3, TIM6, and TIM15
bogdanm 0:9b334a45a8ff 44 (DAC_TRIGGER_T2_TRGO, DAC_TRIGGER_T3_TRGO...)
bogdanm 0:9b334a45a8ff 45
bogdanm 0:9b334a45a8ff 46 (#) Software using DAC_TRIGGER_SOFTWARE
bogdanm 0:9b334a45a8ff 47
bogdanm 0:9b334a45a8ff 48 *** DAC Buffer mode feature ***
bogdanm 0:9b334a45a8ff 49 ===============================
bogdanm 0:9b334a45a8ff 50 [..]
bogdanm 0:9b334a45a8ff 51 Each DAC channel integrates an output buffer that can be used to
bogdanm 0:9b334a45a8ff 52 reduce the output impedance, and to drive external loads directly
bogdanm 0:9b334a45a8ff 53 without having to add an external operational amplifier.
bogdanm 0:9b334a45a8ff 54 To enable, the output buffer use
bogdanm 0:9b334a45a8ff 55 sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
bogdanm 0:9b334a45a8ff 56 [..]
bogdanm 0:9b334a45a8ff 57 (@) Refer to the device datasheet for more details about output
bogdanm 0:9b334a45a8ff 58 impedance value with and without output buffer.
bogdanm 0:9b334a45a8ff 59
bogdanm 0:9b334a45a8ff 60 *** GPIO configurations guidelines ***
bogdanm 0:9b334a45a8ff 61 =====================
bogdanm 0:9b334a45a8ff 62 [..]
bogdanm 0:9b334a45a8ff 63 When a DAC channel is used (ex channel1 on PA4) and the other is not
bogdanm 0:9b334a45a8ff 64 (ex channel1 on PA5 is configured in Analog and disabled).
bogdanm 0:9b334a45a8ff 65 Channel1 may disturb channel2 as coupling effect.
bogdanm 0:9b334a45a8ff 66 Note that there is no coupling on channel2 as soon as channel2 is turned on.
bogdanm 0:9b334a45a8ff 67 Coupling on adjacent channel could be avoided as follows:
bogdanm 0:9b334a45a8ff 68 when unused PA5 is configured as INPUT PULL-UP or DOWN.
bogdanm 0:9b334a45a8ff 69 PA5 is configured in ANALOG just before it is turned on.
bogdanm 0:9b334a45a8ff 70
bogdanm 0:9b334a45a8ff 71 *** DAC wave generation feature ***
bogdanm 0:9b334a45a8ff 72 ===================================
bogdanm 0:9b334a45a8ff 73 [..]
bogdanm 0:9b334a45a8ff 74 Both DAC channels can be used to generate
bogdanm 0:9b334a45a8ff 75 (#) Noise wave
bogdanm 0:9b334a45a8ff 76 (#) Triangle wave
bogdanm 0:9b334a45a8ff 77
bogdanm 0:9b334a45a8ff 78 *** DAC data format ***
bogdanm 0:9b334a45a8ff 79 =======================
bogdanm 0:9b334a45a8ff 80 [..]
bogdanm 0:9b334a45a8ff 81 The DAC data format can be:
bogdanm 0:9b334a45a8ff 82 (#) 8-bit right alignment using DAC_ALIGN_8B_R
bogdanm 0:9b334a45a8ff 83 (#) 12-bit left alignment using DAC_ALIGN_12B_L
bogdanm 0:9b334a45a8ff 84 (#) 12-bit right alignment using DAC_ALIGN_12B_R
bogdanm 0:9b334a45a8ff 85
bogdanm 0:9b334a45a8ff 86 *** DAC data value to voltage correspondance ***
bogdanm 0:9b334a45a8ff 87 ================================================
bogdanm 0:9b334a45a8ff 88 [..]
bogdanm 0:9b334a45a8ff 89 The analog output voltage on each DAC channel pin is determined
bogdanm 0:9b334a45a8ff 90 by the following equation:
bogdanm 0:9b334a45a8ff 91 [..]
bogdanm 0:9b334a45a8ff 92 DAC_OUTx = VREF+ * DOR / 4095
bogdanm 0:9b334a45a8ff 93 (+) with DOR is the Data Output Register
bogdanm 0:9b334a45a8ff 94 [..]
bogdanm 0:9b334a45a8ff 95 VEF+ is the input voltage reference (refer to the device datasheet)
bogdanm 0:9b334a45a8ff 96 [..]
bogdanm 0:9b334a45a8ff 97 e.g. To set DAC_OUT1 to 0.7V, use
bogdanm 0:9b334a45a8ff 98 (+) Assuming that VREF+ = 3.3V, DAC_OUT1 = (3.3 * 868) / 4095 = 0.7V
bogdanm 0:9b334a45a8ff 99
bogdanm 0:9b334a45a8ff 100 *** DMA requests ***
bogdanm 0:9b334a45a8ff 101 =====================
bogdanm 0:9b334a45a8ff 102 [..]
bogdanm 0:9b334a45a8ff 103 A DMA1 request can be generated when an external trigger (but not
bogdanm 0:9b334a45a8ff 104 a software trigger) occurs if DMA1 requests are enabled using
bogdanm 0:9b334a45a8ff 105 HAL_DAC_Start_DMA()
bogdanm 0:9b334a45a8ff 106 [..]
bogdanm 0:9b334a45a8ff 107 DMA1 requests are mapped as following:
bogdanm 0:9b334a45a8ff 108 (#) DAC channel1 : mapped on DMA1 channel3 which must be
bogdanm 0:9b334a45a8ff 109 already configured
bogdanm 0:9b334a45a8ff 110 (#) DAC channel2 : mapped on DMA1 channel4 which must be
bogdanm 0:9b334a45a8ff 111 already configured
bogdanm 0:9b334a45a8ff 112
bogdanm 0:9b334a45a8ff 113 (@) For Dual mode and specific signal (Triangle and noise) generation please
bogdanm 0:9b334a45a8ff 114 refer to Extended Features Driver description
bogdanm 0:9b334a45a8ff 115 STM32F0 devices with one channel (one converting capability) does not
bogdanm 0:9b334a45a8ff 116 support Dual mode and specific signal (Triangle and noise) generation.
bogdanm 0:9b334a45a8ff 117
bogdanm 0:9b334a45a8ff 118 ##### How to use this driver #####
bogdanm 0:9b334a45a8ff 119 ==============================================================================
bogdanm 0:9b334a45a8ff 120 [..]
bogdanm 0:9b334a45a8ff 121 (+) DAC APB clock must be enabled to get write access to DAC
bogdanm 0:9b334a45a8ff 122 registers using HAL_DAC_Init()
bogdanm 0:9b334a45a8ff 123 (+) Configure DAC_OUTx (DAC_OUT1: PA4, DAC_OUT2: PA5) in analog mode.
bogdanm 0:9b334a45a8ff 124 (+) Configure the DAC channel using HAL_DAC_ConfigChannel() function.
bogdanm 0:9b334a45a8ff 125 (+) Enable the DAC channel using HAL_DAC_Start() or HAL_DAC_Start_DMA() functions.
bogdanm 0:9b334a45a8ff 126
bogdanm 0:9b334a45a8ff 127 *** Polling mode IO operation ***
bogdanm 0:9b334a45a8ff 128 =================================
bogdanm 0:9b334a45a8ff 129 [..]
bogdanm 0:9b334a45a8ff 130 (+) Start the DAC peripheral using HAL_DAC_Start()
bogdanm 0:9b334a45a8ff 131 (+) To read the DAC last data output value, use the HAL_DAC_GetValue() function.
bogdanm 0:9b334a45a8ff 132 (+) Stop the DAC peripheral using HAL_DAC_Stop()
bogdanm 0:9b334a45a8ff 133
bogdanm 0:9b334a45a8ff 134 *** DMA mode IO operation ***
bogdanm 0:9b334a45a8ff 135 ==============================
bogdanm 0:9b334a45a8ff 136 [..]
bogdanm 0:9b334a45a8ff 137 (+) Start the DAC peripheral using HAL_DAC_Start_DMA(), at this stage the user specify the length
bogdanm 0:9b334a45a8ff 138 of data to be transferred at each end of conversion
bogdanm 0:9b334a45a8ff 139 (+) At the middle of data transfer HAL_DAC_ConvHalfCpltCallbackCh1() or HAL_DACEx_ConvHalfCpltCallbackCh2()
bogdanm 0:9b334a45a8ff 140 function is executed and user can add his own code by customization of function pointer
bogdanm 0:9b334a45a8ff 141 HAL_DAC_ConvHalfCpltCallbackCh1() or HAL_DACEx_ConvHalfCpltCallbackCh2()
bogdanm 0:9b334a45a8ff 142 (+) At The end of data transfer HAL_DAC_ConvCpltCallbackCh1() or HAL_DACEx_ConvHalfCpltCallbackCh2()
bogdanm 0:9b334a45a8ff 143 function is executed and user can add his own code by customization of function pointer
bogdanm 0:9b334a45a8ff 144 HAL_DAC_ConvCpltCallbackCh1() or HAL_DACEx_ConvHalfCpltCallbackCh2()
bogdanm 0:9b334a45a8ff 145 (+) In case of transfer Error, HAL_DAC_ErrorCallbackCh1() function is executed and user can
bogdanm 0:9b334a45a8ff 146 add his own code by customization of function pointer HAL_DAC_ErrorCallbackCh1
bogdanm 0:9b334a45a8ff 147 (+) In case of DMA underrun, DAC interruption triggers and execute internal function HAL_DAC_IRQHandler.
bogdanm 0:9b334a45a8ff 148 HAL_DAC_DMAUnderrunCallbackCh1() or HAL_DACEx_DMAUnderrunCallbackCh2()
bogdanm 0:9b334a45a8ff 149 function is executed and user can add his own code by customization of function pointer
bogdanm 0:9b334a45a8ff 150 HAL_DAC_DMAUnderrunCallbackCh1() or HAL_DACEx_DMAUnderrunCallbackCh2() and
bogdanm 0:9b334a45a8ff 151 add his own code by customization of function pointer HAL_DAC_ErrorCallbackCh1()
bogdanm 0:9b334a45a8ff 152 (+) Stop the DAC peripheral using HAL_DAC_Stop_DMA()
bogdanm 0:9b334a45a8ff 153
bogdanm 0:9b334a45a8ff 154 *** DAC HAL driver macros list ***
bogdanm 0:9b334a45a8ff 155 =============================================
bogdanm 0:9b334a45a8ff 156 [..]
bogdanm 0:9b334a45a8ff 157 Below the list of most used macros in DAC HAL driver.
bogdanm 0:9b334a45a8ff 158
bogdanm 0:9b334a45a8ff 159 (+) __HAL_DAC_ENABLE : Enable the DAC peripheral
bogdanm 0:9b334a45a8ff 160 (+) __HAL_DAC_DISABLE : Disable the DAC peripheral
bogdanm 0:9b334a45a8ff 161 (+) __HAL_DAC_CLEAR_FLAG: Clear the DAC's pending flags
bogdanm 0:9b334a45a8ff 162 (+) __HAL_DAC_GET_FLAG: Get the selected DAC's flag status
bogdanm 0:9b334a45a8ff 163
bogdanm 0:9b334a45a8ff 164 [..]
bogdanm 0:9b334a45a8ff 165 (@) You can refer to the DAC HAL driver header file for more useful macros
bogdanm 0:9b334a45a8ff 166
bogdanm 0:9b334a45a8ff 167 @endverbatim
bogdanm 0:9b334a45a8ff 168 ******************************************************************************
bogdanm 0:9b334a45a8ff 169 * @attention
bogdanm 0:9b334a45a8ff 170 *
bogdanm 0:9b334a45a8ff 171 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
bogdanm 0:9b334a45a8ff 172 *
bogdanm 0:9b334a45a8ff 173 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 0:9b334a45a8ff 174 * are permitted provided that the following conditions are met:
bogdanm 0:9b334a45a8ff 175 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 0:9b334a45a8ff 176 * this list of conditions and the following disclaimer.
bogdanm 0:9b334a45a8ff 177 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 0:9b334a45a8ff 178 * this list of conditions and the following disclaimer in the documentation
bogdanm 0:9b334a45a8ff 179 * and/or other materials provided with the distribution.
bogdanm 0:9b334a45a8ff 180 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 0:9b334a45a8ff 181 * may be used to endorse or promote products derived from this software
bogdanm 0:9b334a45a8ff 182 * without specific prior written permission.
bogdanm 0:9b334a45a8ff 183 *
bogdanm 0:9b334a45a8ff 184 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 0:9b334a45a8ff 185 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 0:9b334a45a8ff 186 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 0:9b334a45a8ff 187 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 0:9b334a45a8ff 188 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 0:9b334a45a8ff 189 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 0:9b334a45a8ff 190 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 0:9b334a45a8ff 191 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 0:9b334a45a8ff 192 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 0:9b334a45a8ff 193 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 0:9b334a45a8ff 194 *
bogdanm 0:9b334a45a8ff 195 ******************************************************************************
bogdanm 0:9b334a45a8ff 196 */
bogdanm 0:9b334a45a8ff 197
bogdanm 0:9b334a45a8ff 198
bogdanm 0:9b334a45a8ff 199 /* Includes ------------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 200 #include "stm32f0xx_hal.h"
bogdanm 0:9b334a45a8ff 201
bogdanm 0:9b334a45a8ff 202 /** @addtogroup STM32F0xx_HAL_Driver
bogdanm 0:9b334a45a8ff 203 * @{
bogdanm 0:9b334a45a8ff 204 */
bogdanm 0:9b334a45a8ff 205
bogdanm 0:9b334a45a8ff 206 #ifdef HAL_DAC_MODULE_ENABLED
bogdanm 0:9b334a45a8ff 207
bogdanm 0:9b334a45a8ff 208 #if defined(STM32F051x8) || defined(STM32F058xx) || \
bogdanm 0:9b334a45a8ff 209 defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
bogdanm 0:9b334a45a8ff 210 defined(STM32F091xC) || defined (STM32F098xx)
bogdanm 0:9b334a45a8ff 211
bogdanm 0:9b334a45a8ff 212 /** @defgroup DAC DAC
bogdanm 0:9b334a45a8ff 213 * @brief DAC driver modules
bogdanm 0:9b334a45a8ff 214 * @{
bogdanm 0:9b334a45a8ff 215 */
bogdanm 0:9b334a45a8ff 216
bogdanm 0:9b334a45a8ff 217 /* Private typedef -----------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 218 /* Private define ------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 219 /* Private macro -------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 220 /** @defgroup DAC_Private_Macros DAC Private Macros
bogdanm 0:9b334a45a8ff 221 * @{
bogdanm 0:9b334a45a8ff 222 */
bogdanm 0:9b334a45a8ff 223 /**
bogdanm 0:9b334a45a8ff 224 * @}
bogdanm 0:9b334a45a8ff 225 */
bogdanm 0:9b334a45a8ff 226
bogdanm 0:9b334a45a8ff 227 /* Private variables ---------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 228 /* Private function prototypes -----------------------------------------------*/
bogdanm 0:9b334a45a8ff 229 /** @defgroup DAC_Private_Functions DAC Private Functions
bogdanm 0:9b334a45a8ff 230 * @{
bogdanm 0:9b334a45a8ff 231 */
bogdanm 0:9b334a45a8ff 232 /**
bogdanm 0:9b334a45a8ff 233 * @}
bogdanm 0:9b334a45a8ff 234 */
bogdanm 0:9b334a45a8ff 235
bogdanm 0:9b334a45a8ff 236 /* Exported functions -------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 237
bogdanm 0:9b334a45a8ff 238 /** @defgroup DAC_Exported_Functions DAC Exported Functions
bogdanm 0:9b334a45a8ff 239 * @{
bogdanm 0:9b334a45a8ff 240 */
bogdanm 0:9b334a45a8ff 241
bogdanm 0:9b334a45a8ff 242 /** @defgroup DAC_Exported_Functions_Group1 Initialization and de-initialization functions
bogdanm 0:9b334a45a8ff 243 * @brief Initialization and Configuration functions
bogdanm 0:9b334a45a8ff 244 *
bogdanm 0:9b334a45a8ff 245 @verbatim
bogdanm 0:9b334a45a8ff 246 ==============================================================================
bogdanm 0:9b334a45a8ff 247 ##### Initialization and de-initialization functions #####
bogdanm 0:9b334a45a8ff 248 ==============================================================================
bogdanm 0:9b334a45a8ff 249 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 250 (+) Initialize and configure the DAC.
bogdanm 0:9b334a45a8ff 251 (+) De-initialize the DAC.
bogdanm 0:9b334a45a8ff 252
bogdanm 0:9b334a45a8ff 253 @endverbatim
bogdanm 0:9b334a45a8ff 254 * @{
bogdanm 0:9b334a45a8ff 255 */
bogdanm 0:9b334a45a8ff 256
bogdanm 0:9b334a45a8ff 257 /**
bogdanm 0:9b334a45a8ff 258 * @brief Initialize the DAC peripheral according to the specified parameters
bogdanm 0:9b334a45a8ff 259 * in the DAC_InitStruct and initialize the associated handle.
bogdanm 0:9b334a45a8ff 260 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 261 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 262 * @retval HAL status
bogdanm 0:9b334a45a8ff 263 */
bogdanm 0:9b334a45a8ff 264 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 265 {
bogdanm 0:9b334a45a8ff 266 /* Check DAC handle */
bogdanm 0:9b334a45a8ff 267 if(hdac == NULL)
bogdanm 0:9b334a45a8ff 268 {
bogdanm 0:9b334a45a8ff 269 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 270 }
bogdanm 0:9b334a45a8ff 271 /* Check the parameters */
bogdanm 0:9b334a45a8ff 272 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
bogdanm 0:9b334a45a8ff 273
bogdanm 0:9b334a45a8ff 274 if(hdac->State == HAL_DAC_STATE_RESET)
bogdanm 0:9b334a45a8ff 275 {
bogdanm 0:9b334a45a8ff 276 /* Allocate lock resource and initialize it */
bogdanm 0:9b334a45a8ff 277 hdac->Lock = HAL_UNLOCKED;
bogdanm 0:9b334a45a8ff 278
bogdanm 0:9b334a45a8ff 279 /* Init the low level hardware */
bogdanm 0:9b334a45a8ff 280 HAL_DAC_MspInit(hdac);
bogdanm 0:9b334a45a8ff 281 }
bogdanm 0:9b334a45a8ff 282
bogdanm 0:9b334a45a8ff 283 /* Initialize the DAC state*/
bogdanm 0:9b334a45a8ff 284 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 285
bogdanm 0:9b334a45a8ff 286 /* Set DAC error code to none */
bogdanm 0:9b334a45a8ff 287 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
bogdanm 0:9b334a45a8ff 288
bogdanm 0:9b334a45a8ff 289 /* Initialize the DAC state*/
bogdanm 0:9b334a45a8ff 290 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 291
bogdanm 0:9b334a45a8ff 292 /* Return function status */
bogdanm 0:9b334a45a8ff 293 return HAL_OK;
bogdanm 0:9b334a45a8ff 294 }
bogdanm 0:9b334a45a8ff 295
bogdanm 0:9b334a45a8ff 296 /**
bogdanm 0:9b334a45a8ff 297 * @brief Deinitialize the DAC peripheral registers to their default reset values.
bogdanm 0:9b334a45a8ff 298 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 299 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 300 * @retval HAL status
bogdanm 0:9b334a45a8ff 301 */
bogdanm 0:9b334a45a8ff 302 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 303 {
bogdanm 0:9b334a45a8ff 304 /* Check DAC handle */
bogdanm 0:9b334a45a8ff 305 if(hdac == NULL)
bogdanm 0:9b334a45a8ff 306 {
bogdanm 0:9b334a45a8ff 307 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 308 }
bogdanm 0:9b334a45a8ff 309
bogdanm 0:9b334a45a8ff 310 /* Check the parameters */
bogdanm 0:9b334a45a8ff 311 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
bogdanm 0:9b334a45a8ff 312
bogdanm 0:9b334a45a8ff 313 /* Change DAC state */
bogdanm 0:9b334a45a8ff 314 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 315
bogdanm 0:9b334a45a8ff 316 /* DeInit the low level hardware */
bogdanm 0:9b334a45a8ff 317 HAL_DAC_MspDeInit(hdac);
bogdanm 0:9b334a45a8ff 318
bogdanm 0:9b334a45a8ff 319 /* Set DAC error code to none */
bogdanm 0:9b334a45a8ff 320 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
bogdanm 0:9b334a45a8ff 321
bogdanm 0:9b334a45a8ff 322 /* Change DAC state */
bogdanm 0:9b334a45a8ff 323 hdac->State = HAL_DAC_STATE_RESET;
bogdanm 0:9b334a45a8ff 324
bogdanm 0:9b334a45a8ff 325 /* Release Lock */
bogdanm 0:9b334a45a8ff 326 __HAL_UNLOCK(hdac);
bogdanm 0:9b334a45a8ff 327
bogdanm 0:9b334a45a8ff 328 /* Return function status */
bogdanm 0:9b334a45a8ff 329 return HAL_OK;
bogdanm 0:9b334a45a8ff 330 }
bogdanm 0:9b334a45a8ff 331
bogdanm 0:9b334a45a8ff 332 /**
bogdanm 0:9b334a45a8ff 333 * @brief Initialize the DAC MSP.
bogdanm 0:9b334a45a8ff 334 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 335 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 336 * @retval None
bogdanm 0:9b334a45a8ff 337 */
bogdanm 0:9b334a45a8ff 338 __weak void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 339 {
bogdanm 0:9b334a45a8ff 340 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 341 the HAL_DAC_MspInit could be implemented in the user file
bogdanm 0:9b334a45a8ff 342 */
bogdanm 0:9b334a45a8ff 343 }
bogdanm 0:9b334a45a8ff 344
bogdanm 0:9b334a45a8ff 345 /**
bogdanm 0:9b334a45a8ff 346 * @brief DeInitialize the DAC MSP.
bogdanm 0:9b334a45a8ff 347 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 348 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 349 * @retval None
bogdanm 0:9b334a45a8ff 350 */
bogdanm 0:9b334a45a8ff 351 __weak void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 352 {
bogdanm 0:9b334a45a8ff 353 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 354 the HAL_DAC_MspDeInit could be implemented in the user file
bogdanm 0:9b334a45a8ff 355 */
bogdanm 0:9b334a45a8ff 356 }
bogdanm 0:9b334a45a8ff 357
bogdanm 0:9b334a45a8ff 358 /**
bogdanm 0:9b334a45a8ff 359 * @}
bogdanm 0:9b334a45a8ff 360 */
bogdanm 0:9b334a45a8ff 361
bogdanm 0:9b334a45a8ff 362 /** @defgroup DAC_Exported_Functions_Group2 IO operation functions
bogdanm 0:9b334a45a8ff 363 * @brief IO operation functions
bogdanm 0:9b334a45a8ff 364 *
bogdanm 0:9b334a45a8ff 365 @verbatim
bogdanm 0:9b334a45a8ff 366 ==============================================================================
bogdanm 0:9b334a45a8ff 367 ##### IO operation functions #####
bogdanm 0:9b334a45a8ff 368 ==============================================================================
bogdanm 0:9b334a45a8ff 369 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 370 (+) Start conversion.
bogdanm 0:9b334a45a8ff 371 (+) Stop conversion.
bogdanm 0:9b334a45a8ff 372 (+) Start conversion and enable DMA transfer.
bogdanm 0:9b334a45a8ff 373 (+) Stop conversion and disable DMA transfer.
bogdanm 0:9b334a45a8ff 374 (+) Set the specified data holding register value for DAC channel.
bogdanm 0:9b334a45a8ff 375
bogdanm 0:9b334a45a8ff 376 @endverbatim
bogdanm 0:9b334a45a8ff 377 * @{
bogdanm 0:9b334a45a8ff 378 */
bogdanm 0:9b334a45a8ff 379
bogdanm 0:9b334a45a8ff 380 /**
bogdanm 0:9b334a45a8ff 381 * @brief Enables DAC and starts conversion of channel.
bogdanm 0:9b334a45a8ff 382 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 383 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 384 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 385 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 386 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 387 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 388 * @retval HAL status
bogdanm 0:9b334a45a8ff 389 */
bogdanm 0:9b334a45a8ff 390 __weak HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 391 {
bogdanm 0:9b334a45a8ff 392 /* Note : This function is defined into this file for library reference. */
bogdanm 0:9b334a45a8ff 393 /* Function content is located into file stm32f0xx_hal_dac_ex.c */
bogdanm 0:9b334a45a8ff 394
bogdanm 0:9b334a45a8ff 395 /* Return error status as not implemented here */
bogdanm 0:9b334a45a8ff 396 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 397 }
bogdanm 0:9b334a45a8ff 398
bogdanm 0:9b334a45a8ff 399 /**
bogdanm 0:9b334a45a8ff 400 * @brief Disables DAC and stop conversion of channel.
bogdanm 0:9b334a45a8ff 401 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 402 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 403 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 404 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 405 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 406 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 407 * @retval HAL status
bogdanm 0:9b334a45a8ff 408 */
bogdanm 0:9b334a45a8ff 409 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 410 {
bogdanm 0:9b334a45a8ff 411 /* Check the parameters */
bogdanm 0:9b334a45a8ff 412 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 413
bogdanm 0:9b334a45a8ff 414 /* Disable the Peripheral */
bogdanm 0:9b334a45a8ff 415 __HAL_DAC_DISABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 416
bogdanm 0:9b334a45a8ff 417 /* Change DAC state */
bogdanm 0:9b334a45a8ff 418 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 419
bogdanm 0:9b334a45a8ff 420 /* Return function status */
bogdanm 0:9b334a45a8ff 421 return HAL_OK;
bogdanm 0:9b334a45a8ff 422 }
bogdanm 0:9b334a45a8ff 423
bogdanm 0:9b334a45a8ff 424 /**
bogdanm 0:9b334a45a8ff 425 * @brief Enables DAC and starts conversion of channel.
bogdanm 0:9b334a45a8ff 426 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 427 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 428 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 429 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 430 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 431 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 432 * @param pData: The destination peripheral Buffer address.
bogdanm 0:9b334a45a8ff 433 * @param Length: The length of data to be transferred from memory to DAC peripheral
bogdanm 0:9b334a45a8ff 434 * @param Alignment: Specifies the data alignment for DAC channel.
bogdanm 0:9b334a45a8ff 435 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 436 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
bogdanm 0:9b334a45a8ff 437 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
bogdanm 0:9b334a45a8ff 438 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
bogdanm 0:9b334a45a8ff 439 * @retval HAL status
bogdanm 0:9b334a45a8ff 440 */
bogdanm 0:9b334a45a8ff 441 __weak HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment)
bogdanm 0:9b334a45a8ff 442 {
bogdanm 0:9b334a45a8ff 443 /* Note : This function is defined into this file for library reference. */
bogdanm 0:9b334a45a8ff 444 /* Function content is located into file stm32f0xx_hal_dac_ex.c */
bogdanm 0:9b334a45a8ff 445
bogdanm 0:9b334a45a8ff 446 /* Return error status as not implemented here */
bogdanm 0:9b334a45a8ff 447 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 448 }
bogdanm 0:9b334a45a8ff 449
bogdanm 0:9b334a45a8ff 450 /**
bogdanm 0:9b334a45a8ff 451 * @brief Disables DAC and stop conversion of channel.
bogdanm 0:9b334a45a8ff 452 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 453 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 454 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 455 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 456 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 457 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 458 * @retval HAL status
bogdanm 0:9b334a45a8ff 459 */
bogdanm 0:9b334a45a8ff 460 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 461 {
bogdanm 0:9b334a45a8ff 462 HAL_StatusTypeDef status = HAL_OK;
bogdanm 0:9b334a45a8ff 463
bogdanm 0:9b334a45a8ff 464 /* Check the parameters */
bogdanm 0:9b334a45a8ff 465 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 466
bogdanm 0:9b334a45a8ff 467 /* Disable the selected DAC channel DMA request */
bogdanm 0:9b334a45a8ff 468 hdac->Instance->CR &= ~(DAC_CR_DMAEN1 << Channel);
bogdanm 0:9b334a45a8ff 469
bogdanm 0:9b334a45a8ff 470 /* Disable the Peripheral */
bogdanm 0:9b334a45a8ff 471 __HAL_DAC_DISABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 472
bogdanm 0:9b334a45a8ff 473 /* Disable the DMA channel */
bogdanm 0:9b334a45a8ff 474 /* Channel1 is used */
bogdanm 0:9b334a45a8ff 475 if (Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 476 {
bogdanm 0:9b334a45a8ff 477 /* Disable the DMA channel */
bogdanm 0:9b334a45a8ff 478 status = HAL_DMA_Abort(hdac->DMA_Handle1);
bogdanm 0:9b334a45a8ff 479
bogdanm 0:9b334a45a8ff 480 /* Disable the DAC DMA underrun interrupt */
bogdanm 0:9b334a45a8ff 481 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR1);
bogdanm 0:9b334a45a8ff 482 }
bogdanm 0:9b334a45a8ff 483
bogdanm 0:9b334a45a8ff 484 #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
bogdanm 0:9b334a45a8ff 485 defined(STM32F091xC) || defined (STM32F098xx)
bogdanm 0:9b334a45a8ff 486 /* Does not apply to STM32F051x8 & STM32F058xx */
bogdanm 0:9b334a45a8ff 487
bogdanm 0:9b334a45a8ff 488 else /* Channel2 is used for */
bogdanm 0:9b334a45a8ff 489 {
bogdanm 0:9b334a45a8ff 490 /* Disable the DMA channel */
bogdanm 0:9b334a45a8ff 491 status = HAL_DMA_Abort(hdac->DMA_Handle2);
bogdanm 0:9b334a45a8ff 492
bogdanm 0:9b334a45a8ff 493 /* Disable the DAC DMA underrun interrupt */
bogdanm 0:9b334a45a8ff 494 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR2);
bogdanm 0:9b334a45a8ff 495 }
bogdanm 0:9b334a45a8ff 496 #endif /* STM32F071xB || STM32F072xB || STM32F078xx || */
bogdanm 0:9b334a45a8ff 497 /* STM32F091xC || STM32F098xx */
bogdanm 0:9b334a45a8ff 498
bogdanm 0:9b334a45a8ff 499 /* Check if DMA Channel effectively disabled */
bogdanm 0:9b334a45a8ff 500 if (status != HAL_OK)
bogdanm 0:9b334a45a8ff 501 {
bogdanm 0:9b334a45a8ff 502 /* Update DAC state machine to error */
bogdanm 0:9b334a45a8ff 503 hdac->State = HAL_DAC_STATE_ERROR;
bogdanm 0:9b334a45a8ff 504 }
bogdanm 0:9b334a45a8ff 505 else
bogdanm 0:9b334a45a8ff 506 {
bogdanm 0:9b334a45a8ff 507 /* Change DAC state */
bogdanm 0:9b334a45a8ff 508 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 509 }
bogdanm 0:9b334a45a8ff 510
bogdanm 0:9b334a45a8ff 511 /* Return function status */
bogdanm 0:9b334a45a8ff 512 return status;
bogdanm 0:9b334a45a8ff 513 }
bogdanm 0:9b334a45a8ff 514
bogdanm 0:9b334a45a8ff 515 /**
bogdanm 0:9b334a45a8ff 516 * @brief Handles DAC interrupt request
bogdanm 0:9b334a45a8ff 517 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 518 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 519 * @retval None
bogdanm 0:9b334a45a8ff 520 */
bogdanm 0:9b334a45a8ff 521 __weak void HAL_DAC_IRQHandler(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 522 {
bogdanm 0:9b334a45a8ff 523 /* Note : This function is defined into this file for library reference. */
bogdanm 0:9b334a45a8ff 524 /* Function content is located into file stm32f0xx_hal_dac_ex.c */
bogdanm 0:9b334a45a8ff 525 }
bogdanm 0:9b334a45a8ff 526
bogdanm 0:9b334a45a8ff 527 /**
bogdanm 0:9b334a45a8ff 528 * @brief Set the specified data holding register value for DAC channel.
bogdanm 0:9b334a45a8ff 529 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 530 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 531 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 532 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 533 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 534 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 535 * @param Alignment: Specifies the data alignment.
bogdanm 0:9b334a45a8ff 536 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 537 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
bogdanm 0:9b334a45a8ff 538 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
bogdanm 0:9b334a45a8ff 539 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
bogdanm 0:9b334a45a8ff 540 * @param Data: Data to be loaded in the selected data holding register.
bogdanm 0:9b334a45a8ff 541 * @retval HAL status
bogdanm 0:9b334a45a8ff 542 */
bogdanm 0:9b334a45a8ff 543 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
bogdanm 0:9b334a45a8ff 544 {
bogdanm 0:9b334a45a8ff 545 __IO uint32_t tmp = 0;
bogdanm 0:9b334a45a8ff 546
bogdanm 0:9b334a45a8ff 547 /* Check the parameters */
bogdanm 0:9b334a45a8ff 548 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 549 assert_param(IS_DAC_ALIGN(Alignment));
bogdanm 0:9b334a45a8ff 550 assert_param(IS_DAC_DATA(Data));
bogdanm 0:9b334a45a8ff 551
bogdanm 0:9b334a45a8ff 552 tmp = (uint32_t)hdac->Instance;
bogdanm 0:9b334a45a8ff 553 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 554 {
bogdanm 0:9b334a45a8ff 555 tmp += DAC_DHR12R1_ALIGNMENT(Alignment);
bogdanm 0:9b334a45a8ff 556 }
bogdanm 0:9b334a45a8ff 557 else
bogdanm 0:9b334a45a8ff 558 {
bogdanm 0:9b334a45a8ff 559 tmp += DAC_DHR12R2_ALIGNMENT(Alignment);
bogdanm 0:9b334a45a8ff 560 }
bogdanm 0:9b334a45a8ff 561
bogdanm 0:9b334a45a8ff 562 /* Set the DAC channel1 selected data holding register */
bogdanm 0:9b334a45a8ff 563 *(__IO uint32_t *) tmp = Data;
bogdanm 0:9b334a45a8ff 564
bogdanm 0:9b334a45a8ff 565 /* Return function status */
bogdanm 0:9b334a45a8ff 566 return HAL_OK;
bogdanm 0:9b334a45a8ff 567 }
bogdanm 0:9b334a45a8ff 568
bogdanm 0:9b334a45a8ff 569 /**
bogdanm 0:9b334a45a8ff 570 * @brief Conversion complete callback in non blocking mode for Channel1
bogdanm 0:9b334a45a8ff 571 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 572 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 573 * @retval None
bogdanm 0:9b334a45a8ff 574 */
bogdanm 0:9b334a45a8ff 575 __weak void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 576 {
bogdanm 0:9b334a45a8ff 577 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 578 the HAL_DAC_ConvCpltCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 579 */
bogdanm 0:9b334a45a8ff 580 }
bogdanm 0:9b334a45a8ff 581
bogdanm 0:9b334a45a8ff 582 /**
bogdanm 0:9b334a45a8ff 583 * @brief Conversion half DMA transfer callback in non-blocking mode for Channel1
bogdanm 0:9b334a45a8ff 584 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 585 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 586 * @retval None
bogdanm 0:9b334a45a8ff 587 */
bogdanm 0:9b334a45a8ff 588 __weak void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 589 {
bogdanm 0:9b334a45a8ff 590 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 591 the HAL_DAC_ConvHalfCpltCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 592 */
bogdanm 0:9b334a45a8ff 593 }
bogdanm 0:9b334a45a8ff 594
bogdanm 0:9b334a45a8ff 595 /**
bogdanm 0:9b334a45a8ff 596 * @brief Error DAC callback for Channel1.
bogdanm 0:9b334a45a8ff 597 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 598 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 599 * @retval None
bogdanm 0:9b334a45a8ff 600 */
bogdanm 0:9b334a45a8ff 601 __weak void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 602 {
bogdanm 0:9b334a45a8ff 603 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 604 the HAL_DAC_ErrorCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 605 */
bogdanm 0:9b334a45a8ff 606 }
bogdanm 0:9b334a45a8ff 607
bogdanm 0:9b334a45a8ff 608 /**
bogdanm 0:9b334a45a8ff 609 * @brief DMA underrun DAC callback for channel1.
bogdanm 0:9b334a45a8ff 610 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 611 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 612 * @retval None
bogdanm 0:9b334a45a8ff 613 */
bogdanm 0:9b334a45a8ff 614 __weak void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 615 {
bogdanm 0:9b334a45a8ff 616 /* NOTE : This function should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 617 the HAL_DAC_DMAUnderrunCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 618 */
bogdanm 0:9b334a45a8ff 619 }
bogdanm 0:9b334a45a8ff 620
bogdanm 0:9b334a45a8ff 621 /**
bogdanm 0:9b334a45a8ff 622 * @}
bogdanm 0:9b334a45a8ff 623 */
bogdanm 0:9b334a45a8ff 624
bogdanm 0:9b334a45a8ff 625 /** @defgroup DAC_Exported_Functions_Group3 Peripheral Control functions
bogdanm 0:9b334a45a8ff 626 * @brief Peripheral Control functions
bogdanm 0:9b334a45a8ff 627 *
bogdanm 0:9b334a45a8ff 628 @verbatim
bogdanm 0:9b334a45a8ff 629 ==============================================================================
bogdanm 0:9b334a45a8ff 630 ##### Peripheral Control functions #####
bogdanm 0:9b334a45a8ff 631 ==============================================================================
bogdanm 0:9b334a45a8ff 632 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 633 (+) Configure channels.
bogdanm 0:9b334a45a8ff 634 (+) Get result of conversion.
bogdanm 0:9b334a45a8ff 635
bogdanm 0:9b334a45a8ff 636 @endverbatim
bogdanm 0:9b334a45a8ff 637 * @{
bogdanm 0:9b334a45a8ff 638 */
bogdanm 0:9b334a45a8ff 639
bogdanm 0:9b334a45a8ff 640 /**
bogdanm 0:9b334a45a8ff 641 * @brief Returns the last data output value of the selected DAC channel.
bogdanm 0:9b334a45a8ff 642 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 643 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 644 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 645 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 646 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 647 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 648 * @retval The selected DAC channel data output value.
bogdanm 0:9b334a45a8ff 649 */
bogdanm 0:9b334a45a8ff 650 __weak uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 651 {
bogdanm 0:9b334a45a8ff 652 /* Note : This function is defined into this file for library reference. */
bogdanm 0:9b334a45a8ff 653 /* Function content is located into file stm32f0xx_hal_dac_ex.c */
bogdanm 0:9b334a45a8ff 654
bogdanm 0:9b334a45a8ff 655 /* Return error status as not implemented here */
bogdanm 0:9b334a45a8ff 656 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 657 }
bogdanm 0:9b334a45a8ff 658
bogdanm 0:9b334a45a8ff 659 /**
bogdanm 0:9b334a45a8ff 660 * @brief Configures the selected DAC channel.
bogdanm 0:9b334a45a8ff 661 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 662 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 663 * @param sConfig: DAC configuration structure.
bogdanm 0:9b334a45a8ff 664 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 665 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 666 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 667 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 668 * @retval HAL status
bogdanm 0:9b334a45a8ff 669 */
bogdanm 0:9b334a45a8ff 670 __weak HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel)
bogdanm 0:9b334a45a8ff 671 {
bogdanm 0:9b334a45a8ff 672 /* Note : This function is defined into this file for library reference. */
bogdanm 0:9b334a45a8ff 673 /* Function content is located into file stm32f0xx_hal_dac_ex.c */
bogdanm 0:9b334a45a8ff 674
bogdanm 0:9b334a45a8ff 675 /* Return error status as not implemented here */
bogdanm 0:9b334a45a8ff 676 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 677 }
bogdanm 0:9b334a45a8ff 678
bogdanm 0:9b334a45a8ff 679 /**
bogdanm 0:9b334a45a8ff 680 * @}
bogdanm 0:9b334a45a8ff 681 */
bogdanm 0:9b334a45a8ff 682
bogdanm 0:9b334a45a8ff 683 /** @defgroup DAC_Exported_Functions_Group4 Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 684 * @brief Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 685 *
bogdanm 0:9b334a45a8ff 686 @verbatim
bogdanm 0:9b334a45a8ff 687 ==============================================================================
bogdanm 0:9b334a45a8ff 688 ##### Peripheral State and Errors functions #####
bogdanm 0:9b334a45a8ff 689 ==============================================================================
bogdanm 0:9b334a45a8ff 690 [..]
bogdanm 0:9b334a45a8ff 691 This subsection provides functions allowing to
bogdanm 0:9b334a45a8ff 692 (+) Check the DAC state.
bogdanm 0:9b334a45a8ff 693 (+) Check the DAC Errors.
bogdanm 0:9b334a45a8ff 694
bogdanm 0:9b334a45a8ff 695 @endverbatim
bogdanm 0:9b334a45a8ff 696 * @{
bogdanm 0:9b334a45a8ff 697 */
bogdanm 0:9b334a45a8ff 698
bogdanm 0:9b334a45a8ff 699 /**
bogdanm 0:9b334a45a8ff 700 * @brief return the DAC handle state
bogdanm 0:9b334a45a8ff 701 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 702 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 703 * @retval HAL state
bogdanm 0:9b334a45a8ff 704 */
bogdanm 0:9b334a45a8ff 705 HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 706 {
bogdanm 0:9b334a45a8ff 707 /* Return DAC handle state */
bogdanm 0:9b334a45a8ff 708 return hdac->State;
bogdanm 0:9b334a45a8ff 709 }
bogdanm 0:9b334a45a8ff 710
bogdanm 0:9b334a45a8ff 711
bogdanm 0:9b334a45a8ff 712 /**
bogdanm 0:9b334a45a8ff 713 * @brief Return the DAC error code
bogdanm 0:9b334a45a8ff 714 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 715 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 716 * @retval DAC Error Code
bogdanm 0:9b334a45a8ff 717 */
bogdanm 0:9b334a45a8ff 718 uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 719 {
bogdanm 0:9b334a45a8ff 720 return hdac->ErrorCode;
bogdanm 0:9b334a45a8ff 721 }
bogdanm 0:9b334a45a8ff 722
bogdanm 0:9b334a45a8ff 723 /**
bogdanm 0:9b334a45a8ff 724 * @}
bogdanm 0:9b334a45a8ff 725 */
bogdanm 0:9b334a45a8ff 726
bogdanm 0:9b334a45a8ff 727
bogdanm 0:9b334a45a8ff 728 /**
bogdanm 0:9b334a45a8ff 729 * @}
bogdanm 0:9b334a45a8ff 730 */
bogdanm 0:9b334a45a8ff 731
bogdanm 0:9b334a45a8ff 732 /**
bogdanm 0:9b334a45a8ff 733 * @}
bogdanm 0:9b334a45a8ff 734 */
bogdanm 0:9b334a45a8ff 735 #endif /* STM32F051x8 || STM32F058xx || */
bogdanm 0:9b334a45a8ff 736 /* STM32F071xB || STM32F072xB || STM32F078xx || */
bogdanm 0:9b334a45a8ff 737 /* STM32F091xC || STM32F098xx */
bogdanm 0:9b334a45a8ff 738
bogdanm 0:9b334a45a8ff 739 #endif /* HAL_DAC_MODULE_ENABLED */
bogdanm 0:9b334a45a8ff 740
bogdanm 0:9b334a45a8ff 741 /**
bogdanm 0:9b334a45a8ff 742 * @}
bogdanm 0:9b334a45a8ff 743 */
bogdanm 0:9b334a45a8ff 744
bogdanm 0:9b334a45a8ff 745
bogdanm 0:9b334a45a8ff 746 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/