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:
Fri Oct 31 11:00:10 2014 +0000
Revision:
376:cb4d9db17537
Synchronized with git revision 07b49da75eac883fc8916d3d6b6962664b8db29e

Full URL: https://github.com/mbedmicro/mbed/commit/07b49da75eac883fc8916d3d6b6962664b8db29e/

Targets: DISCO_L053C8 - new platform - STM32L0 Discovery board

Who changed what in which revision?

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