Modified version of the mbed library for use with the Nucleo boards.

Dependents:   EEPROMWrite Full-Project

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Mon Sep 28 20:15:09 2015 +0100
Revision:
634:ac7d6880524d
Parent:
632:7687fb9c4f91
Synchronized with git revision 9b7d23d47153c298a6d24de9a415202705889d11

Full URL: https://github.com/mbedmicro/mbed/commit/9b7d23d47153c298a6d24de9a415202705889d11/

Revert "[NUCLEO_F303K8] add support of the STM32F303K8"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 237:f3da66175598 1 /**
mbed_official 237:f3da66175598 2 ******************************************************************************
mbed_official 237:f3da66175598 3 * @file stm32f3xx_hal_dac_ex.c
mbed_official 237:f3da66175598 4 * @author MCD Application Team
mbed_official 634:ac7d6880524d 5 * @version V1.1.0
mbed_official 634:ac7d6880524d 6 * @date 12-Sept-2014
mbed_official 237:f3da66175598 7 * @brief Extended DAC HAL module driver.
mbed_official 237:f3da66175598 8 *
mbed_official 237:f3da66175598 9 * This file provides firmware functions to manage the following
mbed_official 237:f3da66175598 10 * functionalities of the Power Controller (DAC) peripheral:
mbed_official 237:f3da66175598 11 * + Initialization and de-initialization functions
mbed_official 237:f3da66175598 12 * + Peripheral Control functions
mbed_official 237:f3da66175598 13 @verbatim
mbed_official 237:f3da66175598 14
mbed_official 237:f3da66175598 15 @endverbatim
mbed_official 237:f3da66175598 16 ******************************************************************************
mbed_official 237:f3da66175598 17 * @attention
mbed_official 237:f3da66175598 18 *
mbed_official 634:ac7d6880524d 19 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 237:f3da66175598 20 *
mbed_official 237:f3da66175598 21 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 237:f3da66175598 22 * are permitted provided that the following conditions are met:
mbed_official 237:f3da66175598 23 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 237:f3da66175598 24 * this list of conditions and the following disclaimer.
mbed_official 237:f3da66175598 25 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 237:f3da66175598 26 * this list of conditions and the following disclaimer in the documentation
mbed_official 237:f3da66175598 27 * and/or other materials provided with the distribution.
mbed_official 237:f3da66175598 28 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 237:f3da66175598 29 * may be used to endorse or promote products derived from this software
mbed_official 237:f3da66175598 30 * without specific prior written permission.
mbed_official 237:f3da66175598 31 *
mbed_official 237:f3da66175598 32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 237:f3da66175598 33 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 237:f3da66175598 34 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 237:f3da66175598 35 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 237:f3da66175598 36 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 237:f3da66175598 37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 237:f3da66175598 38 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 237:f3da66175598 39 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 237:f3da66175598 40 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 237:f3da66175598 41 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 237:f3da66175598 42 *
mbed_official 237:f3da66175598 43 ******************************************************************************
mbed_official 237:f3da66175598 44 */
mbed_official 237:f3da66175598 45
mbed_official 237:f3da66175598 46 /* Includes ------------------------------------------------------------------*/
mbed_official 237:f3da66175598 47 #include "stm32f3xx_hal.h"
mbed_official 237:f3da66175598 48
mbed_official 237:f3da66175598 49 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 237:f3da66175598 50 * @{
mbed_official 237:f3da66175598 51 */
mbed_official 237:f3da66175598 52
mbed_official 375:3d36234a1087 53 #ifdef HAL_DAC_MODULE_ENABLED
mbed_official 375:3d36234a1087 54
mbed_official 375:3d36234a1087 55 /** @defgroup DACEx DAC Extended HAL module driver
mbed_official 237:f3da66175598 56 * @brief DAC HAL module driver
mbed_official 237:f3da66175598 57 * @{
mbed_official 237:f3da66175598 58 */
mbed_official 237:f3da66175598 59
mbed_official 237:f3da66175598 60 /* Private typedef -----------------------------------------------------------*/
mbed_official 237:f3da66175598 61 /* Private define ------------------------------------------------------------*/
mbed_official 237:f3da66175598 62 /* Private macro -------------------------------------------------------------*/
mbed_official 237:f3da66175598 63 /* Private variables ---------------------------------------------------------*/
mbed_official 237:f3da66175598 64 /* Private function prototypes -----------------------------------------------*/
mbed_official 375:3d36234a1087 65 /** @defgroup DACEx_Private_Functions DAC Extended Private Functions
mbed_official 375:3d36234a1087 66 * @{
mbed_official 375:3d36234a1087 67 */
mbed_official 237:f3da66175598 68 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 69 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 70 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 71
mbed_official 375:3d36234a1087 72 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 73 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 74 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 75 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 76 /* DAC channel 2 is available on top of DAC channel 1 */
mbed_official 237:f3da66175598 77 static void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 78 static void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 79 static void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma);
mbed_official 375:3d36234a1087 80 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 81 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 82 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 83 /* STM32F373xC || STM32F378xx */
mbed_official 375:3d36234a1087 84 /**
mbed_official 375:3d36234a1087 85 * @}
mbed_official 375:3d36234a1087 86 */
mbed_official 237:f3da66175598 87
mbed_official 375:3d36234a1087 88 /**
mbed_official 375:3d36234a1087 89 * @}
mbed_official 375:3d36234a1087 90 */
mbed_official 237:f3da66175598 91
mbed_official 375:3d36234a1087 92 /** @addtogroup DAC DAC HAL module driver
mbed_official 375:3d36234a1087 93 * @brief DAC HAL module driver
mbed_official 375:3d36234a1087 94 * @{
mbed_official 375:3d36234a1087 95 */
mbed_official 375:3d36234a1087 96
mbed_official 375:3d36234a1087 97 /* Exported functions ---------------------------------------------------------*/
mbed_official 375:3d36234a1087 98 /** @addtogroup DAC_Exported_Functions DAC Exported Functions
mbed_official 237:f3da66175598 99 * @{
mbed_official 237:f3da66175598 100 */
mbed_official 237:f3da66175598 101
mbed_official 375:3d36234a1087 102 /** @addtogroup DAC_Exported_Functions_Group3 Peripheral Control functions
mbed_official 237:f3da66175598 103 * @brief Peripheral Control functions
mbed_official 237:f3da66175598 104 *
mbed_official 237:f3da66175598 105 @verbatim
mbed_official 237:f3da66175598 106 ==============================================================================
mbed_official 237:f3da66175598 107 ##### Peripheral Control functions #####
mbed_official 237:f3da66175598 108 ==============================================================================
mbed_official 237:f3da66175598 109 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 110 (+) Set the specified data holding register value for DAC channel.
mbed_official 237:f3da66175598 111
mbed_official 237:f3da66175598 112 @endverbatim
mbed_official 237:f3da66175598 113 * @{
mbed_official 237:f3da66175598 114 */
mbed_official 237:f3da66175598 115
mbed_official 237:f3da66175598 116 /**
mbed_official 237:f3da66175598 117 * @brief Set the specified data holding register value for DAC channel.
mbed_official 237:f3da66175598 118 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 119 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 120 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 121 * @param alignment: Specifies the data alignment for DAC channel.
mbed_official 237:f3da66175598 122 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 123 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
mbed_official 237:f3da66175598 124 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
mbed_official 237:f3da66175598 125 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
mbed_official 237:f3da66175598 126 * @param data: Data to be loaded in the selected data holding register.
mbed_official 237:f3da66175598 127 * @retval HAL status
mbed_official 237:f3da66175598 128 */
mbed_official 237:f3da66175598 129 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t channel, uint32_t alignment, uint32_t data)
mbed_official 237:f3da66175598 130 {
mbed_official 237:f3da66175598 131 __IO uint32_t tmp = 0;
mbed_official 237:f3da66175598 132
mbed_official 237:f3da66175598 133 /* Check the parameters */
mbed_official 237:f3da66175598 134 assert_param(IS_DAC_CHANNEL(channel));
mbed_official 237:f3da66175598 135 assert_param(IS_DAC_ALIGN(alignment));
mbed_official 237:f3da66175598 136 assert_param(IS_DAC_DATA(data));
mbed_official 237:f3da66175598 137
mbed_official 237:f3da66175598 138 tmp = (uint32_t) (hdac->Instance);
mbed_official 237:f3da66175598 139
mbed_official 237:f3da66175598 140 /* DAC 1 has 1 or 2 channels - no DAC2 */
mbed_official 237:f3da66175598 141 /* DAC 1 has 2 channels 1 & 2 - DAC 2 has one channel 1 */
mbed_official 237:f3da66175598 142
mbed_official 237:f3da66175598 143 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 144 {
mbed_official 237:f3da66175598 145 tmp += __HAL_DHR12R1_ALIGNEMENT(alignment);
mbed_official 237:f3da66175598 146 }
mbed_official 375:3d36234a1087 147 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 148 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 149 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 150 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 151 else /* channel = DAC_CHANNEL_2 */
mbed_official 237:f3da66175598 152 {
mbed_official 237:f3da66175598 153 tmp += __HAL_DHR12R2_ALIGNEMENT(alignment);
mbed_official 237:f3da66175598 154 }
mbed_official 375:3d36234a1087 155 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 156 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 157 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 158 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 159
mbed_official 237:f3da66175598 160 /* Set the DAC channel1 selected data holding register */
mbed_official 237:f3da66175598 161 *(__IO uint32_t *) tmp = data;
mbed_official 237:f3da66175598 162
mbed_official 237:f3da66175598 163 /* Return function status */
mbed_official 237:f3da66175598 164 return HAL_OK;
mbed_official 237:f3da66175598 165 }
mbed_official 237:f3da66175598 166
mbed_official 237:f3da66175598 167 /**
mbed_official 237:f3da66175598 168 * @}
mbed_official 237:f3da66175598 169 */
mbed_official 237:f3da66175598 170
mbed_official 375:3d36234a1087 171 /** @addtogroup DAC_Exported_Functions_Group2 Input and Output operation functions
mbed_official 237:f3da66175598 172 * @brief IO operation functions
mbed_official 237:f3da66175598 173 *
mbed_official 237:f3da66175598 174 @verbatim
mbed_official 237:f3da66175598 175 ==============================================================================
mbed_official 237:f3da66175598 176 ##### IO operation functions #####
mbed_official 237:f3da66175598 177 ==============================================================================
mbed_official 237:f3da66175598 178 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 179 (+) Start conversion.
mbed_official 237:f3da66175598 180 (+) Stop conversion.
mbed_official 237:f3da66175598 181 (+) Start conversion and enable DMA transfer.
mbed_official 237:f3da66175598 182 (+) Stop conversion and disable DMA transfer.
mbed_official 237:f3da66175598 183 (+) Get result of conversion.
mbed_official 237:f3da66175598 184
mbed_official 237:f3da66175598 185 @endverbatim
mbed_official 237:f3da66175598 186 * @{
mbed_official 237:f3da66175598 187 */
mbed_official 237:f3da66175598 188
mbed_official 237:f3da66175598 189 /* DAC 1 has 2 channels 1 & 2 - DAC 2 has one channel 1 */
mbed_official 375:3d36234a1087 190 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 191 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 192 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 193 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 194 /* DAC 1 has 2 channels 1 & 2 */
mbed_official 237:f3da66175598 195
mbed_official 237:f3da66175598 196 /**
mbed_official 237:f3da66175598 197 * @brief Enables DAC and starts conversion of channel.
mbed_official 237:f3da66175598 198 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 199 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 200 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 201 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 202 * @arg DAC_CHANNEL_1: DAC1 Channel1 or DAC2 Channel1 selected
mbed_official 237:f3da66175598 203 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 204 * @retval HAL status
mbed_official 237:f3da66175598 205 */
mbed_official 237:f3da66175598 206
mbed_official 237:f3da66175598 207 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t channel)
mbed_official 237:f3da66175598 208 {
mbed_official 237:f3da66175598 209 /* Check the parameters */
mbed_official 237:f3da66175598 210 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 211
mbed_official 237:f3da66175598 212 /* Process locked */
mbed_official 237:f3da66175598 213 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 214
mbed_official 237:f3da66175598 215 /* Change DAC state */
mbed_official 237:f3da66175598 216 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 217
mbed_official 237:f3da66175598 218 /* Enable the Peripharal */
mbed_official 237:f3da66175598 219 __HAL_DAC_ENABLE(hdac, channel);
mbed_official 237:f3da66175598 220
mbed_official 237:f3da66175598 221 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 222 {
mbed_official 237:f3da66175598 223 /* Check if software trigger enabled */
mbed_official 237:f3da66175598 224 if(((hdac->Instance->CR & DAC_CR_TEN1) == DAC_CR_TEN1) && ((hdac->Instance->CR & DAC_CR_TSEL1) == DAC_CR_TSEL1))
mbed_official 237:f3da66175598 225 {
mbed_official 237:f3da66175598 226 /* Enable the selected DAC software conversion */
mbed_official 237:f3da66175598 227 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1;
mbed_official 237:f3da66175598 228 }
mbed_official 237:f3da66175598 229 }
mbed_official 237:f3da66175598 230 else
mbed_official 237:f3da66175598 231 {
mbed_official 237:f3da66175598 232 /* Check if software trigger enabled */
mbed_official 237:f3da66175598 233 if(((hdac->Instance->CR & DAC_CR_TEN2) == DAC_CR_TEN2) && ((hdac->Instance->CR & DAC_CR_TSEL2) == DAC_CR_TSEL2))
mbed_official 237:f3da66175598 234 {
mbed_official 237:f3da66175598 235 /* Enable the selected DAC software conversion*/
mbed_official 237:f3da66175598 236 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG2;
mbed_official 237:f3da66175598 237 }
mbed_official 237:f3da66175598 238 }
mbed_official 237:f3da66175598 239
mbed_official 237:f3da66175598 240 /* Change DAC state */
mbed_official 237:f3da66175598 241 hdac->State = HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 242
mbed_official 237:f3da66175598 243 /* Process unlocked */
mbed_official 237:f3da66175598 244 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 245
mbed_official 237:f3da66175598 246 /* Return function status */
mbed_official 237:f3da66175598 247 return HAL_OK;
mbed_official 237:f3da66175598 248 }
mbed_official 375:3d36234a1087 249 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 250 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 251 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 252 /* STM32F373xC || STM32F378xx */
mbed_official 375:3d36234a1087 253
mbed_official 375:3d36234a1087 254 #if defined(STM32F302xE) || \
mbed_official 375:3d36234a1087 255 defined(STM32F302xC) || \
mbed_official 375:3d36234a1087 256 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 375:3d36234a1087 257 /* DAC 1 has 1 channels 1 */
mbed_official 237:f3da66175598 258
mbed_official 375:3d36234a1087 259 /**
mbed_official 375:3d36234a1087 260 * @brief Enables DAC and starts conversion of channel.
mbed_official 375:3d36234a1087 261 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 375:3d36234a1087 262 * the configuration information for the specified DAC.
mbed_official 375:3d36234a1087 263 * @param channel: The selected DAC channel.
mbed_official 375:3d36234a1087 264 * This parameter can be one of the following values:
mbed_official 375:3d36234a1087 265 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 375:3d36234a1087 266 * @retval HAL status
mbed_official 375:3d36234a1087 267 */
mbed_official 375:3d36234a1087 268
mbed_official 237:f3da66175598 269 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t channel)
mbed_official 237:f3da66175598 270 {
mbed_official 237:f3da66175598 271 /* Check the parameters */
mbed_official 237:f3da66175598 272 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 273
mbed_official 237:f3da66175598 274 /* Process locked */
mbed_official 237:f3da66175598 275 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 276
mbed_official 237:f3da66175598 277 /* Change DAC state */
mbed_official 237:f3da66175598 278 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 279
mbed_official 237:f3da66175598 280 /* Enable the Peripharal */
mbed_official 237:f3da66175598 281 __HAL_DAC_ENABLE(hdac, channel);
mbed_official 237:f3da66175598 282
mbed_official 237:f3da66175598 283 /* Check if software trigger enabled */
mbed_official 237:f3da66175598 284 if(((hdac->Instance->CR & DAC_CR_TEN1) == DAC_CR_TEN1) && ((hdac->Instance->CR & DAC_CR_TSEL1) == DAC_CR_TSEL1))
mbed_official 237:f3da66175598 285 {
mbed_official 237:f3da66175598 286 /* Enable the selected DAC software conversion */
mbed_official 237:f3da66175598 287 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1;
mbed_official 237:f3da66175598 288 }
mbed_official 237:f3da66175598 289
mbed_official 237:f3da66175598 290 /* Change DAC state */
mbed_official 237:f3da66175598 291 hdac->State = HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 292
mbed_official 237:f3da66175598 293 /* Process unlocked */
mbed_official 237:f3da66175598 294 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 295
mbed_official 237:f3da66175598 296 /* Return function status */
mbed_official 237:f3da66175598 297 return HAL_OK;
mbed_official 237:f3da66175598 298 }
mbed_official 375:3d36234a1087 299 #endif /* STM32F302xE || */
mbed_official 375:3d36234a1087 300 /* STM32F302xC || */
mbed_official 375:3d36234a1087 301 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 237:f3da66175598 302
mbed_official 237:f3da66175598 303 /* DAC 1 has 2 channels 1 & 2 - DAC 2 has one channel 1 */
mbed_official 375:3d36234a1087 304 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 305 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 306 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 307 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 375:3d36234a1087 308
mbed_official 237:f3da66175598 309 /* DAC 1 has 2 channels 1 & 2 */
mbed_official 237:f3da66175598 310
mbed_official 237:f3da66175598 311 /**
mbed_official 237:f3da66175598 312 * @brief Enables DAC and starts conversion of channel.
mbed_official 237:f3da66175598 313 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 314 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 315 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 316 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 317 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 318 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 319 * @param pData: The destination peripheral Buffer address.
mbed_official 237:f3da66175598 320 * @param Length: The length of data to be transferred from memory to DAC peripheral
mbed_official 237:f3da66175598 321 * @param alignment: Specifies the data alignment for DAC channel.
mbed_official 237:f3da66175598 322 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 323 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 237:f3da66175598 324 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 237:f3da66175598 325 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 237:f3da66175598 326 * @retval HAL status
mbed_official 237:f3da66175598 327 */
mbed_official 237:f3da66175598 328
mbed_official 237:f3da66175598 329 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t channel, uint32_t* pData, uint32_t Length, uint32_t alignment)
mbed_official 237:f3da66175598 330 {
mbed_official 237:f3da66175598 331 uint32_t tmpreg = 0;
mbed_official 237:f3da66175598 332
mbed_official 237:f3da66175598 333 /* Check the parameters */
mbed_official 237:f3da66175598 334 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 335 assert_param(IS_DAC_ALIGN(alignment));
mbed_official 237:f3da66175598 336
mbed_official 237:f3da66175598 337 /* Process locked */
mbed_official 237:f3da66175598 338 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 339
mbed_official 237:f3da66175598 340 /* Change DAC state */
mbed_official 237:f3da66175598 341 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 342
mbed_official 237:f3da66175598 343 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 344 {
mbed_official 237:f3da66175598 345 /* Set the DMA transfer complete callback for channel1 */
mbed_official 237:f3da66175598 346 hdac->DMA_Handle1->XferCpltCallback = DAC_DMAConvCpltCh1;
mbed_official 237:f3da66175598 347
mbed_official 237:f3da66175598 348 /* Set the DMA half transfer complete callback for channel1 */
mbed_official 237:f3da66175598 349 hdac->DMA_Handle1->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh1;
mbed_official 237:f3da66175598 350
mbed_official 237:f3da66175598 351 /* Set the DMA error callback for channel1 */
mbed_official 237:f3da66175598 352 hdac->DMA_Handle1->XferErrorCallback = DAC_DMAErrorCh1;
mbed_official 237:f3da66175598 353 }
mbed_official 237:f3da66175598 354 else
mbed_official 237:f3da66175598 355 {
mbed_official 237:f3da66175598 356 /* Set the DMA transfer complete callback for channel2 */
mbed_official 237:f3da66175598 357 hdac->DMA_Handle2->XferCpltCallback = DAC_DMAConvCpltCh2;
mbed_official 237:f3da66175598 358
mbed_official 237:f3da66175598 359 /* Set the DMA half transfer complete callback for channel2 */
mbed_official 237:f3da66175598 360 hdac->DMA_Handle2->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh2;
mbed_official 237:f3da66175598 361
mbed_official 237:f3da66175598 362 /* Set the DMA error callback for channel2 */
mbed_official 237:f3da66175598 363 hdac->DMA_Handle2->XferErrorCallback = DAC_DMAErrorCh2;
mbed_official 237:f3da66175598 364 }
mbed_official 237:f3da66175598 365
mbed_official 237:f3da66175598 366 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 367 {
mbed_official 237:f3da66175598 368 /* Enable the selected DAC channel1 DMA request */
mbed_official 237:f3da66175598 369 hdac->Instance->CR |= DAC_CR_DMAEN1;
mbed_official 237:f3da66175598 370
mbed_official 237:f3da66175598 371 /* Case of use of channel 1 */
mbed_official 237:f3da66175598 372 switch(alignment)
mbed_official 237:f3da66175598 373 {
mbed_official 237:f3da66175598 374 case DAC_ALIGN_12B_R:
mbed_official 237:f3da66175598 375 /* Get DHR12R1 address */
mbed_official 237:f3da66175598 376 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
mbed_official 237:f3da66175598 377 break;
mbed_official 237:f3da66175598 378 case DAC_ALIGN_12B_L:
mbed_official 237:f3da66175598 379 /* Get DHR12L1 address */
mbed_official 237:f3da66175598 380 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
mbed_official 237:f3da66175598 381 break;
mbed_official 237:f3da66175598 382 case DAC_ALIGN_8B_R:
mbed_official 237:f3da66175598 383 /* Get DHR8R1 address */
mbed_official 237:f3da66175598 384 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
mbed_official 237:f3da66175598 385 break;
mbed_official 237:f3da66175598 386 default:
mbed_official 237:f3da66175598 387 break;
mbed_official 237:f3da66175598 388 }
mbed_official 237:f3da66175598 389 }
mbed_official 237:f3da66175598 390 else
mbed_official 237:f3da66175598 391 {
mbed_official 237:f3da66175598 392 /* Enable the selected DAC channel2 DMA request */
mbed_official 237:f3da66175598 393 hdac->Instance->CR |= DAC_CR_DMAEN2;
mbed_official 237:f3da66175598 394
mbed_official 237:f3da66175598 395 /* Case of use of channel 2 */
mbed_official 237:f3da66175598 396 switch(alignment)
mbed_official 237:f3da66175598 397 {
mbed_official 237:f3da66175598 398 case DAC_ALIGN_12B_R:
mbed_official 237:f3da66175598 399 /* Get DHR12R2 address */
mbed_official 237:f3da66175598 400 tmpreg = (uint32_t)&hdac->Instance->DHR12R2;
mbed_official 237:f3da66175598 401 break;
mbed_official 237:f3da66175598 402 case DAC_ALIGN_12B_L:
mbed_official 237:f3da66175598 403 /* Get DHR12L2 address */
mbed_official 237:f3da66175598 404 tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
mbed_official 237:f3da66175598 405 break;
mbed_official 237:f3da66175598 406 case DAC_ALIGN_8B_R:
mbed_official 237:f3da66175598 407 /* Get DHR8R2 address */
mbed_official 237:f3da66175598 408 tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
mbed_official 237:f3da66175598 409 break;
mbed_official 237:f3da66175598 410 default:
mbed_official 237:f3da66175598 411 break;
mbed_official 237:f3da66175598 412 }
mbed_official 237:f3da66175598 413 }
mbed_official 237:f3da66175598 414
mbed_official 237:f3da66175598 415 /* Enable the DMA Channel */
mbed_official 237:f3da66175598 416 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 417 {
mbed_official 237:f3da66175598 418 /* Enable the DAC DMA underrun interrupt */
mbed_official 237:f3da66175598 419 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
mbed_official 237:f3da66175598 420
mbed_official 237:f3da66175598 421 /* Enable the DMA Channel */
mbed_official 237:f3da66175598 422 HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
mbed_official 237:f3da66175598 423 }
mbed_official 237:f3da66175598 424 else
mbed_official 237:f3da66175598 425 {
mbed_official 237:f3da66175598 426 /* Enable the DAC DMA underrun interrupt */
mbed_official 237:f3da66175598 427 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR2);
mbed_official 237:f3da66175598 428
mbed_official 237:f3da66175598 429 /* Enable the DMA Channel */
mbed_official 237:f3da66175598 430 HAL_DMA_Start_IT(hdac->DMA_Handle2, (uint32_t)pData, tmpreg, Length);
mbed_official 237:f3da66175598 431 }
mbed_official 237:f3da66175598 432
mbed_official 237:f3da66175598 433 /* Enable the Peripheral */
mbed_official 237:f3da66175598 434 __HAL_DAC_ENABLE(hdac, channel);
mbed_official 237:f3da66175598 435
mbed_official 237:f3da66175598 436 /* Process Unlocked */
mbed_official 237:f3da66175598 437 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 438
mbed_official 237:f3da66175598 439 /* Return function status */
mbed_official 237:f3da66175598 440 return HAL_OK;
mbed_official 237:f3da66175598 441 }
mbed_official 375:3d36234a1087 442 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 443 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 444 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 445 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 446
mbed_official 375:3d36234a1087 447 #if defined(STM32F302xE) || \
mbed_official 375:3d36234a1087 448 defined(STM32F302xC) || \
mbed_official 375:3d36234a1087 449 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 237:f3da66175598 450 /* DAC 1 has 1 channels 1 */
mbed_official 237:f3da66175598 451
mbed_official 237:f3da66175598 452 /**
mbed_official 237:f3da66175598 453 * @brief Enables DAC and starts conversion of channel.
mbed_official 237:f3da66175598 454 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 455 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 456 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 457 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 458 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 459 * @param pData: The destination peripheral Buffer address.
mbed_official 237:f3da66175598 460 * @param Length: The length of data to be transferred from memory to DAC peripheral
mbed_official 237:f3da66175598 461 * @param alignment: Specifies the data alignment for DAC channel.
mbed_official 237:f3da66175598 462 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 463 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 237:f3da66175598 464 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 237:f3da66175598 465 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 237:f3da66175598 466 * @retval HAL status
mbed_official 237:f3da66175598 467 */
mbed_official 237:f3da66175598 468
mbed_official 237:f3da66175598 469 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t channel, uint32_t* pData, uint32_t Length, uint32_t alignment)
mbed_official 237:f3da66175598 470 {
mbed_official 237:f3da66175598 471 uint32_t tmpreg = 0;
mbed_official 237:f3da66175598 472
mbed_official 237:f3da66175598 473 /* Check the parameters */
mbed_official 237:f3da66175598 474 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 475 assert_param(IS_DAC_ALIGN(alignment));
mbed_official 237:f3da66175598 476
mbed_official 237:f3da66175598 477 /* Process locked */
mbed_official 237:f3da66175598 478 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 479
mbed_official 237:f3da66175598 480 /* Change DAC state */
mbed_official 237:f3da66175598 481 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 482
mbed_official 237:f3da66175598 483 /* Set the DMA transfer complete callback for channel1 */
mbed_official 237:f3da66175598 484 hdac->DMA_Handle1->XferCpltCallback = DAC_DMAConvCpltCh1;
mbed_official 237:f3da66175598 485
mbed_official 237:f3da66175598 486 /* Set the DMA half transfer complete callback for channel1 */
mbed_official 237:f3da66175598 487 hdac->DMA_Handle1->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh1;
mbed_official 237:f3da66175598 488
mbed_official 237:f3da66175598 489 /* Set the DMA error callback for channel1 */
mbed_official 237:f3da66175598 490 hdac->DMA_Handle1->XferErrorCallback = DAC_DMAErrorCh1;
mbed_official 237:f3da66175598 491
mbed_official 237:f3da66175598 492 /* Enable the selected DAC channel1 DMA request */
mbed_official 237:f3da66175598 493 hdac->Instance->CR |= DAC_CR_DMAEN1;
mbed_official 237:f3da66175598 494
mbed_official 237:f3da66175598 495 /* Case of use of channel 1 */
mbed_official 237:f3da66175598 496 switch(alignment)
mbed_official 237:f3da66175598 497 {
mbed_official 237:f3da66175598 498 case DAC_ALIGN_12B_R:
mbed_official 237:f3da66175598 499 /* Get DHR12R1 address */
mbed_official 237:f3da66175598 500 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
mbed_official 237:f3da66175598 501 break;
mbed_official 237:f3da66175598 502 case DAC_ALIGN_12B_L:
mbed_official 237:f3da66175598 503 /* Get DHR12L1 address */
mbed_official 237:f3da66175598 504 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
mbed_official 237:f3da66175598 505 break;
mbed_official 237:f3da66175598 506 case DAC_ALIGN_8B_R:
mbed_official 237:f3da66175598 507 /* Get DHR8R1 address */
mbed_official 237:f3da66175598 508 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
mbed_official 237:f3da66175598 509 break;
mbed_official 237:f3da66175598 510 default:
mbed_official 237:f3da66175598 511 break;
mbed_official 237:f3da66175598 512 }
mbed_official 237:f3da66175598 513
mbed_official 237:f3da66175598 514 /* Enable the DMA Channel */
mbed_official 237:f3da66175598 515 /* Enable the DAC DMA underrun interrupt */
mbed_official 237:f3da66175598 516 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
mbed_official 237:f3da66175598 517
mbed_official 237:f3da66175598 518 /* Enable the DMA Channel */
mbed_official 237:f3da66175598 519 HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
mbed_official 237:f3da66175598 520
mbed_official 237:f3da66175598 521 /* Enable the Peripheral */
mbed_official 237:f3da66175598 522 __HAL_DAC_ENABLE(hdac, channel);
mbed_official 237:f3da66175598 523
mbed_official 237:f3da66175598 524 /* Process Unlocked */
mbed_official 237:f3da66175598 525 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 526
mbed_official 237:f3da66175598 527 /* Return function status */
mbed_official 237:f3da66175598 528 return HAL_OK;
mbed_official 237:f3da66175598 529 }
mbed_official 375:3d36234a1087 530 #endif /* STM32F302xE || */
mbed_official 375:3d36234a1087 531 /* STM32F302xC || */
mbed_official 375:3d36234a1087 532 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 237:f3da66175598 533
mbed_official 237:f3da66175598 534 /* DAC 1 has 2 channels 1 & 2 - DAC 2 has one channel 1 */
mbed_official 375:3d36234a1087 535 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 536 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 537 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 538 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 375:3d36234a1087 539
mbed_official 237:f3da66175598 540 /* DAC 1 has 2 channels 1 & 2 */
mbed_official 237:f3da66175598 541
mbed_official 237:f3da66175598 542 /**
mbed_official 237:f3da66175598 543 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 237:f3da66175598 544 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 545 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 546 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 547 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 548 * @arg DAC_CHANNEL_1: DAC1 Channel1 or DAC2 Channel1 selected
mbed_official 237:f3da66175598 549 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 550 * @retval The selected DAC channel data output value.
mbed_official 237:f3da66175598 551 */
mbed_official 237:f3da66175598 552
mbed_official 237:f3da66175598 553
mbed_official 237:f3da66175598 554 /**
mbed_official 237:f3da66175598 555 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 237:f3da66175598 556 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 557 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 558 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 559 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 560 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 561 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 562 * @retval The selected DAC channel data output value.
mbed_official 237:f3da66175598 563 */
mbed_official 237:f3da66175598 564 uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t channel)
mbed_official 237:f3da66175598 565 {
mbed_official 237:f3da66175598 566 /* Check the parameters */
mbed_official 237:f3da66175598 567 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 568
mbed_official 237:f3da66175598 569 /* Returns the DAC channel data output register value */
mbed_official 237:f3da66175598 570 if(channel == DAC_CHANNEL_1)
mbed_official 237:f3da66175598 571 {
mbed_official 237:f3da66175598 572 return hdac->Instance->DOR1;
mbed_official 237:f3da66175598 573 }
mbed_official 237:f3da66175598 574 else /* channel = DAC_CHANNEL_2 */
mbed_official 237:f3da66175598 575 {
mbed_official 237:f3da66175598 576 return hdac->Instance->DOR2;
mbed_official 237:f3da66175598 577 }
mbed_official 237:f3da66175598 578 }
mbed_official 237:f3da66175598 579
mbed_official 375:3d36234a1087 580 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 581 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 582 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 583 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 584
mbed_official 375:3d36234a1087 585 #if defined(STM32F302xE) || \
mbed_official 375:3d36234a1087 586 defined(STM32F302xC) || \
mbed_official 375:3d36234a1087 587 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 237:f3da66175598 588 /* DAC 1 has 1 channel (channel 1) */
mbed_official 237:f3da66175598 589 /**
mbed_official 237:f3da66175598 590 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 237:f3da66175598 591 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 592 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 593 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 594 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 595 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 596 * @retval The selected DAC channel data output value.
mbed_official 237:f3da66175598 597 */
mbed_official 237:f3da66175598 598 uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t channel)
mbed_official 237:f3da66175598 599 {
mbed_official 237:f3da66175598 600 /* Check the parameters */
mbed_official 237:f3da66175598 601 assert_param(IS_DAC_CHANNEL_INSTANCE(hdac->Instance, channel));
mbed_official 237:f3da66175598 602
mbed_official 237:f3da66175598 603 /* Returns the DAC channel data output register value */
mbed_official 237:f3da66175598 604 return hdac->Instance->DOR1;
mbed_official 237:f3da66175598 605 }
mbed_official 375:3d36234a1087 606 #endif /* STM32F302xE || */
mbed_official 375:3d36234a1087 607 /* STM32F302xC || */
mbed_official 375:3d36234a1087 608 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 237:f3da66175598 609
mbed_official 375:3d36234a1087 610 #if defined(STM32F302xE) || \
mbed_official 375:3d36234a1087 611 defined(STM32F302xC) || \
mbed_official 375:3d36234a1087 612 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 237:f3da66175598 613 /* DAC channel 2 is NOT available. Only DAC channel 1 is available */
mbed_official 237:f3da66175598 614
mbed_official 237:f3da66175598 615 /**
mbed_official 237:f3da66175598 616 * @brief Handles DAC interrupt request
mbed_official 237:f3da66175598 617 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 618 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 619 * @retval None
mbed_official 237:f3da66175598 620 */
mbed_official 237:f3da66175598 621
mbed_official 237:f3da66175598 622 void HAL_DAC_IRQHandler(struct __DAC_HandleTypeDef* hdac)
mbed_official 237:f3da66175598 623 {
mbed_official 237:f3da66175598 624 /* Check Overrun flag */
mbed_official 237:f3da66175598 625 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR1))
mbed_official 237:f3da66175598 626 {
mbed_official 237:f3da66175598 627 /* Change DAC state to error state */
mbed_official 237:f3da66175598 628 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 237:f3da66175598 629
mbed_official 237:f3da66175598 630 /* Set DAC error code to chanel1 DMA underrun error */
mbed_official 237:f3da66175598 631 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH1;
mbed_official 237:f3da66175598 632
mbed_official 237:f3da66175598 633 /* Clear the underrun flag */
mbed_official 237:f3da66175598 634 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR1);
mbed_official 237:f3da66175598 635
mbed_official 237:f3da66175598 636 /* Disable the selected DAC channel1 DMA request */
mbed_official 237:f3da66175598 637 hdac->Instance->CR &= ~DAC_CR_DMAEN1;
mbed_official 237:f3da66175598 638
mbed_official 237:f3da66175598 639 /* Error callback */
mbed_official 237:f3da66175598 640 HAL_DAC_DMAUnderrunCallbackCh1(hdac);
mbed_official 237:f3da66175598 641 }
mbed_official 237:f3da66175598 642 }
mbed_official 375:3d36234a1087 643 #endif /* STM32F302xE || */
mbed_official 375:3d36234a1087 644 /* STM32F302xC || */
mbed_official 375:3d36234a1087 645 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 237:f3da66175598 646
mbed_official 375:3d36234a1087 647 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 648 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 649 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 650 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 651 /* DAC channel 2 is available on top of DAC channel 1 */
mbed_official 237:f3da66175598 652
mbed_official 237:f3da66175598 653 /**
mbed_official 237:f3da66175598 654 * @brief Handles DAC interrupt request
mbed_official 237:f3da66175598 655 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 656 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 657 * @retval None
mbed_official 237:f3da66175598 658 */
mbed_official 237:f3da66175598 659 void HAL_DAC_IRQHandler(struct __DAC_HandleTypeDef* hdac)
mbed_official 237:f3da66175598 660 {
mbed_official 237:f3da66175598 661 /* Check Overrun flag */
mbed_official 237:f3da66175598 662 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR1))
mbed_official 237:f3da66175598 663 {
mbed_official 237:f3da66175598 664 /* Change DAC state to error state */
mbed_official 237:f3da66175598 665 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 237:f3da66175598 666
mbed_official 237:f3da66175598 667 /* Set DAC error code to chanel1 DMA underrun error */
mbed_official 237:f3da66175598 668 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH1;
mbed_official 237:f3da66175598 669
mbed_official 237:f3da66175598 670 /* Clear the underrun flag */
mbed_official 237:f3da66175598 671 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR1);
mbed_official 237:f3da66175598 672
mbed_official 237:f3da66175598 673 /* Disable the selected DAC channel1 DMA request */
mbed_official 237:f3da66175598 674 hdac->Instance->CR &= ~DAC_CR_DMAEN1;
mbed_official 237:f3da66175598 675
mbed_official 237:f3da66175598 676 /* Error callback */
mbed_official 237:f3da66175598 677 HAL_DAC_DMAUnderrunCallbackCh1(hdac);
mbed_official 237:f3da66175598 678 }
mbed_official 237:f3da66175598 679 else
mbed_official 237:f3da66175598 680 {
mbed_official 237:f3da66175598 681 if (__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR2))
mbed_official 237:f3da66175598 682 {
mbed_official 237:f3da66175598 683 /* Change DAC state to error state */
mbed_official 237:f3da66175598 684 hdac->State = HAL_DAC_STATE_ERROR;
mbed_official 237:f3da66175598 685
mbed_official 237:f3da66175598 686 /* Set DAC error code to channel2 DMA underrun error */
mbed_official 237:f3da66175598 687 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH2;
mbed_official 237:f3da66175598 688
mbed_official 237:f3da66175598 689 /* Clear the underrun flag */
mbed_official 237:f3da66175598 690 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR2);
mbed_official 237:f3da66175598 691
mbed_official 237:f3da66175598 692 /* Disable the selected DAC channel1 DMA request */
mbed_official 237:f3da66175598 693 hdac->Instance->CR &= ~DAC_CR_DMAEN2;
mbed_official 237:f3da66175598 694
mbed_official 237:f3da66175598 695 /* Error callback */
mbed_official 237:f3da66175598 696 HAL_DACEx_DMAUnderrunCallbackCh2(hdac);
mbed_official 237:f3da66175598 697 }
mbed_official 237:f3da66175598 698 }
mbed_official 237:f3da66175598 699 }
mbed_official 375:3d36234a1087 700 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 701 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 702 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 703 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 704
mbed_official 237:f3da66175598 705 /**
mbed_official 237:f3da66175598 706 * @}
mbed_official 237:f3da66175598 707 */
mbed_official 237:f3da66175598 708
mbed_official 237:f3da66175598 709 /**
mbed_official 237:f3da66175598 710 * @}
mbed_official 237:f3da66175598 711 */
mbed_official 237:f3da66175598 712
mbed_official 375:3d36234a1087 713 /**
mbed_official 375:3d36234a1087 714 * @}
mbed_official 375:3d36234a1087 715 */
mbed_official 375:3d36234a1087 716
mbed_official 375:3d36234a1087 717 /** @addtogroup DACEx
mbed_official 237:f3da66175598 718 * @brief DACEx Extended HAL module driver
mbed_official 237:f3da66175598 719 * @{
mbed_official 237:f3da66175598 720 */
mbed_official 375:3d36234a1087 721 /* Exported functions ---------------------------------------------------------*/
mbed_official 375:3d36234a1087 722
mbed_official 375:3d36234a1087 723 /** @addtogroup DACEx_Exported_Functions DAC Extended Exported Functions
mbed_official 375:3d36234a1087 724 * @{
mbed_official 375:3d36234a1087 725 */
mbed_official 237:f3da66175598 726
mbed_official 375:3d36234a1087 727 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 728 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 729 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 730 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 731 /* DAC channel 2 is present in DAC 1 */
mbed_official 237:f3da66175598 732 /**
mbed_official 237:f3da66175598 733 * @brief Set the specified data holding register value for dual DAC channel.
mbed_official 237:f3da66175598 734 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 735 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 736 * @param alignment: Specifies the data alignment for dual channel DAC.
mbed_official 237:f3da66175598 737 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 738 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 237:f3da66175598 739 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 237:f3da66175598 740 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 237:f3da66175598 741 * @param data2: Data for DAC Channel2 to be loaded in the selected data holding register.
mbed_official 237:f3da66175598 742 * @param data1: Data for DAC Channel1 to be loaded in the selected data holding register.
mbed_official 237:f3da66175598 743 * @note In dual mode, a unique register access is required to write in both
mbed_official 237:f3da66175598 744 * DAC channels at the same time.
mbed_official 237:f3da66175598 745 * @retval HAL status
mbed_official 237:f3da66175598 746 */
mbed_official 237:f3da66175598 747 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t alignment, uint32_t data1, uint32_t data2)
mbed_official 237:f3da66175598 748 {
mbed_official 237:f3da66175598 749 uint32_t data = 0, tmp = 0;
mbed_official 237:f3da66175598 750
mbed_official 237:f3da66175598 751 /* Check the parameters */
mbed_official 237:f3da66175598 752 assert_param(IS_DAC_ALIGN(alignment));
mbed_official 237:f3da66175598 753 assert_param(IS_DAC_DATA(data1));
mbed_official 237:f3da66175598 754 assert_param(IS_DAC_DATA(data2));
mbed_official 237:f3da66175598 755
mbed_official 237:f3da66175598 756 /* Calculate and set dual DAC data holding register value */
mbed_official 237:f3da66175598 757 if (alignment == DAC_ALIGN_8B_R)
mbed_official 237:f3da66175598 758 {
mbed_official 237:f3da66175598 759 data = ((uint32_t)data2 << 8) | data1;
mbed_official 237:f3da66175598 760 }
mbed_official 237:f3da66175598 761 else
mbed_official 237:f3da66175598 762 {
mbed_official 237:f3da66175598 763 data = ((uint32_t)data2 << 16) | data1;
mbed_official 237:f3da66175598 764 }
mbed_official 237:f3da66175598 765
mbed_official 237:f3da66175598 766 tmp = (uint32_t) (hdac->Instance);
mbed_official 237:f3da66175598 767 tmp += __HAL_DHR12RD_ALIGNEMENT(alignment);
mbed_official 237:f3da66175598 768
mbed_official 237:f3da66175598 769 /* Set the dual DAC selected data holding register */
mbed_official 237:f3da66175598 770 *(__IO uint32_t *)tmp = data;
mbed_official 237:f3da66175598 771
mbed_official 237:f3da66175598 772 /* Return function status */
mbed_official 237:f3da66175598 773 return HAL_OK;
mbed_official 237:f3da66175598 774 }
mbed_official 375:3d36234a1087 775 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 776 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 777 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 778 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 779
mbed_official 237:f3da66175598 780 /**
mbed_official 237:f3da66175598 781 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 237:f3da66175598 782 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 783 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 784 * @retval The selected DAC channel data output value.
mbed_official 237:f3da66175598 785 */
mbed_official 237:f3da66175598 786 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac)
mbed_official 237:f3da66175598 787 {
mbed_official 237:f3da66175598 788 uint32_t tmp = 0;
mbed_official 237:f3da66175598 789
mbed_official 237:f3da66175598 790 tmp |= hdac->Instance->DOR1;
mbed_official 237:f3da66175598 791
mbed_official 375:3d36234a1087 792 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 793 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 794 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 795 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 796 /* DAC channel 2 is present in DAC 1 */
mbed_official 237:f3da66175598 797 tmp |= hdac->Instance->DOR2 << 16;
mbed_official 375:3d36234a1087 798 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 799 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 800 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 801 /* STM32F373xC || STM32F378xx */
mbed_official 375:3d36234a1087 802
mbed_official 237:f3da66175598 803 /* Returns the DAC channel data output register value */
mbed_official 237:f3da66175598 804 return tmp;
mbed_official 237:f3da66175598 805 }
mbed_official 237:f3da66175598 806
mbed_official 237:f3da66175598 807 /**
mbed_official 237:f3da66175598 808 * @brief Enables or disables the selected DAC channel wave generation.
mbed_official 237:f3da66175598 809 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 810 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 811 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 812 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 813 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 814 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 815 * @param Amplitude: Select max triangle amplitude.
mbed_official 237:f3da66175598 816 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 817 * @arg DAC_TRIANGLEAMPLITUDE_1: Select max triangle amplitude of 1
mbed_official 237:f3da66175598 818 * @arg DAC_TRIANGLEAMPLITUDE_3: Select max triangle amplitude of 3
mbed_official 237:f3da66175598 819 * @arg DAC_TRIANGLEAMPLITUDE_7: Select max triangle amplitude of 7
mbed_official 237:f3da66175598 820 * @arg DAC_TRIANGLEAMPLITUDE_15: Select max triangle amplitude of 15
mbed_official 237:f3da66175598 821 * @arg DAC_TRIANGLEAMPLITUDE_31: Select max triangle amplitude of 31
mbed_official 237:f3da66175598 822 * @arg DAC_TRIANGLEAMPLITUDE_63: Select max triangle amplitude of 63
mbed_official 237:f3da66175598 823 * @arg DAC_TRIANGLEAMPLITUDE_127: Select max triangle amplitude of 127
mbed_official 237:f3da66175598 824 * @arg DAC_TRIANGLEAMPLITUDE_255: Select max triangle amplitude of 255
mbed_official 237:f3da66175598 825 * @arg DAC_TRIANGLEAMPLITUDE_511: Select max triangle amplitude of 511
mbed_official 237:f3da66175598 826 * @arg DAC_TRIANGLEAMPLITUDE_1023: Select max triangle amplitude of 1023
mbed_official 237:f3da66175598 827 * @arg DAC_TRIANGLEAMPLITUDE_2047: Select max triangle amplitude of 2047
mbed_official 237:f3da66175598 828 * @arg DAC_TRIANGLEAMPLITUDE_4095: Select max triangle amplitude of 4095
mbed_official 237:f3da66175598 829 * @note Wave generation is not available in DAC2.
mbed_official 237:f3da66175598 830 * @retval HAL status
mbed_official 237:f3da66175598 831 */
mbed_official 237:f3da66175598 832 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t channel, uint32_t Amplitude)
mbed_official 237:f3da66175598 833 {
mbed_official 237:f3da66175598 834 /* Check the parameters */
mbed_official 237:f3da66175598 835 assert_param(IS_DAC_CHANNEL(channel));
mbed_official 237:f3da66175598 836 assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
mbed_official 237:f3da66175598 837
mbed_official 237:f3da66175598 838 /* Process locked */
mbed_official 237:f3da66175598 839 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 840
mbed_official 237:f3da66175598 841 /* Change DAC state */
mbed_official 237:f3da66175598 842 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 843
mbed_official 237:f3da66175598 844 /* Enable the selected wave generation for the selected DAC channel */
mbed_official 237:f3da66175598 845 hdac->Instance->CR |= (DAC_WAVE_TRIANGLE | Amplitude) << channel;
mbed_official 237:f3da66175598 846
mbed_official 237:f3da66175598 847 /* Change DAC state */
mbed_official 237:f3da66175598 848 hdac->State = HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 849
mbed_official 237:f3da66175598 850 /* Process unlocked */
mbed_official 237:f3da66175598 851 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 852
mbed_official 237:f3da66175598 853 /* Return function status */
mbed_official 237:f3da66175598 854 return HAL_OK;
mbed_official 237:f3da66175598 855 }
mbed_official 237:f3da66175598 856
mbed_official 237:f3da66175598 857 /**
mbed_official 237:f3da66175598 858 * @brief Enables or disables the selected DAC channel wave generation.
mbed_official 237:f3da66175598 859 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 860 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 861 * @param channel: The selected DAC channel.
mbed_official 237:f3da66175598 862 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 863 * @arg DAC_CHANNEL_1: DAC1 Channel1 selected
mbed_official 237:f3da66175598 864 * @arg DAC_CHANNEL_2: DAC1 Channel2 selected
mbed_official 237:f3da66175598 865 * @param Amplitude: Unmask DAC channel LFSR for noise wave generation.
mbed_official 237:f3da66175598 866 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 867 * @arg DAC_LFSRUNMASK_BIT0: Unmask DAC channel LFSR bit0 for noise wave generation
mbed_official 237:f3da66175598 868 * @arg DAC_LFSRUNMASK_BITS1_0: Unmask DAC channel LFSR bit[1:0] for noise wave generation
mbed_official 237:f3da66175598 869 * @arg DAC_LFSRUNMASK_BITS2_0: Unmask DAC channel LFSR bit[2:0] for noise wave generation
mbed_official 237:f3da66175598 870 * @arg DAC_LFSRUNMASK_BITS3_0: Unmask DAC channel LFSR bit[3:0] for noise wave generation
mbed_official 237:f3da66175598 871 * @arg DAC_LFSRUNMASK_BITS4_0: Unmask DAC channel LFSR bit[4:0] for noise wave generation
mbed_official 237:f3da66175598 872 * @arg DAC_LFSRUNMASK_BITS5_0: Unmask DAC channel LFSR bit[5:0] for noise wave generation
mbed_official 237:f3da66175598 873 * @arg DAC_LFSRUNMASK_BITS6_0: Unmask DAC channel LFSR bit[6:0] for noise wave generation
mbed_official 237:f3da66175598 874 * @arg DAC_LFSRUNMASK_BITS7_0: Unmask DAC channel LFSR bit[7:0] for noise wave generation
mbed_official 237:f3da66175598 875 * @arg DAC_LFSRUNMASK_BITS8_0: Unmask DAC channel LFSR bit[8:0] for noise wave generation
mbed_official 237:f3da66175598 876 * @arg DAC_LFSRUNMASK_BITS9_0: Unmask DAC channel LFSR bit[9:0] for noise wave generation
mbed_official 237:f3da66175598 877 * @arg DAC_LFSRUNMASK_BITS10_0: Unmask DAC channel LFSR bit[10:0] for noise wave generation
mbed_official 237:f3da66175598 878 * @arg DAC_LFSRUNMASK_BITS11_0: Unmask DAC channel LFSR bit[11:0] for noise wave generation
mbed_official 237:f3da66175598 879 * @retval HAL status
mbed_official 237:f3da66175598 880 */
mbed_official 237:f3da66175598 881 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t channel, uint32_t Amplitude)
mbed_official 237:f3da66175598 882 {
mbed_official 237:f3da66175598 883 /* Check the parameters */
mbed_official 237:f3da66175598 884 assert_param(IS_DAC_CHANNEL(channel));
mbed_official 237:f3da66175598 885 assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
mbed_official 237:f3da66175598 886
mbed_official 237:f3da66175598 887 /* Process locked */
mbed_official 237:f3da66175598 888 __HAL_LOCK(hdac);
mbed_official 237:f3da66175598 889
mbed_official 237:f3da66175598 890 /* Change DAC state */
mbed_official 237:f3da66175598 891 hdac->State = HAL_DAC_STATE_BUSY;
mbed_official 237:f3da66175598 892
mbed_official 237:f3da66175598 893 /* Enable the selected wave generation for the selected DAC channel */
mbed_official 237:f3da66175598 894 hdac->Instance->CR |= (DAC_WAVE_NOISE | Amplitude) << channel;
mbed_official 237:f3da66175598 895
mbed_official 237:f3da66175598 896 /* Change DAC state */
mbed_official 237:f3da66175598 897 hdac->State = HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 898
mbed_official 237:f3da66175598 899 /* Process unlocked */
mbed_official 237:f3da66175598 900 __HAL_UNLOCK(hdac);
mbed_official 237:f3da66175598 901
mbed_official 237:f3da66175598 902 /* Return function status */
mbed_official 237:f3da66175598 903 return HAL_OK;
mbed_official 237:f3da66175598 904 }
mbed_official 237:f3da66175598 905
mbed_official 237:f3da66175598 906 /**
mbed_official 237:f3da66175598 907 * @brief Conversion complete callback in non blocking mode for Channel2
mbed_official 237:f3da66175598 908 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 909 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 910 * @retval None
mbed_official 237:f3da66175598 911 */
mbed_official 237:f3da66175598 912 __weak void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac)
mbed_official 237:f3da66175598 913 {
mbed_official 237:f3da66175598 914 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 915 the HAL_DACEx_ConvCpltCallbackCh2 could be implemented in the user file
mbed_official 237:f3da66175598 916 */
mbed_official 237:f3da66175598 917 }
mbed_official 237:f3da66175598 918
mbed_official 237:f3da66175598 919 /**
mbed_official 237:f3da66175598 920 * @brief Conversion half DMA transfer callback in non blocking mode for Channel2
mbed_official 237:f3da66175598 921 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 922 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 923 * @retval None
mbed_official 237:f3da66175598 924 */
mbed_official 237:f3da66175598 925 __weak void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac)
mbed_official 237:f3da66175598 926 {
mbed_official 237:f3da66175598 927 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 928 the HAL_DACEx_ConvHalfCpltCallbackCh2 could be implemented in the user file
mbed_official 237:f3da66175598 929 */
mbed_official 237:f3da66175598 930 }
mbed_official 237:f3da66175598 931
mbed_official 237:f3da66175598 932 /**
mbed_official 237:f3da66175598 933 * @brief Error DAC callback for Channel2.
mbed_official 237:f3da66175598 934 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 935 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 936 * @retval None
mbed_official 237:f3da66175598 937 */
mbed_official 237:f3da66175598 938 __weak void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac)
mbed_official 237:f3da66175598 939 {
mbed_official 237:f3da66175598 940 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 941 the HAL_DACEx_ErrorCallbackCh2 could be implemented in the user file
mbed_official 237:f3da66175598 942 */
mbed_official 237:f3da66175598 943 }
mbed_official 237:f3da66175598 944
mbed_official 237:f3da66175598 945 /**
mbed_official 237:f3da66175598 946 * @brief DMA underrun DAC callback for channel2.
mbed_official 237:f3da66175598 947 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
mbed_official 237:f3da66175598 948 * the configuration information for the specified DAC.
mbed_official 237:f3da66175598 949 * @retval None
mbed_official 237:f3da66175598 950 */
mbed_official 237:f3da66175598 951 __weak void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac)
mbed_official 237:f3da66175598 952 {
mbed_official 237:f3da66175598 953 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 954 the HAL_DACEx_DMAUnderrunCallbackCh2 could be implemented in the user file
mbed_official 237:f3da66175598 955 */
mbed_official 237:f3da66175598 956 }
mbed_official 237:f3da66175598 957
mbed_official 237:f3da66175598 958 /**
mbed_official 237:f3da66175598 959 * @brief DMA conversion complete callback.
mbed_official 237:f3da66175598 960 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 961 * @retval None
mbed_official 237:f3da66175598 962 */
mbed_official 237:f3da66175598 963 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 964 {
mbed_official 237:f3da66175598 965 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 966
mbed_official 237:f3da66175598 967 HAL_DAC_ConvCpltCallbackCh1(hdac);
mbed_official 237:f3da66175598 968
mbed_official 237:f3da66175598 969 hdac->State= HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 970 }
mbed_official 237:f3da66175598 971
mbed_official 237:f3da66175598 972 /**
mbed_official 237:f3da66175598 973 * @brief DMA half transfer complete callback.
mbed_official 237:f3da66175598 974 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 975 * @retval None
mbed_official 237:f3da66175598 976 */
mbed_official 237:f3da66175598 977 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 978 {
mbed_official 237:f3da66175598 979 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 980 /* Conversion complete callback */
mbed_official 237:f3da66175598 981 HAL_DAC_ConvHalfCpltCallbackCh1(hdac);
mbed_official 237:f3da66175598 982 }
mbed_official 237:f3da66175598 983
mbed_official 237:f3da66175598 984 /**
mbed_official 237:f3da66175598 985 * @brief DMA error callback
mbed_official 237:f3da66175598 986 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 987 * @retval None
mbed_official 237:f3da66175598 988 */
mbed_official 237:f3da66175598 989 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 990 {
mbed_official 237:f3da66175598 991 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 992
mbed_official 237:f3da66175598 993 /* Set DAC error code to DMA error */
mbed_official 237:f3da66175598 994 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
mbed_official 237:f3da66175598 995
mbed_official 237:f3da66175598 996 HAL_DAC_ErrorCallbackCh1(hdac);
mbed_official 237:f3da66175598 997
mbed_official 237:f3da66175598 998 hdac->State= HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 999 }
mbed_official 237:f3da66175598 1000
mbed_official 375:3d36234a1087 1001 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 375:3d36234a1087 1002 defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 375:3d36234a1087 1003 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 375:3d36234a1087 1004 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 237:f3da66175598 1005 /* DAC channel 2 is available on top of DAC channel 1 */
mbed_official 237:f3da66175598 1006
mbed_official 237:f3da66175598 1007 /**
mbed_official 237:f3da66175598 1008 * @brief DMA conversion complete callback.
mbed_official 237:f3da66175598 1009 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 1010 * @retval None
mbed_official 237:f3da66175598 1011 */
mbed_official 237:f3da66175598 1012 static void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 1013 {
mbed_official 237:f3da66175598 1014 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 1015
mbed_official 237:f3da66175598 1016 HAL_DACEx_ConvCpltCallbackCh2(hdac);
mbed_official 237:f3da66175598 1017
mbed_official 237:f3da66175598 1018 hdac->State= HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 1019 }
mbed_official 237:f3da66175598 1020
mbed_official 237:f3da66175598 1021 /**
mbed_official 237:f3da66175598 1022 * @brief DMA half transfer complete callback.
mbed_official 237:f3da66175598 1023 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 1024 * @retval None
mbed_official 237:f3da66175598 1025 */
mbed_official 237:f3da66175598 1026 static void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 1027 {
mbed_official 237:f3da66175598 1028 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 1029 /* Conversion complete callback */
mbed_official 237:f3da66175598 1030 HAL_DACEx_ConvHalfCpltCallbackCh2(hdac);
mbed_official 237:f3da66175598 1031 }
mbed_official 237:f3da66175598 1032
mbed_official 237:f3da66175598 1033 /**
mbed_official 237:f3da66175598 1034 * @brief DMA error callback
mbed_official 237:f3da66175598 1035 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 1036 * @retval None
mbed_official 237:f3da66175598 1037 */
mbed_official 237:f3da66175598 1038 static void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 1039 {
mbed_official 237:f3da66175598 1040 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 1041
mbed_official 237:f3da66175598 1042 /* Set DAC error code to DMA error */
mbed_official 237:f3da66175598 1043 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
mbed_official 237:f3da66175598 1044
mbed_official 237:f3da66175598 1045 HAL_DACEx_ErrorCallbackCh2(hdac);
mbed_official 237:f3da66175598 1046
mbed_official 237:f3da66175598 1047 hdac->State= HAL_DAC_STATE_READY;
mbed_official 237:f3da66175598 1048 }
mbed_official 375:3d36234a1087 1049 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 375:3d36234a1087 1050 /* STM32F303xC || STM32F358xx || */
mbed_official 375:3d36234a1087 1051 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 375:3d36234a1087 1052 /* STM32F373xC || STM32F378xx */
mbed_official 237:f3da66175598 1053
mbed_official 237:f3da66175598 1054 /**
mbed_official 237:f3da66175598 1055 * @}
mbed_official 237:f3da66175598 1056 */
mbed_official 237:f3da66175598 1057
mbed_official 237:f3da66175598 1058 /**
mbed_official 237:f3da66175598 1059 * @}
mbed_official 237:f3da66175598 1060 */
mbed_official 237:f3da66175598 1061
mbed_official 237:f3da66175598 1062 #endif /* HAL_DAC_MODULE_ENABLED */
mbed_official 237:f3da66175598 1063 /**
mbed_official 237:f3da66175598 1064 * @}
mbed_official 237:f3da66175598 1065 */
mbed_official 237:f3da66175598 1066
mbed_official 237:f3da66175598 1067 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/