SHIO

Fork of mbed-stm32l0/l1-src by lzbp li

Committer:
mbed_official
Date:
Mon Nov 03 10:45:07 2014 +0000
Revision:
382:ee426a420dbb
Parent:
targets/cmsis/TARGET_STM/TARGET_DISCO_L053C8/stm32l0xx_hal_dac.c@376:cb4d9db17537
Child:
387:643a59b3dbac
Synchronized with git revision d54467eb07f62efd9ccdf44f1ede7fe1c1b0cf83

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

Who changed what in which revision?

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