mbed library sources

Dependents:   frdm_kl05z_gpio_test

Fork of mbed-src by mbed official

Committer:
shaoziyang
Date:
Sat Sep 13 14:25:46 2014 +0000
Revision:
323:9e901b0a5aa1
Parent:
181:a4cbdfbbd2f4
test with CLOCK_SETUP = 0

Who changed what in which revision?

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