mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

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

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 632:7687fb9c4f91 5 * @version V1.1.1
mbed_official 632:7687fb9c4f91 6 * @date 19-June-2015
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 632:7687fb9c4f91 19 * <h2><center>&copy; COPYRIGHT(c) 2015 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****/