mbed library sources, include can_api for nucleo-f091rc

Dependents:   CanNucleoF0_example

Fork of mbed-src by mbed official

Committer:
ptpaterson
Date:
Thu Jan 07 05:49:05 2016 +0000
Revision:
645:13c87cbecd54
Parent:
610:813dcc80987e
corrected freeze on CAN_RECEIVE_IT

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****/