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:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

Who changed what in which revision?

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