Mbed for VNG board

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Nov 07 15:45:07 2014 +0000
Revision:
394:83f921546702
Parent:
targets/cmsis/TARGET_STM/TARGET_NUCLEO_L152RE/stm32l1xx_hal_dac.c@354:e67efb2aab0e
Synchronized with git revision aab52cb7ec5a665869e507dd988bbfd55b7e087e

Full URL: https://github.com/mbedmicro/mbed/commit/aab52cb7ec5a665869e507dd988bbfd55b7e087e/

Tests: Fix cpputest testrunner

Who changed what in which revision?

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