mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 573:ad23fe03a082 1 /**
mbed_official 573:ad23fe03a082 2 ******************************************************************************
mbed_official 573:ad23fe03a082 3 * @file stm32f7xx_hal_dac.c
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief DAC HAL module driver.
mbed_official 573:ad23fe03a082 8 * This file provides firmware functions to manage the following
mbed_official 573:ad23fe03a082 9 * functionalities of the Digital to Analog Converter (DAC) peripheral:
mbed_official 573:ad23fe03a082 10 * + Initialization and de-initialization functions
mbed_official 573:ad23fe03a082 11 * + IO operation functions
mbed_official 573:ad23fe03a082 12 * + Peripheral Control functions
mbed_official 573:ad23fe03a082 13 * + Peripheral State and Errors functions
mbed_official 573:ad23fe03a082 14 *
mbed_official 573:ad23fe03a082 15 *
mbed_official 573:ad23fe03a082 16 @verbatim
mbed_official 573:ad23fe03a082 17 ==============================================================================
mbed_official 573:ad23fe03a082 18 ##### DAC Peripheral features #####
mbed_official 573:ad23fe03a082 19 ==============================================================================
mbed_official 573:ad23fe03a082 20 [..]
mbed_official 573:ad23fe03a082 21 *** DAC Channels ***
mbed_official 573:ad23fe03a082 22 ====================
mbed_official 573:ad23fe03a082 23 [..]
mbed_official 573:ad23fe03a082 24 The device integrates two 12-bit Digital Analog Converters that can
mbed_official 573:ad23fe03a082 25 be used independently or simultaneously (dual mode):
mbed_official 573:ad23fe03a082 26 (#) DAC channel1 with DAC_OUT1 (PA4) as output
mbed_official 573:ad23fe03a082 27 (#) DAC channel2 with DAC_OUT2 (PA5) as output
mbed_official 573:ad23fe03a082 28
mbed_official 573:ad23fe03a082 29 *** DAC Triggers ***
mbed_official 573:ad23fe03a082 30 ====================
mbed_official 573:ad23fe03a082 31 [..]
mbed_official 573:ad23fe03a082 32 Digital to Analog conversion can be non-triggered using DAC_TRIGGER_NONE
mbed_official 573:ad23fe03a082 33 and DAC_OUT1/DAC_OUT2 is available once writing to DHRx register.
mbed_official 573:ad23fe03a082 34 [..]
mbed_official 573:ad23fe03a082 35 Digital to Analog conversion can be triggered by:
mbed_official 573:ad23fe03a082 36 (#) External event: EXTI Line 9 (any GPIOx_Pin9) using DAC_TRIGGER_EXT_IT9.
mbed_official 573:ad23fe03a082 37 The used pin (GPIOx_Pin9) must be configured in input mode.
mbed_official 573:ad23fe03a082 38
mbed_official 573:ad23fe03a082 39 (#) Timers TRGO: TIM2, TIM4, TIM5, TIM6, TIM7 and TIM8
mbed_official 573:ad23fe03a082 40 (DAC_TRIGGER_T2_TRGO, DAC_TRIGGER_T4_TRGO...)
mbed_official 573:ad23fe03a082 41
mbed_official 573:ad23fe03a082 42 (#) Software using DAC_TRIGGER_SOFTWARE
mbed_official 573:ad23fe03a082 43
mbed_official 573:ad23fe03a082 44 *** DAC Buffer mode feature ***
mbed_official 573:ad23fe03a082 45 ===============================
mbed_official 573:ad23fe03a082 46 [..]
mbed_official 573:ad23fe03a082 47 Each DAC channel integrates an output buffer that can be used to
mbed_official 573:ad23fe03a082 48 reduce the output impedance, and to drive external loads directly
mbed_official 573:ad23fe03a082 49 without having to add an external operational amplifier.
mbed_official 573:ad23fe03a082 50 To enable, the output buffer use
mbed_official 573:ad23fe03a082 51 sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
mbed_official 573:ad23fe03a082 52 [..]
mbed_official 573:ad23fe03a082 53 (@) Refer to the device datasheet for more details about output
mbed_official 573:ad23fe03a082 54 impedance value with and without output buffer.
mbed_official 573:ad23fe03a082 55
mbed_official 573:ad23fe03a082 56 *** DAC wave generation feature ***
mbed_official 573:ad23fe03a082 57 ===================================
mbed_official 573:ad23fe03a082 58 [..]
mbed_official 573:ad23fe03a082 59 Both DAC channels can be used to generate
mbed_official 573:ad23fe03a082 60 (#) Noise wave using HAL_DACEx_NoiseWaveGenerate()
mbed_official 573:ad23fe03a082 61 (#) Triangle wave using HAL_DACEx_TriangleWaveGenerate()
mbed_official 573:ad23fe03a082 62
mbed_official 573:ad23fe03a082 63 *** DAC data format ***
mbed_official 573:ad23fe03a082 64 =======================
mbed_official 573:ad23fe03a082 65 [..]
mbed_official 573:ad23fe03a082 66 The DAC data format can be:
mbed_official 573:ad23fe03a082 67 (#) 8-bit right alignment using DAC_ALIGN_8B_R
mbed_official 573:ad23fe03a082 68 (#) 12-bit left alignment using DAC_ALIGN_12B_L
mbed_official 573:ad23fe03a082 69 (#) 12-bit right alignment using DAC_ALIGN_12B_R
mbed_official 573:ad23fe03a082 70
mbed_official 573:ad23fe03a082 71 *** DAC data value to voltage correspondence ***
mbed_official 573:ad23fe03a082 72 ================================================
mbed_official 573:ad23fe03a082 73 [..]
mbed_official 573:ad23fe03a082 74 The analog output voltage on each DAC channel pin is determined
mbed_official 573:ad23fe03a082 75 by the following equation:
mbed_official 573:ad23fe03a082 76 DAC_OUTx = VREF+ * DOR / 4095
mbed_official 573:ad23fe03a082 77 with DOR is the Data Output Register
mbed_official 573:ad23fe03a082 78 VEF+ is the input voltage reference (refer to the device datasheet)
mbed_official 573:ad23fe03a082 79 e.g. To set DAC_OUT1 to 0.7V, use
mbed_official 573:ad23fe03a082 80 Assuming that VREF+ = 3.3V, DAC_OUT1 = (3.3 * 868) / 4095 = 0.7V
mbed_official 573:ad23fe03a082 81
mbed_official 573:ad23fe03a082 82 *** DMA requests ***
mbed_official 573:ad23fe03a082 83 =====================
mbed_official 573:ad23fe03a082 84 [..]
mbed_official 573:ad23fe03a082 85 A DMA1 request can be generated when an external trigger (but not
mbed_official 573:ad23fe03a082 86 a software trigger) occurs if DMA1 requests are enabled using
mbed_official 573:ad23fe03a082 87 HAL_DAC_Start_DMA()
mbed_official 573:ad23fe03a082 88 [..]
mbed_official 573:ad23fe03a082 89 DMA1 requests are mapped as following:
mbed_official 573:ad23fe03a082 90 (#) DAC channel1 : mapped on DMA1 Stream5 channel7 which must be
mbed_official 573:ad23fe03a082 91 already configured
mbed_official 573:ad23fe03a082 92 (#) DAC channel2 : mapped on DMA1 Stream6 channel7 which must be
mbed_official 573:ad23fe03a082 93 already configured
mbed_official 573:ad23fe03a082 94
mbed_official 573:ad23fe03a082 95 -@- For Dual mode and specific signal (Triangle and noise) generation please
mbed_official 573:ad23fe03a082 96 refer to Extension Features Driver description
mbed_official 573:ad23fe03a082 97
mbed_official 573:ad23fe03a082 98
mbed_official 573:ad23fe03a082 99 ##### How to use this driver #####
mbed_official 573:ad23fe03a082 100 ==============================================================================
mbed_official 573:ad23fe03a082 101 [..]
mbed_official 573:ad23fe03a082 102 (+) DAC APB clock must be enabled to get write access to DAC
mbed_official 573:ad23fe03a082 103 registers using HAL_DAC_Init()
mbed_official 573:ad23fe03a082 104 (+) Configure DAC_OUTx (DAC_OUT1: PA4, DAC_OUT2: PA5) in analog mode.
mbed_official 573:ad23fe03a082 105 (+) Configure the DAC channel using HAL_DAC_ConfigChannel() function.
mbed_official 573:ad23fe03a082 106 (+) Enable the DAC channel using HAL_DAC_Start() or HAL_DAC_Start_DMA functions
mbed_official 573:ad23fe03a082 107
mbed_official 573:ad23fe03a082 108 *** Polling mode IO operation ***
mbed_official 573:ad23fe03a082 109 =================================
mbed_official 573:ad23fe03a082 110 [..]
mbed_official 573:ad23fe03a082 111 (+) Start the DAC peripheral using HAL_DAC_Start()
mbed_official 573:ad23fe03a082 112 (+) To read the DAC last data output value, use the HAL_DAC_GetValue() function.
mbed_official 573:ad23fe03a082 113 (+) Stop the DAC peripheral using HAL_DAC_Stop()
mbed_official 573:ad23fe03a082 114
mbed_official 573:ad23fe03a082 115
mbed_official 573:ad23fe03a082 116 *** DMA mode IO operation ***
mbed_official 573:ad23fe03a082 117 ==============================
mbed_official 573:ad23fe03a082 118 [..]
mbed_official 573:ad23fe03a082 119 (+) Start the DAC peripheral using HAL_DAC_Start_DMA(), at this stage the user specify the length
mbed_official 573:ad23fe03a082 120 of data to be transferred at each end of conversion
mbed_official 573:ad23fe03a082 121 (+) At The end of data transfer HAL_DAC_ConvCpltCallbackCh1()or HAL_DAC_ConvCpltCallbackCh2()
mbed_official 573:ad23fe03a082 122 function is executed and user can add his own code by customization of function pointer
mbed_official 573:ad23fe03a082 123 HAL_DAC_ConvCpltCallbackCh1 or HAL_DAC_ConvCpltCallbackCh2
mbed_official 573:ad23fe03a082 124 (+) In case of transfer Error, HAL_DAC_ErrorCallbackCh1() function is executed and user can
mbed_official 573:ad23fe03a082 125 add his own code by customization of function pointer HAL_DAC_ErrorCallbackCh1
mbed_official 573:ad23fe03a082 126 (+) Stop the DAC peripheral using HAL_DAC_Stop_DMA()
mbed_official 573:ad23fe03a082 127
mbed_official 573:ad23fe03a082 128
mbed_official 573:ad23fe03a082 129 *** DAC HAL driver macros list ***
mbed_official 573:ad23fe03a082 130 =============================================
mbed_official 573:ad23fe03a082 131 [..]
mbed_official 573:ad23fe03a082 132 Below the list of most used macros in DAC HAL driver.
mbed_official 573:ad23fe03a082 133
mbed_official 573:ad23fe03a082 134 (+) __HAL_DAC_ENABLE : Enable the DAC peripheral
mbed_official 573:ad23fe03a082 135 (+) __HAL_DAC_DISABLE : Disable the DAC peripheral
mbed_official 573:ad23fe03a082 136 (+) __HAL_DAC_CLEAR_FLAG: Clear the DAC's pending flags
mbed_official 573:ad23fe03a082 137 (+) __HAL_DAC_GET_FLAG: Get the selected DAC's flag status
mbed_official 573:ad23fe03a082 138
mbed_official 573:ad23fe03a082 139 [..]
mbed_official 573:ad23fe03a082 140 (@) You can refer to the DAC HAL driver header file for more useful macros
mbed_official 573:ad23fe03a082 141
mbed_official 573:ad23fe03a082 142 @endverbatim
mbed_official 573:ad23fe03a082 143 ******************************************************************************
mbed_official 573:ad23fe03a082 144 * @attention
mbed_official 573:ad23fe03a082 145 *
mbed_official 573:ad23fe03a082 146 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 573:ad23fe03a082 147 *
mbed_official 573:ad23fe03a082 148 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 573:ad23fe03a082 149 * are permitted provided that the following conditions are met:
mbed_official 573:ad23fe03a082 150 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 573:ad23fe03a082 151 * this list of conditions and the following disclaimer.
mbed_official 573:ad23fe03a082 152 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 573:ad23fe03a082 153 * this list of conditions and the following disclaimer in the documentation
mbed_official 573:ad23fe03a082 154 * and/or other materials provided with the distribution.
mbed_official 573:ad23fe03a082 155 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 573:ad23fe03a082 156 * may be used to endorse or promote products derived from this software
mbed_official 573:ad23fe03a082 157 * without specific prior written permission.
mbed_official 573:ad23fe03a082 158 *
mbed_official 573:ad23fe03a082 159 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 573:ad23fe03a082 160 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 573:ad23fe03a082 161 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 573:ad23fe03a082 162 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 573:ad23fe03a082 163 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 573:ad23fe03a082 164 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 573:ad23fe03a082 165 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 573:ad23fe03a082 166 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 573:ad23fe03a082 167 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 573:ad23fe03a082 168 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 573:ad23fe03a082 169 *
mbed_official 573:ad23fe03a082 170 ******************************************************************************
mbed_official 573:ad23fe03a082 171 */
mbed_official 573:ad23fe03a082 172
mbed_official 573:ad23fe03a082 173
mbed_official 573:ad23fe03a082 174 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 175 #include "stm32f7xx_hal.h"
mbed_official 573:ad23fe03a082 176
mbed_official 573:ad23fe03a082 177 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 178 * @{
mbed_official 573:ad23fe03a082 179 */
mbed_official 573:ad23fe03a082 180
mbed_official 573:ad23fe03a082 181 /** @defgroup DAC DAC
mbed_official 573:ad23fe03a082 182 * @brief DAC driver modules
mbed_official 573:ad23fe03a082 183 * @{
mbed_official 573:ad23fe03a082 184 */
mbed_official 573:ad23fe03a082 185
mbed_official 573:ad23fe03a082 186 #ifdef HAL_DAC_MODULE_ENABLED
mbed_official 573:ad23fe03a082 187
mbed_official 573:ad23fe03a082 188 /* Private typedef -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 189 /* Private define ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 190 /* Private macro -------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 191 /* Private variables ---------------------------------------------------------*/
mbed_official 573:ad23fe03a082 192 /** @addtogroup DAC_Private_Functions
mbed_official 573:ad23fe03a082 193 * @{
mbed_official 573:ad23fe03a082 194 */
mbed_official 573:ad23fe03a082 195 /* Private function prototypes -----------------------------------------------*/
mbed_official 573:ad23fe03a082 196 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
mbed_official 573:ad23fe03a082 197 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
mbed_official 573:ad23fe03a082 198 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
mbed_official 573:ad23fe03a082 199 /**
mbed_official 573:ad23fe03a082 200 * @}
mbed_official 573:ad23fe03a082 201 */
mbed_official 573:ad23fe03a082 202
mbed_official 573:ad23fe03a082 203 /* Exported functions --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 204 /** @defgroup DAC_Exported_Functions DAC Exported Functions
mbed_official 573:ad23fe03a082 205 * @{
mbed_official 573:ad23fe03a082 206 */
mbed_official 573:ad23fe03a082 207
mbed_official 573:ad23fe03a082 208 /** @defgroup DAC_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 573:ad23fe03a082 209 * @brief Initialization and Configuration functions
mbed_official 573:ad23fe03a082 210 *
mbed_official 573:ad23fe03a082 211 @verbatim
mbed_official 573:ad23fe03a082 212 ==============================================================================
mbed_official 573:ad23fe03a082 213 ##### Initialization and de-initialization functions #####
mbed_official 573:ad23fe03a082 214 ==============================================================================
mbed_official 573:ad23fe03a082 215 [..] This section provides functions allowing to:
mbed_official 573:ad23fe03a082 216 (+) Initialize and configure the DAC.
mbed_official 573:ad23fe03a082 217 (+) De-initialize the DAC.
mbed_official 573:ad23fe03a082 218
mbed_official 573:ad23fe03a082 219 @endverbatim
mbed_official 573:ad23fe03a082 220 * @{
mbed_official 573:ad23fe03a082 221 */
mbed_official 573:ad23fe03a082 222
mbed_official 573:ad23fe03a082 223 /**
mbed_official 573:ad23fe03a082 224 * @brief Initializes the DAC peripheral according to the specified parameters
mbed_official 573:ad23fe03a082 225 * in the DAC_InitStruct.
mbed_official 573:ad23fe03a082 226 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 227 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 228 * @retval HAL status
mbed_official 573:ad23fe03a082 229 */
mbed_official 573:ad23fe03a082 230 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 231 {
mbed_official 573:ad23fe03a082 232 /* Check DAC handle */
mbed_official 573:ad23fe03a082 233 if(hdac == NULL)
mbed_official 573:ad23fe03a082 234 {
mbed_official 573:ad23fe03a082 235 return HAL_ERROR;
mbed_official 573:ad23fe03a082 236 }
mbed_official 573:ad23fe03a082 237 /* Check the parameters */
mbed_official 573:ad23fe03a082 238 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
mbed_official 573:ad23fe03a082 239
mbed_official 573:ad23fe03a082 240 if(hdac->State == HAL_DAC_STATE_RESET)
mbed_official 573:ad23fe03a082 241 {
mbed_official 573:ad23fe03a082 242 /* Allocate lock resource and initialize it */
mbed_official 573:ad23fe03a082 243 hdac->Lock = HAL_UNLOCKED;
mbed_official 573:ad23fe03a082 244 /* Init the low level hardware */
mbed_official 573:ad23fe03a082 245 HAL_DAC_MspInit(hdac);
mbed_official 573:ad23fe03a082 246 }
mbed_official 573:ad23fe03a082 247
mbed_official 573:ad23fe03a082 248 /* Initialize the DAC state*/
mbed_official 573:ad23fe03a082 249 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 573:ad23fe03a082 250
mbed_official 573:ad23fe03a082 251 /* Set DAC error code to none */
mbed_official 573:ad23fe03a082 252 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
mbed_official 573:ad23fe03a082 253
mbed_official 573:ad23fe03a082 254 /* Initialize the DAC state*/
mbed_official 573:ad23fe03a082 255 hdac->State = HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 256
mbed_official 573:ad23fe03a082 257 /* Return function status */
mbed_official 573:ad23fe03a082 258 return HAL_OK;
mbed_official 573:ad23fe03a082 259 }
mbed_official 573:ad23fe03a082 260
mbed_official 573:ad23fe03a082 261 /**
mbed_official 573:ad23fe03a082 262 * @brief Deinitializes the DAC peripheral registers to their default reset values.
mbed_official 573:ad23fe03a082 263 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 264 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 265 * @retval HAL status
mbed_official 573:ad23fe03a082 266 */
mbed_official 573:ad23fe03a082 267 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 268 {
mbed_official 573:ad23fe03a082 269 /* Check DAC handle */
mbed_official 573:ad23fe03a082 270 if(hdac == NULL)
mbed_official 573:ad23fe03a082 271 {
mbed_official 573:ad23fe03a082 272 return HAL_ERROR;
mbed_official 573:ad23fe03a082 273 }
mbed_official 573:ad23fe03a082 274
mbed_official 573:ad23fe03a082 275 /* Check the parameters */
mbed_official 573:ad23fe03a082 276 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
mbed_official 573:ad23fe03a082 277
mbed_official 573:ad23fe03a082 278 /* Change DAC state */
mbed_official 573:ad23fe03a082 279 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 573:ad23fe03a082 280
mbed_official 573:ad23fe03a082 281 /* DeInit the low level hardware */
mbed_official 573:ad23fe03a082 282 HAL_DAC_MspDeInit(hdac);
mbed_official 573:ad23fe03a082 283
mbed_official 573:ad23fe03a082 284 /* Set DAC error code to none */
mbed_official 573:ad23fe03a082 285 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
mbed_official 573:ad23fe03a082 286
mbed_official 573:ad23fe03a082 287 /* Change DAC state */
mbed_official 573:ad23fe03a082 288 hdac->State = HAL_DAC_STATE_RESET;
mbed_official 573:ad23fe03a082 289
mbed_official 573:ad23fe03a082 290 /* Release Lock */
mbed_official 573:ad23fe03a082 291 __HAL_UNLOCK(hdac);
mbed_official 573:ad23fe03a082 292
mbed_official 573:ad23fe03a082 293 /* Return function status */
mbed_official 573:ad23fe03a082 294 return HAL_OK;
mbed_official 573:ad23fe03a082 295 }
mbed_official 573:ad23fe03a082 296
mbed_official 573:ad23fe03a082 297 /**
mbed_official 573:ad23fe03a082 298 * @brief Initializes the DAC MSP.
mbed_official 573:ad23fe03a082 299 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 300 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 301 * @retval None
mbed_official 573:ad23fe03a082 302 */
mbed_official 573:ad23fe03a082 303 __weak void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 304 {
mbed_official 573:ad23fe03a082 305 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 306 the HAL_DAC_MspInit could be implemented in the user file
mbed_official 573:ad23fe03a082 307 */
mbed_official 573:ad23fe03a082 308 }
mbed_official 573:ad23fe03a082 309
mbed_official 573:ad23fe03a082 310 /**
mbed_official 573:ad23fe03a082 311 * @brief DeInitializes the DAC MSP.
mbed_official 573:ad23fe03a082 312 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 313 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 314 * @retval None
mbed_official 573:ad23fe03a082 315 */
mbed_official 573:ad23fe03a082 316 __weak void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 317 {
mbed_official 573:ad23fe03a082 318 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 319 the HAL_DAC_MspDeInit could be implemented in the user file
mbed_official 573:ad23fe03a082 320 */
mbed_official 573:ad23fe03a082 321 }
mbed_official 573:ad23fe03a082 322
mbed_official 573:ad23fe03a082 323 /**
mbed_official 573:ad23fe03a082 324 * @}
mbed_official 573:ad23fe03a082 325 */
mbed_official 573:ad23fe03a082 326
mbed_official 573:ad23fe03a082 327 /** @defgroup DAC_Exported_Functions_Group2 IO operation functions
mbed_official 573:ad23fe03a082 328 * @brief IO operation functions
mbed_official 573:ad23fe03a082 329 *
mbed_official 573:ad23fe03a082 330 @verbatim
mbed_official 573:ad23fe03a082 331 ==============================================================================
mbed_official 573:ad23fe03a082 332 ##### IO operation functions #####
mbed_official 573:ad23fe03a082 333 ==============================================================================
mbed_official 573:ad23fe03a082 334 [..] This section provides functions allowing to:
mbed_official 573:ad23fe03a082 335 (+) Start conversion.
mbed_official 573:ad23fe03a082 336 (+) Stop conversion.
mbed_official 573:ad23fe03a082 337 (+) Start conversion and enable DMA transfer.
mbed_official 573:ad23fe03a082 338 (+) Stop conversion and disable DMA transfer.
mbed_official 573:ad23fe03a082 339 (+) Get result of conversion.
mbed_official 573:ad23fe03a082 340
mbed_official 573:ad23fe03a082 341 @endverbatim
mbed_official 573:ad23fe03a082 342 * @{
mbed_official 573:ad23fe03a082 343 */
mbed_official 573:ad23fe03a082 344
mbed_official 573:ad23fe03a082 345 /**
mbed_official 573:ad23fe03a082 346 * @brief Enables DAC and starts conversion of channel.
mbed_official 573:ad23fe03a082 347 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 348 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 349 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 350 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 351 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 352 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 353 * @retval HAL status
mbed_official 573:ad23fe03a082 354 */
mbed_official 573:ad23fe03a082 355 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel)
mbed_official 573:ad23fe03a082 356 {
mbed_official 573:ad23fe03a082 357 uint32_t tmp1 = 0, tmp2 = 0;
mbed_official 573:ad23fe03a082 358
mbed_official 573:ad23fe03a082 359 /* Check the parameters */
mbed_official 573:ad23fe03a082 360 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 361
mbed_official 573:ad23fe03a082 362 /* Process locked */
mbed_official 573:ad23fe03a082 363 __HAL_LOCK(hdac);
mbed_official 573:ad23fe03a082 364
mbed_official 573:ad23fe03a082 365 /* Change DAC state */
mbed_official 573:ad23fe03a082 366 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 573:ad23fe03a082 367
mbed_official 573:ad23fe03a082 368 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 369 __HAL_DAC_ENABLE(hdac, Channel);
mbed_official 573:ad23fe03a082 370
mbed_official 573:ad23fe03a082 371 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 372 {
mbed_official 573:ad23fe03a082 373 tmp1 = hdac->Instance->CR & DAC_CR_TEN1;
mbed_official 573:ad23fe03a082 374 tmp2 = hdac->Instance->CR & DAC_CR_TSEL1;
mbed_official 573:ad23fe03a082 375 /* Check if software trigger enabled */
mbed_official 573:ad23fe03a082 376 if((tmp1 == DAC_CR_TEN1) && (tmp2 == DAC_CR_TSEL1))
mbed_official 573:ad23fe03a082 377 {
mbed_official 573:ad23fe03a082 378 /* Enable the selected DAC software conversion */
mbed_official 573:ad23fe03a082 379 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1;
mbed_official 573:ad23fe03a082 380 }
mbed_official 573:ad23fe03a082 381 }
mbed_official 573:ad23fe03a082 382 else
mbed_official 573:ad23fe03a082 383 {
mbed_official 573:ad23fe03a082 384 tmp1 = hdac->Instance->CR & DAC_CR_TEN2;
mbed_official 573:ad23fe03a082 385 tmp2 = hdac->Instance->CR & DAC_CR_TSEL2;
mbed_official 573:ad23fe03a082 386 /* Check if software trigger enabled */
mbed_official 573:ad23fe03a082 387 if((tmp1 == DAC_CR_TEN2) && (tmp2 == DAC_CR_TSEL2))
mbed_official 573:ad23fe03a082 388 {
mbed_official 573:ad23fe03a082 389 /* Enable the selected DAC software conversion*/
mbed_official 573:ad23fe03a082 390 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG2;
mbed_official 573:ad23fe03a082 391 }
mbed_official 573:ad23fe03a082 392 }
mbed_official 573:ad23fe03a082 393
mbed_official 573:ad23fe03a082 394 /* Change DAC state */
mbed_official 573:ad23fe03a082 395 hdac->State = HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 396
mbed_official 573:ad23fe03a082 397 /* Process unlocked */
mbed_official 573:ad23fe03a082 398 __HAL_UNLOCK(hdac);
mbed_official 573:ad23fe03a082 399
mbed_official 573:ad23fe03a082 400 /* Return function status */
mbed_official 573:ad23fe03a082 401 return HAL_OK;
mbed_official 573:ad23fe03a082 402 }
mbed_official 573:ad23fe03a082 403
mbed_official 573:ad23fe03a082 404 /**
mbed_official 573:ad23fe03a082 405 * @brief Disables DAC and stop conversion of channel.
mbed_official 573:ad23fe03a082 406 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 407 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 408 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 409 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 410 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 411 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 412 * @retval HAL status
mbed_official 573:ad23fe03a082 413 */
mbed_official 573:ad23fe03a082 414 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel)
mbed_official 573:ad23fe03a082 415 {
mbed_official 573:ad23fe03a082 416 /* Check the parameters */
mbed_official 573:ad23fe03a082 417 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 418
mbed_official 573:ad23fe03a082 419 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 420 __HAL_DAC_DISABLE(hdac, Channel);
mbed_official 573:ad23fe03a082 421
mbed_official 573:ad23fe03a082 422 /* Change DAC state */
mbed_official 573:ad23fe03a082 423 hdac->State = HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 424
mbed_official 573:ad23fe03a082 425 /* Return function status */
mbed_official 573:ad23fe03a082 426 return HAL_OK;
mbed_official 573:ad23fe03a082 427 }
mbed_official 573:ad23fe03a082 428
mbed_official 573:ad23fe03a082 429 /**
mbed_official 573:ad23fe03a082 430 * @brief Enables DAC and starts conversion of channel.
mbed_official 573:ad23fe03a082 431 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 432 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 433 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 434 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 435 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 436 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 437 * @param pData: The destination peripheral Buffer address.
mbed_official 573:ad23fe03a082 438 * @param Length: The length of data to be transferred from memory to DAC peripheral
mbed_official 573:ad23fe03a082 439 * @param Alignment: Specifies the data alignment for DAC channel.
mbed_official 573:ad23fe03a082 440 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 441 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
mbed_official 573:ad23fe03a082 442 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
mbed_official 573:ad23fe03a082 443 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
mbed_official 573:ad23fe03a082 444 * @retval HAL status
mbed_official 573:ad23fe03a082 445 */
mbed_official 573:ad23fe03a082 446 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment)
mbed_official 573:ad23fe03a082 447 {
mbed_official 573:ad23fe03a082 448 uint32_t tmpreg = 0;
mbed_official 573:ad23fe03a082 449
mbed_official 573:ad23fe03a082 450 /* Check the parameters */
mbed_official 573:ad23fe03a082 451 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 452 assert_param(IS_DAC_ALIGN(Alignment));
mbed_official 573:ad23fe03a082 453
mbed_official 573:ad23fe03a082 454 /* Process locked */
mbed_official 573:ad23fe03a082 455 __HAL_LOCK(hdac);
mbed_official 573:ad23fe03a082 456
mbed_official 573:ad23fe03a082 457 /* Change DAC state */
mbed_official 573:ad23fe03a082 458 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 573:ad23fe03a082 459
mbed_official 573:ad23fe03a082 460 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 461 {
mbed_official 573:ad23fe03a082 462 /* Set the DMA transfer complete callback for channel1 */
mbed_official 573:ad23fe03a082 463 hdac->DMA_Handle1->XferCpltCallback = DAC_DMAConvCpltCh1;
mbed_official 573:ad23fe03a082 464
mbed_official 573:ad23fe03a082 465 /* Set the DMA half transfer complete callback for channel1 */
mbed_official 573:ad23fe03a082 466 hdac->DMA_Handle1->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh1;
mbed_official 573:ad23fe03a082 467
mbed_official 573:ad23fe03a082 468 /* Set the DMA error callback for channel1 */
mbed_official 573:ad23fe03a082 469 hdac->DMA_Handle1->XferErrorCallback = DAC_DMAErrorCh1;
mbed_official 573:ad23fe03a082 470
mbed_official 573:ad23fe03a082 471 /* Enable the selected DAC channel1 DMA request */
mbed_official 573:ad23fe03a082 472 hdac->Instance->CR |= DAC_CR_DMAEN1;
mbed_official 573:ad23fe03a082 473
mbed_official 573:ad23fe03a082 474 /* Case of use of channel 1 */
mbed_official 573:ad23fe03a082 475 switch(Alignment)
mbed_official 573:ad23fe03a082 476 {
mbed_official 573:ad23fe03a082 477 case DAC_ALIGN_12B_R:
mbed_official 573:ad23fe03a082 478 /* Get DHR12R1 address */
mbed_official 573:ad23fe03a082 479 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
mbed_official 573:ad23fe03a082 480 break;
mbed_official 573:ad23fe03a082 481 case DAC_ALIGN_12B_L:
mbed_official 573:ad23fe03a082 482 /* Get DHR12L1 address */
mbed_official 573:ad23fe03a082 483 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
mbed_official 573:ad23fe03a082 484 break;
mbed_official 573:ad23fe03a082 485 case DAC_ALIGN_8B_R:
mbed_official 573:ad23fe03a082 486 /* Get DHR8R1 address */
mbed_official 573:ad23fe03a082 487 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
mbed_official 573:ad23fe03a082 488 break;
mbed_official 573:ad23fe03a082 489 default:
mbed_official 573:ad23fe03a082 490 break;
mbed_official 573:ad23fe03a082 491 }
mbed_official 573:ad23fe03a082 492 }
mbed_official 573:ad23fe03a082 493 else
mbed_official 573:ad23fe03a082 494 {
mbed_official 573:ad23fe03a082 495 /* Set the DMA transfer complete callback for channel2 */
mbed_official 573:ad23fe03a082 496 hdac->DMA_Handle2->XferCpltCallback = DAC_DMAConvCpltCh2;
mbed_official 573:ad23fe03a082 497
mbed_official 573:ad23fe03a082 498 /* Set the DMA half transfer complete callback for channel2 */
mbed_official 573:ad23fe03a082 499 hdac->DMA_Handle2->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh2;
mbed_official 573:ad23fe03a082 500
mbed_official 573:ad23fe03a082 501 /* Set the DMA error callback for channel2 */
mbed_official 573:ad23fe03a082 502 hdac->DMA_Handle2->XferErrorCallback = DAC_DMAErrorCh2;
mbed_official 573:ad23fe03a082 503
mbed_official 573:ad23fe03a082 504 /* Enable the selected DAC channel2 DMA request */
mbed_official 573:ad23fe03a082 505 hdac->Instance->CR |= DAC_CR_DMAEN2;
mbed_official 573:ad23fe03a082 506
mbed_official 573:ad23fe03a082 507 /* Case of use of channel 2 */
mbed_official 573:ad23fe03a082 508 switch(Alignment)
mbed_official 573:ad23fe03a082 509 {
mbed_official 573:ad23fe03a082 510 case DAC_ALIGN_12B_R:
mbed_official 573:ad23fe03a082 511 /* Get DHR12R2 address */
mbed_official 573:ad23fe03a082 512 tmpreg = (uint32_t)&hdac->Instance->DHR12R2;
mbed_official 573:ad23fe03a082 513 break;
mbed_official 573:ad23fe03a082 514 case DAC_ALIGN_12B_L:
mbed_official 573:ad23fe03a082 515 /* Get DHR12L2 address */
mbed_official 573:ad23fe03a082 516 tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
mbed_official 573:ad23fe03a082 517 break;
mbed_official 573:ad23fe03a082 518 case DAC_ALIGN_8B_R:
mbed_official 573:ad23fe03a082 519 /* Get DHR8R2 address */
mbed_official 573:ad23fe03a082 520 tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
mbed_official 573:ad23fe03a082 521 break;
mbed_official 573:ad23fe03a082 522 default:
mbed_official 573:ad23fe03a082 523 break;
mbed_official 573:ad23fe03a082 524 }
mbed_official 573:ad23fe03a082 525 }
mbed_official 573:ad23fe03a082 526
mbed_official 573:ad23fe03a082 527 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 528 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 529 {
mbed_official 573:ad23fe03a082 530 /* Enable the DAC DMA underrun interrupt */
mbed_official 573:ad23fe03a082 531 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
mbed_official 573:ad23fe03a082 532
mbed_official 573:ad23fe03a082 533 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 534 HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
mbed_official 573:ad23fe03a082 535 }
mbed_official 573:ad23fe03a082 536 else
mbed_official 573:ad23fe03a082 537 {
mbed_official 573:ad23fe03a082 538 /* Enable the DAC DMA underrun interrupt */
mbed_official 573:ad23fe03a082 539 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR2);
mbed_official 573:ad23fe03a082 540
mbed_official 573:ad23fe03a082 541 /* Enable the DMA Stream */
mbed_official 573:ad23fe03a082 542 HAL_DMA_Start_IT(hdac->DMA_Handle2, (uint32_t)pData, tmpreg, Length);
mbed_official 573:ad23fe03a082 543 }
mbed_official 573:ad23fe03a082 544
mbed_official 573:ad23fe03a082 545 /* Enable the Peripheral */
mbed_official 573:ad23fe03a082 546 __HAL_DAC_ENABLE(hdac, Channel);
mbed_official 573:ad23fe03a082 547
mbed_official 573:ad23fe03a082 548 /* Process Unlocked */
mbed_official 573:ad23fe03a082 549 __HAL_UNLOCK(hdac);
mbed_official 573:ad23fe03a082 550
mbed_official 573:ad23fe03a082 551 /* Return function status */
mbed_official 573:ad23fe03a082 552 return HAL_OK;
mbed_official 573:ad23fe03a082 553 }
mbed_official 573:ad23fe03a082 554
mbed_official 573:ad23fe03a082 555 /**
mbed_official 573:ad23fe03a082 556 * @brief Disables DAC and stop conversion of channel.
mbed_official 573:ad23fe03a082 557 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 558 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 559 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 560 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 561 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 562 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 563 * @retval HAL status
mbed_official 573:ad23fe03a082 564 */
mbed_official 573:ad23fe03a082 565 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel)
mbed_official 573:ad23fe03a082 566 {
mbed_official 573:ad23fe03a082 567 HAL_StatusTypeDef status = HAL_OK;
mbed_official 573:ad23fe03a082 568
mbed_official 573:ad23fe03a082 569 /* Check the parameters */
mbed_official 573:ad23fe03a082 570 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 571
mbed_official 573:ad23fe03a082 572 /* Disable the selected DAC channel DMA request */
mbed_official 573:ad23fe03a082 573 hdac->Instance->CR &= ~(DAC_CR_DMAEN1 << Channel);
mbed_official 573:ad23fe03a082 574
mbed_official 573:ad23fe03a082 575 /* Disable the Peripheral */
mbed_official 573:ad23fe03a082 576 __HAL_DAC_DISABLE(hdac, Channel);
mbed_official 573:ad23fe03a082 577
mbed_official 573:ad23fe03a082 578 /* Disable the DMA Channel */
mbed_official 573:ad23fe03a082 579 /* Channel1 is used */
mbed_official 573:ad23fe03a082 580 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 581 {
mbed_official 573:ad23fe03a082 582 status = HAL_DMA_Abort(hdac->DMA_Handle1);
mbed_official 573:ad23fe03a082 583 }
mbed_official 573:ad23fe03a082 584 else /* Channel2 is used for */
mbed_official 573:ad23fe03a082 585 {
mbed_official 573:ad23fe03a082 586 status = HAL_DMA_Abort(hdac->DMA_Handle2);
mbed_official 573:ad23fe03a082 587 }
mbed_official 573:ad23fe03a082 588
mbed_official 573:ad23fe03a082 589 /* Check if DMA Channel effectively disabled */
mbed_official 573:ad23fe03a082 590 if(status != HAL_OK)
mbed_official 573:ad23fe03a082 591 {
mbed_official 573:ad23fe03a082 592 /* Update DAC state machine to error */
mbed_official 573:ad23fe03a082 593 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 573:ad23fe03a082 594 }
mbed_official 573:ad23fe03a082 595 else
mbed_official 573:ad23fe03a082 596 {
mbed_official 573:ad23fe03a082 597 /* Change DAC state */
mbed_official 573:ad23fe03a082 598 hdac->State = HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 599 }
mbed_official 573:ad23fe03a082 600
mbed_official 573:ad23fe03a082 601 /* Return function status */
mbed_official 573:ad23fe03a082 602 return status;
mbed_official 573:ad23fe03a082 603 }
mbed_official 573:ad23fe03a082 604
mbed_official 573:ad23fe03a082 605 /**
mbed_official 573:ad23fe03a082 606 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 573:ad23fe03a082 607 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 608 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 609 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 610 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 611 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 612 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 613 * @retval The selected DAC channel data output value.
mbed_official 573:ad23fe03a082 614 */
mbed_official 573:ad23fe03a082 615 uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel)
mbed_official 573:ad23fe03a082 616 {
mbed_official 573:ad23fe03a082 617 /* Check the parameters */
mbed_official 573:ad23fe03a082 618 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 619
mbed_official 573:ad23fe03a082 620 /* Returns the DAC channel data output register value */
mbed_official 573:ad23fe03a082 621 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 622 {
mbed_official 573:ad23fe03a082 623 return hdac->Instance->DOR1;
mbed_official 573:ad23fe03a082 624 }
mbed_official 573:ad23fe03a082 625 else
mbed_official 573:ad23fe03a082 626 {
mbed_official 573:ad23fe03a082 627 return hdac->Instance->DOR2;
mbed_official 573:ad23fe03a082 628 }
mbed_official 573:ad23fe03a082 629 }
mbed_official 573:ad23fe03a082 630
mbed_official 573:ad23fe03a082 631 /**
mbed_official 573:ad23fe03a082 632 * @brief Handles DAC interrupt request
mbed_official 573:ad23fe03a082 633 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 634 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 635 * @retval None
mbed_official 573:ad23fe03a082 636 */
mbed_official 573:ad23fe03a082 637 void HAL_DAC_IRQHandler(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 638 {
mbed_official 573:ad23fe03a082 639 /* Check underrun channel 1 flag */
mbed_official 573:ad23fe03a082 640 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR1))
mbed_official 573:ad23fe03a082 641 {
mbed_official 573:ad23fe03a082 642 /* Change DAC state to error state */
mbed_official 573:ad23fe03a082 643 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 573:ad23fe03a082 644
mbed_official 573:ad23fe03a082 645 /* Set DAC error code to channel1 DMA underrun error */
mbed_official 573:ad23fe03a082 646 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH1;
mbed_official 573:ad23fe03a082 647
mbed_official 573:ad23fe03a082 648 /* Clear the underrun flag */
mbed_official 573:ad23fe03a082 649 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR1);
mbed_official 573:ad23fe03a082 650
mbed_official 573:ad23fe03a082 651 /* Disable the selected DAC channel1 DMA request */
mbed_official 573:ad23fe03a082 652 hdac->Instance->CR &= ~DAC_CR_DMAEN1;
mbed_official 573:ad23fe03a082 653
mbed_official 573:ad23fe03a082 654 /* Error callback */
mbed_official 573:ad23fe03a082 655 HAL_DAC_DMAUnderrunCallbackCh1(hdac);
mbed_official 573:ad23fe03a082 656 }
mbed_official 573:ad23fe03a082 657 /* Check underrun channel 2 flag */
mbed_official 573:ad23fe03a082 658 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR2))
mbed_official 573:ad23fe03a082 659 {
mbed_official 573:ad23fe03a082 660 /* Change DAC state to error state */
mbed_official 573:ad23fe03a082 661 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 573:ad23fe03a082 662
mbed_official 573:ad23fe03a082 663 /* Set DAC error code to channel2 DMA underrun error */
mbed_official 573:ad23fe03a082 664 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH2;
mbed_official 573:ad23fe03a082 665
mbed_official 573:ad23fe03a082 666 /* Clear the underrun flag */
mbed_official 573:ad23fe03a082 667 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR2);
mbed_official 573:ad23fe03a082 668
mbed_official 573:ad23fe03a082 669 /* Disable the selected DAC channel1 DMA request */
mbed_official 573:ad23fe03a082 670 hdac->Instance->CR &= ~DAC_CR_DMAEN2;
mbed_official 573:ad23fe03a082 671
mbed_official 573:ad23fe03a082 672 /* Error callback */
mbed_official 573:ad23fe03a082 673 HAL_DACEx_DMAUnderrunCallbackCh2(hdac);
mbed_official 573:ad23fe03a082 674 }
mbed_official 573:ad23fe03a082 675 }
mbed_official 573:ad23fe03a082 676
mbed_official 573:ad23fe03a082 677 /**
mbed_official 573:ad23fe03a082 678 * @brief Conversion complete callback in non blocking mode for Channel1
mbed_official 573:ad23fe03a082 679 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 680 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 681 * @retval None
mbed_official 573:ad23fe03a082 682 */
mbed_official 573:ad23fe03a082 683 __weak void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 684 {
mbed_official 573:ad23fe03a082 685 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 686 the HAL_DAC_ConvCpltCallback could be implemented in the user file
mbed_official 573:ad23fe03a082 687 */
mbed_official 573:ad23fe03a082 688 }
mbed_official 573:ad23fe03a082 689
mbed_official 573:ad23fe03a082 690 /**
mbed_official 573:ad23fe03a082 691 * @brief Conversion half DMA transfer callback in non blocking mode for Channel1
mbed_official 573:ad23fe03a082 692 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 693 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 694 * @retval None
mbed_official 573:ad23fe03a082 695 */
mbed_official 573:ad23fe03a082 696 __weak void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 697 {
mbed_official 573:ad23fe03a082 698 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 699 the HAL_DAC_ConvHalfCpltCallbackCh1 could be implemented in the user file
mbed_official 573:ad23fe03a082 700 */
mbed_official 573:ad23fe03a082 701 }
mbed_official 573:ad23fe03a082 702
mbed_official 573:ad23fe03a082 703 /**
mbed_official 573:ad23fe03a082 704 * @brief Error DAC callback for Channel1.
mbed_official 573:ad23fe03a082 705 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 706 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 707 * @retval None
mbed_official 573:ad23fe03a082 708 */
mbed_official 573:ad23fe03a082 709 __weak void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
mbed_official 573:ad23fe03a082 710 {
mbed_official 573:ad23fe03a082 711 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 712 the HAL_DAC_ErrorCallbackCh1 could be implemented in the user file
mbed_official 573:ad23fe03a082 713 */
mbed_official 573:ad23fe03a082 714 }
mbed_official 573:ad23fe03a082 715
mbed_official 573:ad23fe03a082 716 /**
mbed_official 573:ad23fe03a082 717 * @brief DMA underrun DAC callback for channel1.
mbed_official 573:ad23fe03a082 718 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 719 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 720 * @retval None
mbed_official 573:ad23fe03a082 721 */
mbed_official 573:ad23fe03a082 722 __weak void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
mbed_official 573:ad23fe03a082 723 {
mbed_official 573:ad23fe03a082 724 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 573:ad23fe03a082 725 the HAL_DAC_DMAUnderrunCallbackCh1 could be implemented in the user file
mbed_official 573:ad23fe03a082 726 */
mbed_official 573:ad23fe03a082 727 }
mbed_official 573:ad23fe03a082 728
mbed_official 573:ad23fe03a082 729 /**
mbed_official 573:ad23fe03a082 730 * @}
mbed_official 573:ad23fe03a082 731 */
mbed_official 573:ad23fe03a082 732
mbed_official 573:ad23fe03a082 733 /** @defgroup DAC_Exported_Functions_Group3 Peripheral Control functions
mbed_official 573:ad23fe03a082 734 * @brief Peripheral Control functions
mbed_official 573:ad23fe03a082 735 *
mbed_official 573:ad23fe03a082 736 @verbatim
mbed_official 573:ad23fe03a082 737 ==============================================================================
mbed_official 573:ad23fe03a082 738 ##### Peripheral Control functions #####
mbed_official 573:ad23fe03a082 739 ==============================================================================
mbed_official 573:ad23fe03a082 740 [..] This section provides functions allowing to:
mbed_official 573:ad23fe03a082 741 (+) Configure channels.
mbed_official 573:ad23fe03a082 742 (+) Set the specified data holding register value for DAC channel.
mbed_official 573:ad23fe03a082 743
mbed_official 573:ad23fe03a082 744 @endverbatim
mbed_official 573:ad23fe03a082 745 * @{
mbed_official 573:ad23fe03a082 746 */
mbed_official 573:ad23fe03a082 747
mbed_official 573:ad23fe03a082 748 /**
mbed_official 573:ad23fe03a082 749 * @brief Configures the selected DAC channel.
mbed_official 573:ad23fe03a082 750 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 751 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 752 * @param sConfig: DAC configuration structure.
mbed_official 573:ad23fe03a082 753 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 754 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 755 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 756 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 757 * @retval HAL status
mbed_official 573:ad23fe03a082 758 */
mbed_official 573:ad23fe03a082 759 HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel)
mbed_official 573:ad23fe03a082 760 {
mbed_official 573:ad23fe03a082 761 uint32_t tmpreg1 = 0, tmpreg2 = 0;
mbed_official 573:ad23fe03a082 762
mbed_official 573:ad23fe03a082 763 /* Check the DAC parameters */
mbed_official 573:ad23fe03a082 764 assert_param(IS_DAC_TRIGGER(sConfig->DAC_Trigger));
mbed_official 573:ad23fe03a082 765 assert_param(IS_DAC_OUTPUT_BUFFER_STATE(sConfig->DAC_OutputBuffer));
mbed_official 573:ad23fe03a082 766 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 767
mbed_official 573:ad23fe03a082 768 /* Process locked */
mbed_official 573:ad23fe03a082 769 __HAL_LOCK(hdac);
mbed_official 573:ad23fe03a082 770
mbed_official 573:ad23fe03a082 771 /* Change DAC state */
mbed_official 573:ad23fe03a082 772 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 573:ad23fe03a082 773
mbed_official 573:ad23fe03a082 774 /* Get the DAC CR value */
mbed_official 573:ad23fe03a082 775 tmpreg1 = hdac->Instance->CR;
mbed_official 573:ad23fe03a082 776 /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
mbed_official 573:ad23fe03a082 777 tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1)) << Channel);
mbed_official 573:ad23fe03a082 778 /* Configure for the selected DAC channel: buffer output, trigger */
mbed_official 573:ad23fe03a082 779 /* Set TSELx and TENx bits according to DAC_Trigger value */
mbed_official 573:ad23fe03a082 780 /* Set BOFFx bit according to DAC_OutputBuffer value */
mbed_official 573:ad23fe03a082 781 tmpreg2 = (sConfig->DAC_Trigger | sConfig->DAC_OutputBuffer);
mbed_official 573:ad23fe03a082 782 /* Calculate CR register value depending on DAC_Channel */
mbed_official 573:ad23fe03a082 783 tmpreg1 |= tmpreg2 << Channel;
mbed_official 573:ad23fe03a082 784 /* Write to DAC CR */
mbed_official 573:ad23fe03a082 785 hdac->Instance->CR = tmpreg1;
mbed_official 573:ad23fe03a082 786 /* Disable wave generation */
mbed_official 573:ad23fe03a082 787 hdac->Instance->CR &= ~(DAC_CR_WAVE1 << Channel);
mbed_official 573:ad23fe03a082 788
mbed_official 573:ad23fe03a082 789 /* Change DAC state */
mbed_official 573:ad23fe03a082 790 hdac->State = HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 791
mbed_official 573:ad23fe03a082 792 /* Process unlocked */
mbed_official 573:ad23fe03a082 793 __HAL_UNLOCK(hdac);
mbed_official 573:ad23fe03a082 794
mbed_official 573:ad23fe03a082 795 /* Return function status */
mbed_official 573:ad23fe03a082 796 return HAL_OK;
mbed_official 573:ad23fe03a082 797 }
mbed_official 573:ad23fe03a082 798
mbed_official 573:ad23fe03a082 799 /**
mbed_official 573:ad23fe03a082 800 * @brief Set the specified data holding register value for DAC channel.
mbed_official 573:ad23fe03a082 801 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 802 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 803 * @param Channel: The selected DAC channel.
mbed_official 573:ad23fe03a082 804 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 805 * @arg DAC_CHANNEL_1: DAC Channel1 selected
mbed_official 573:ad23fe03a082 806 * @arg DAC_CHANNEL_2: DAC Channel2 selected
mbed_official 573:ad23fe03a082 807 * @param Alignment: Specifies the data alignment.
mbed_official 573:ad23fe03a082 808 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 809 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
mbed_official 573:ad23fe03a082 810 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
mbed_official 573:ad23fe03a082 811 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
mbed_official 573:ad23fe03a082 812 * @param Data: Data to be loaded in the selected data holding register.
mbed_official 573:ad23fe03a082 813 * @retval HAL status
mbed_official 573:ad23fe03a082 814 */
mbed_official 573:ad23fe03a082 815 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
mbed_official 573:ad23fe03a082 816 {
mbed_official 573:ad23fe03a082 817 __IO uint32_t tmp = 0;
mbed_official 573:ad23fe03a082 818
mbed_official 573:ad23fe03a082 819 /* Check the parameters */
mbed_official 573:ad23fe03a082 820 assert_param(IS_DAC_CHANNEL(Channel));
mbed_official 573:ad23fe03a082 821 assert_param(IS_DAC_ALIGN(Alignment));
mbed_official 573:ad23fe03a082 822 assert_param(IS_DAC_DATA(Data));
mbed_official 573:ad23fe03a082 823
mbed_official 573:ad23fe03a082 824 tmp = (uint32_t)hdac->Instance;
mbed_official 573:ad23fe03a082 825 if(Channel == DAC_CHANNEL_1)
mbed_official 573:ad23fe03a082 826 {
mbed_official 573:ad23fe03a082 827 tmp += DAC_DHR12R1_ALIGNMENT(Alignment);
mbed_official 573:ad23fe03a082 828 }
mbed_official 573:ad23fe03a082 829 else
mbed_official 573:ad23fe03a082 830 {
mbed_official 573:ad23fe03a082 831 tmp += DAC_DHR12R2_ALIGNMENT(Alignment);
mbed_official 573:ad23fe03a082 832 }
mbed_official 573:ad23fe03a082 833
mbed_official 573:ad23fe03a082 834 /* Set the DAC channel1 selected data holding register */
mbed_official 573:ad23fe03a082 835 *(__IO uint32_t *) tmp = Data;
mbed_official 573:ad23fe03a082 836
mbed_official 573:ad23fe03a082 837 /* Return function status */
mbed_official 573:ad23fe03a082 838 return HAL_OK;
mbed_official 573:ad23fe03a082 839 }
mbed_official 573:ad23fe03a082 840
mbed_official 573:ad23fe03a082 841 /**
mbed_official 573:ad23fe03a082 842 * @}
mbed_official 573:ad23fe03a082 843 */
mbed_official 573:ad23fe03a082 844
mbed_official 573:ad23fe03a082 845 /** @defgroup DAC_Exported_Functions_Group4 Peripheral State and Errors functions
mbed_official 573:ad23fe03a082 846 * @brief Peripheral State and Errors functions
mbed_official 573:ad23fe03a082 847 *
mbed_official 573:ad23fe03a082 848 @verbatim
mbed_official 573:ad23fe03a082 849 ==============================================================================
mbed_official 573:ad23fe03a082 850 ##### Peripheral State and Errors functions #####
mbed_official 573:ad23fe03a082 851 ==============================================================================
mbed_official 573:ad23fe03a082 852 [..]
mbed_official 573:ad23fe03a082 853 This subsection provides functions allowing to
mbed_official 573:ad23fe03a082 854 (+) Check the DAC state.
mbed_official 573:ad23fe03a082 855 (+) Check the DAC Errors.
mbed_official 573:ad23fe03a082 856
mbed_official 573:ad23fe03a082 857 @endverbatim
mbed_official 573:ad23fe03a082 858 * @{
mbed_official 573:ad23fe03a082 859 */
mbed_official 573:ad23fe03a082 860
mbed_official 573:ad23fe03a082 861 /**
mbed_official 573:ad23fe03a082 862 * @brief return the DAC state
mbed_official 573:ad23fe03a082 863 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 864 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 865 * @retval HAL state
mbed_official 573:ad23fe03a082 866 */
mbed_official 573:ad23fe03a082 867 HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac)
mbed_official 573:ad23fe03a082 868 {
mbed_official 573:ad23fe03a082 869 /* Return DAC state */
mbed_official 573:ad23fe03a082 870 return hdac->State;
mbed_official 573:ad23fe03a082 871 }
mbed_official 573:ad23fe03a082 872
mbed_official 573:ad23fe03a082 873
mbed_official 573:ad23fe03a082 874 /**
mbed_official 573:ad23fe03a082 875 * @brief Return the DAC error code
mbed_official 573:ad23fe03a082 876 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 877 * the configuration information for the specified DAC.
mbed_official 573:ad23fe03a082 878 * @retval DAC Error Code
mbed_official 573:ad23fe03a082 879 */
mbed_official 573:ad23fe03a082 880 uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac)
mbed_official 573:ad23fe03a082 881 {
mbed_official 573:ad23fe03a082 882 return hdac->ErrorCode;
mbed_official 573:ad23fe03a082 883 }
mbed_official 573:ad23fe03a082 884
mbed_official 573:ad23fe03a082 885 /**
mbed_official 573:ad23fe03a082 886 * @}
mbed_official 573:ad23fe03a082 887 */
mbed_official 573:ad23fe03a082 888
mbed_official 573:ad23fe03a082 889 /**
mbed_official 573:ad23fe03a082 890 * @brief DMA conversion complete callback.
mbed_official 573:ad23fe03a082 891 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 892 * the configuration information for the specified DMA module.
mbed_official 573:ad23fe03a082 893 * @retval None
mbed_official 573:ad23fe03a082 894 */
mbed_official 573:ad23fe03a082 895 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma)
mbed_official 573:ad23fe03a082 896 {
mbed_official 573:ad23fe03a082 897 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 573:ad23fe03a082 898
mbed_official 573:ad23fe03a082 899 HAL_DAC_ConvCpltCallbackCh1(hdac);
mbed_official 573:ad23fe03a082 900
mbed_official 573:ad23fe03a082 901 hdac->State= HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 902 }
mbed_official 573:ad23fe03a082 903
mbed_official 573:ad23fe03a082 904 /**
mbed_official 573:ad23fe03a082 905 * @brief DMA half transfer complete callback.
mbed_official 573:ad23fe03a082 906 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 907 * the configuration information for the specified DMA module.
mbed_official 573:ad23fe03a082 908 * @retval None
mbed_official 573:ad23fe03a082 909 */
mbed_official 573:ad23fe03a082 910 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma)
mbed_official 573:ad23fe03a082 911 {
mbed_official 573:ad23fe03a082 912 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 573:ad23fe03a082 913 /* Conversion complete callback */
mbed_official 573:ad23fe03a082 914 HAL_DAC_ConvHalfCpltCallbackCh1(hdac);
mbed_official 573:ad23fe03a082 915 }
mbed_official 573:ad23fe03a082 916
mbed_official 573:ad23fe03a082 917 /**
mbed_official 573:ad23fe03a082 918 * @brief DMA error callback
mbed_official 573:ad23fe03a082 919 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
mbed_official 573:ad23fe03a082 920 * the configuration information for the specified DMA module.
mbed_official 573:ad23fe03a082 921 * @retval None
mbed_official 573:ad23fe03a082 922 */
mbed_official 573:ad23fe03a082 923 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma)
mbed_official 573:ad23fe03a082 924 {
mbed_official 573:ad23fe03a082 925 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 573:ad23fe03a082 926
mbed_official 573:ad23fe03a082 927 /* Set DAC error code to DMA error */
mbed_official 573:ad23fe03a082 928 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
mbed_official 573:ad23fe03a082 929
mbed_official 573:ad23fe03a082 930 HAL_DAC_ErrorCallbackCh1(hdac);
mbed_official 573:ad23fe03a082 931
mbed_official 573:ad23fe03a082 932 hdac->State= HAL_DAC_STATE_READY;
mbed_official 573:ad23fe03a082 933 }
mbed_official 573:ad23fe03a082 934
mbed_official 573:ad23fe03a082 935 /**
mbed_official 573:ad23fe03a082 936 * @}
mbed_official 573:ad23fe03a082 937 */
mbed_official 573:ad23fe03a082 938
mbed_official 573:ad23fe03a082 939 #endif /* HAL_DAC_MODULE_ENABLED */
mbed_official 573:ad23fe03a082 940
mbed_official 573:ad23fe03a082 941 /**
mbed_official 573:ad23fe03a082 942 * @}
mbed_official 573:ad23fe03a082 943 */
mbed_official 573:ad23fe03a082 944
mbed_official 573:ad23fe03a082 945 /**
mbed_official 573:ad23fe03a082 946 * @}
mbed_official 573:ad23fe03a082 947 */
mbed_official 573:ad23fe03a082 948
mbed_official 573:ad23fe03a082 949 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/