mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

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

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

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

Import librarymbed

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

Committer:
mbed_official
Date:
Mon Feb 03 09:30:05 2014 +0000
Revision:
84:f54042cbc282
Parent:
70:c1fbde68b492
Synchronized with git revision bbbd8699601c42149ccf0c37bc42bb6856ccc4c6

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

[NUCLEO_L152RE/F030_R8] SPI, I2C, Ticker, PWM updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 52:a51c77007319 1 /**
mbed_official 52:a51c77007319 2 ******************************************************************************
mbed_official 52:a51c77007319 3 * @file stm32f10x_dac.c
mbed_official 52:a51c77007319 4 * @author MCD Application Team
mbed_official 84:f54042cbc282 5 * @version V3.6.1
mbed_official 84:f54042cbc282 6 * @date 05-March-2012
mbed_official 52:a51c77007319 7 * @brief This file provides all the DAC firmware functions.
mbed_official 70:c1fbde68b492 8 *******************************************************************************
mbed_official 70:c1fbde68b492 9 * Copyright (c) 2014, STMicroelectronics
mbed_official 70:c1fbde68b492 10 * All rights reserved.
mbed_official 70:c1fbde68b492 11 *
mbed_official 70:c1fbde68b492 12 * Redistribution and use in source and binary forms, with or without
mbed_official 70:c1fbde68b492 13 * modification, are permitted provided that the following conditions are met:
mbed_official 70:c1fbde68b492 14 *
mbed_official 70:c1fbde68b492 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 70:c1fbde68b492 16 * this list of conditions and the following disclaimer.
mbed_official 70:c1fbde68b492 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 70:c1fbde68b492 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 70:c1fbde68b492 19 * and/or other materials provided with the distribution.
mbed_official 70:c1fbde68b492 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 70:c1fbde68b492 21 * may be used to endorse or promote products derived from this software
mbed_official 70:c1fbde68b492 22 * without specific prior written permission.
mbed_official 70:c1fbde68b492 23 *
mbed_official 70:c1fbde68b492 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 70:c1fbde68b492 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 70:c1fbde68b492 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 70:c1fbde68b492 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 70:c1fbde68b492 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 70:c1fbde68b492 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 70:c1fbde68b492 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 70:c1fbde68b492 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 70:c1fbde68b492 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 70:c1fbde68b492 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 70:c1fbde68b492 34 *******************************************************************************
mbed_official 70:c1fbde68b492 35 */
mbed_official 52:a51c77007319 36
mbed_official 52:a51c77007319 37 /* Includes ------------------------------------------------------------------*/
mbed_official 52:a51c77007319 38 #include "stm32f10x_dac.h"
mbed_official 52:a51c77007319 39 #include "stm32f10x_rcc.h"
mbed_official 52:a51c77007319 40
mbed_official 52:a51c77007319 41 /** @addtogroup STM32F10x_StdPeriph_Driver
mbed_official 52:a51c77007319 42 * @{
mbed_official 52:a51c77007319 43 */
mbed_official 52:a51c77007319 44
mbed_official 52:a51c77007319 45 /** @defgroup DAC
mbed_official 52:a51c77007319 46 * @brief DAC driver modules
mbed_official 52:a51c77007319 47 * @{
mbed_official 52:a51c77007319 48 */
mbed_official 52:a51c77007319 49
mbed_official 52:a51c77007319 50 /** @defgroup DAC_Private_TypesDefinitions
mbed_official 52:a51c77007319 51 * @{
mbed_official 52:a51c77007319 52 */
mbed_official 52:a51c77007319 53
mbed_official 52:a51c77007319 54 /**
mbed_official 52:a51c77007319 55 * @}
mbed_official 52:a51c77007319 56 */
mbed_official 52:a51c77007319 57
mbed_official 52:a51c77007319 58 /** @defgroup DAC_Private_Defines
mbed_official 52:a51c77007319 59 * @{
mbed_official 52:a51c77007319 60 */
mbed_official 52:a51c77007319 61
mbed_official 52:a51c77007319 62 /* CR register Mask */
mbed_official 52:a51c77007319 63 #define CR_CLEAR_MASK ((uint32_t)0x00000FFE)
mbed_official 52:a51c77007319 64
mbed_official 52:a51c77007319 65 /* DAC Dual Channels SWTRIG masks */
mbed_official 52:a51c77007319 66 #define DUAL_SWTRIG_SET ((uint32_t)0x00000003)
mbed_official 52:a51c77007319 67 #define DUAL_SWTRIG_RESET ((uint32_t)0xFFFFFFFC)
mbed_official 52:a51c77007319 68
mbed_official 52:a51c77007319 69 /* DHR registers offsets */
mbed_official 52:a51c77007319 70 #define DHR12R1_OFFSET ((uint32_t)0x00000008)
mbed_official 52:a51c77007319 71 #define DHR12R2_OFFSET ((uint32_t)0x00000014)
mbed_official 52:a51c77007319 72 #define DHR12RD_OFFSET ((uint32_t)0x00000020)
mbed_official 52:a51c77007319 73
mbed_official 52:a51c77007319 74 /* DOR register offset */
mbed_official 52:a51c77007319 75 #define DOR_OFFSET ((uint32_t)0x0000002C)
mbed_official 52:a51c77007319 76 /**
mbed_official 52:a51c77007319 77 * @}
mbed_official 52:a51c77007319 78 */
mbed_official 52:a51c77007319 79
mbed_official 52:a51c77007319 80 /** @defgroup DAC_Private_Macros
mbed_official 52:a51c77007319 81 * @{
mbed_official 52:a51c77007319 82 */
mbed_official 52:a51c77007319 83
mbed_official 52:a51c77007319 84 /**
mbed_official 52:a51c77007319 85 * @}
mbed_official 52:a51c77007319 86 */
mbed_official 52:a51c77007319 87
mbed_official 52:a51c77007319 88 /** @defgroup DAC_Private_Variables
mbed_official 52:a51c77007319 89 * @{
mbed_official 52:a51c77007319 90 */
mbed_official 52:a51c77007319 91
mbed_official 52:a51c77007319 92 /**
mbed_official 52:a51c77007319 93 * @}
mbed_official 52:a51c77007319 94 */
mbed_official 52:a51c77007319 95
mbed_official 52:a51c77007319 96 /** @defgroup DAC_Private_FunctionPrototypes
mbed_official 52:a51c77007319 97 * @{
mbed_official 52:a51c77007319 98 */
mbed_official 52:a51c77007319 99
mbed_official 52:a51c77007319 100 /**
mbed_official 52:a51c77007319 101 * @}
mbed_official 52:a51c77007319 102 */
mbed_official 52:a51c77007319 103
mbed_official 52:a51c77007319 104 /** @defgroup DAC_Private_Functions
mbed_official 52:a51c77007319 105 * @{
mbed_official 52:a51c77007319 106 */
mbed_official 52:a51c77007319 107
mbed_official 52:a51c77007319 108 /**
mbed_official 52:a51c77007319 109 * @brief Deinitializes the DAC peripheral registers to their default reset values.
mbed_official 52:a51c77007319 110 * @param None
mbed_official 52:a51c77007319 111 * @retval None
mbed_official 52:a51c77007319 112 */
mbed_official 52:a51c77007319 113 void DAC_DeInit(void)
mbed_official 52:a51c77007319 114 {
mbed_official 52:a51c77007319 115 /* Enable DAC reset state */
mbed_official 52:a51c77007319 116 RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE);
mbed_official 52:a51c77007319 117 /* Release DAC from reset state */
mbed_official 52:a51c77007319 118 RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE);
mbed_official 52:a51c77007319 119 }
mbed_official 52:a51c77007319 120
mbed_official 52:a51c77007319 121 /**
mbed_official 52:a51c77007319 122 * @brief Initializes the DAC peripheral according to the specified
mbed_official 52:a51c77007319 123 * parameters in the DAC_InitStruct.
mbed_official 52:a51c77007319 124 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 125 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 126 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 127 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 128 * @param DAC_InitStruct: pointer to a DAC_InitTypeDef structure that
mbed_official 52:a51c77007319 129 * contains the configuration information for the specified DAC channel.
mbed_official 52:a51c77007319 130 * @retval None
mbed_official 52:a51c77007319 131 */
mbed_official 52:a51c77007319 132 void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct)
mbed_official 52:a51c77007319 133 {
mbed_official 52:a51c77007319 134 uint32_t tmpreg1 = 0, tmpreg2 = 0;
mbed_official 52:a51c77007319 135 /* Check the DAC parameters */
mbed_official 52:a51c77007319 136 assert_param(IS_DAC_TRIGGER(DAC_InitStruct->DAC_Trigger));
mbed_official 52:a51c77007319 137 assert_param(IS_DAC_GENERATE_WAVE(DAC_InitStruct->DAC_WaveGeneration));
mbed_official 52:a51c77007319 138 assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude));
mbed_official 52:a51c77007319 139 assert_param(IS_DAC_OUTPUT_BUFFER_STATE(DAC_InitStruct->DAC_OutputBuffer));
mbed_official 52:a51c77007319 140 /*---------------------------- DAC CR Configuration --------------------------*/
mbed_official 52:a51c77007319 141 /* Get the DAC CR value */
mbed_official 52:a51c77007319 142 tmpreg1 = DAC->CR;
mbed_official 52:a51c77007319 143 /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
mbed_official 52:a51c77007319 144 tmpreg1 &= ~(CR_CLEAR_MASK << DAC_Channel);
mbed_official 52:a51c77007319 145 /* Configure for the selected DAC channel: buffer output, trigger, wave generation,
mbed_official 52:a51c77007319 146 mask/amplitude for wave generation */
mbed_official 52:a51c77007319 147 /* Set TSELx and TENx bits according to DAC_Trigger value */
mbed_official 52:a51c77007319 148 /* Set WAVEx bits according to DAC_WaveGeneration value */
mbed_official 52:a51c77007319 149 /* Set MAMPx bits according to DAC_LFSRUnmask_TriangleAmplitude value */
mbed_official 52:a51c77007319 150 /* Set BOFFx bit according to DAC_OutputBuffer value */
mbed_official 52:a51c77007319 151 tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration |
mbed_official 52:a51c77007319 152 DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | DAC_InitStruct->DAC_OutputBuffer);
mbed_official 52:a51c77007319 153 /* Calculate CR register value depending on DAC_Channel */
mbed_official 52:a51c77007319 154 tmpreg1 |= tmpreg2 << DAC_Channel;
mbed_official 52:a51c77007319 155 /* Write to DAC CR */
mbed_official 52:a51c77007319 156 DAC->CR = tmpreg1;
mbed_official 52:a51c77007319 157 }
mbed_official 52:a51c77007319 158
mbed_official 52:a51c77007319 159 /**
mbed_official 52:a51c77007319 160 * @brief Fills each DAC_InitStruct member with its default value.
mbed_official 52:a51c77007319 161 * @param DAC_InitStruct : pointer to a DAC_InitTypeDef structure which will
mbed_official 52:a51c77007319 162 * be initialized.
mbed_official 52:a51c77007319 163 * @retval None
mbed_official 52:a51c77007319 164 */
mbed_official 52:a51c77007319 165 void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct)
mbed_official 52:a51c77007319 166 {
mbed_official 52:a51c77007319 167 /*--------------- Reset DAC init structure parameters values -----------------*/
mbed_official 52:a51c77007319 168 /* Initialize the DAC_Trigger member */
mbed_official 52:a51c77007319 169 DAC_InitStruct->DAC_Trigger = DAC_Trigger_None;
mbed_official 52:a51c77007319 170 /* Initialize the DAC_WaveGeneration member */
mbed_official 52:a51c77007319 171 DAC_InitStruct->DAC_WaveGeneration = DAC_WaveGeneration_None;
mbed_official 52:a51c77007319 172 /* Initialize the DAC_LFSRUnmask_TriangleAmplitude member */
mbed_official 52:a51c77007319 173 DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
mbed_official 52:a51c77007319 174 /* Initialize the DAC_OutputBuffer member */
mbed_official 52:a51c77007319 175 DAC_InitStruct->DAC_OutputBuffer = DAC_OutputBuffer_Enable;
mbed_official 52:a51c77007319 176 }
mbed_official 52:a51c77007319 177
mbed_official 52:a51c77007319 178 /**
mbed_official 52:a51c77007319 179 * @brief Enables or disables the specified DAC channel.
mbed_official 52:a51c77007319 180 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 181 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 182 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 183 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 184 * @param NewState: new state of the DAC channel.
mbed_official 52:a51c77007319 185 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 186 * @retval None
mbed_official 52:a51c77007319 187 */
mbed_official 52:a51c77007319 188 void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState)
mbed_official 52:a51c77007319 189 {
mbed_official 52:a51c77007319 190 /* Check the parameters */
mbed_official 52:a51c77007319 191 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 192 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 193 if (NewState != DISABLE)
mbed_official 52:a51c77007319 194 {
mbed_official 52:a51c77007319 195 /* Enable the selected DAC channel */
mbed_official 52:a51c77007319 196 DAC->CR |= (DAC_CR_EN1 << DAC_Channel);
mbed_official 52:a51c77007319 197 }
mbed_official 52:a51c77007319 198 else
mbed_official 52:a51c77007319 199 {
mbed_official 52:a51c77007319 200 /* Disable the selected DAC channel */
mbed_official 52:a51c77007319 201 DAC->CR &= ~(DAC_CR_EN1 << DAC_Channel);
mbed_official 52:a51c77007319 202 }
mbed_official 52:a51c77007319 203 }
mbed_official 52:a51c77007319 204 #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
mbed_official 52:a51c77007319 205 /**
mbed_official 52:a51c77007319 206 * @brief Enables or disables the specified DAC interrupts.
mbed_official 52:a51c77007319 207 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 208 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 209 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 210 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 211 * @param DAC_IT: specifies the DAC interrupt sources to be enabled or disabled.
mbed_official 52:a51c77007319 212 * This parameter can be the following values:
mbed_official 52:a51c77007319 213 * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask
mbed_official 52:a51c77007319 214 * @param NewState: new state of the specified DAC interrupts.
mbed_official 52:a51c77007319 215 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 216 * @retval None
mbed_official 52:a51c77007319 217 */
mbed_official 52:a51c77007319 218 void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState)
mbed_official 52:a51c77007319 219 {
mbed_official 52:a51c77007319 220 /* Check the parameters */
mbed_official 52:a51c77007319 221 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 222 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 223 assert_param(IS_DAC_IT(DAC_IT));
mbed_official 52:a51c77007319 224
mbed_official 52:a51c77007319 225 if (NewState != DISABLE)
mbed_official 52:a51c77007319 226 {
mbed_official 52:a51c77007319 227 /* Enable the selected DAC interrupts */
mbed_official 52:a51c77007319 228 DAC->CR |= (DAC_IT << DAC_Channel);
mbed_official 52:a51c77007319 229 }
mbed_official 52:a51c77007319 230 else
mbed_official 52:a51c77007319 231 {
mbed_official 52:a51c77007319 232 /* Disable the selected DAC interrupts */
mbed_official 52:a51c77007319 233 DAC->CR &= (~(uint32_t)(DAC_IT << DAC_Channel));
mbed_official 52:a51c77007319 234 }
mbed_official 52:a51c77007319 235 }
mbed_official 52:a51c77007319 236 #endif
mbed_official 52:a51c77007319 237
mbed_official 52:a51c77007319 238 /**
mbed_official 52:a51c77007319 239 * @brief Enables or disables the specified DAC channel DMA request.
mbed_official 52:a51c77007319 240 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 241 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 242 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 243 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 244 * @param NewState: new state of the selected DAC channel DMA request.
mbed_official 52:a51c77007319 245 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 246 * @retval None
mbed_official 52:a51c77007319 247 */
mbed_official 52:a51c77007319 248 void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState)
mbed_official 52:a51c77007319 249 {
mbed_official 52:a51c77007319 250 /* Check the parameters */
mbed_official 52:a51c77007319 251 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 252 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 253 if (NewState != DISABLE)
mbed_official 52:a51c77007319 254 {
mbed_official 52:a51c77007319 255 /* Enable the selected DAC channel DMA request */
mbed_official 52:a51c77007319 256 DAC->CR |= (DAC_CR_DMAEN1 << DAC_Channel);
mbed_official 52:a51c77007319 257 }
mbed_official 52:a51c77007319 258 else
mbed_official 52:a51c77007319 259 {
mbed_official 52:a51c77007319 260 /* Disable the selected DAC channel DMA request */
mbed_official 52:a51c77007319 261 DAC->CR &= ~(DAC_CR_DMAEN1 << DAC_Channel);
mbed_official 52:a51c77007319 262 }
mbed_official 52:a51c77007319 263 }
mbed_official 52:a51c77007319 264
mbed_official 52:a51c77007319 265 /**
mbed_official 52:a51c77007319 266 * @brief Enables or disables the selected DAC channel software trigger.
mbed_official 52:a51c77007319 267 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 268 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 269 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 270 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 271 * @param NewState: new state of the selected DAC channel software trigger.
mbed_official 52:a51c77007319 272 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 273 * @retval None
mbed_official 52:a51c77007319 274 */
mbed_official 52:a51c77007319 275 void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState)
mbed_official 52:a51c77007319 276 {
mbed_official 52:a51c77007319 277 /* Check the parameters */
mbed_official 52:a51c77007319 278 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 279 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 280 if (NewState != DISABLE)
mbed_official 52:a51c77007319 281 {
mbed_official 52:a51c77007319 282 /* Enable software trigger for the selected DAC channel */
mbed_official 52:a51c77007319 283 DAC->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4);
mbed_official 52:a51c77007319 284 }
mbed_official 52:a51c77007319 285 else
mbed_official 52:a51c77007319 286 {
mbed_official 52:a51c77007319 287 /* Disable software trigger for the selected DAC channel */
mbed_official 52:a51c77007319 288 DAC->SWTRIGR &= ~((uint32_t)DAC_SWTRIGR_SWTRIG1 << (DAC_Channel >> 4));
mbed_official 52:a51c77007319 289 }
mbed_official 52:a51c77007319 290 }
mbed_official 52:a51c77007319 291
mbed_official 52:a51c77007319 292 /**
mbed_official 52:a51c77007319 293 * @brief Enables or disables simultaneously the two DAC channels software
mbed_official 52:a51c77007319 294 * triggers.
mbed_official 52:a51c77007319 295 * @param NewState: new state of the DAC channels software triggers.
mbed_official 52:a51c77007319 296 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 297 * @retval None
mbed_official 52:a51c77007319 298 */
mbed_official 52:a51c77007319 299 void DAC_DualSoftwareTriggerCmd(FunctionalState NewState)
mbed_official 52:a51c77007319 300 {
mbed_official 52:a51c77007319 301 /* Check the parameters */
mbed_official 52:a51c77007319 302 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 303 if (NewState != DISABLE)
mbed_official 52:a51c77007319 304 {
mbed_official 52:a51c77007319 305 /* Enable software trigger for both DAC channels */
mbed_official 52:a51c77007319 306 DAC->SWTRIGR |= DUAL_SWTRIG_SET ;
mbed_official 52:a51c77007319 307 }
mbed_official 52:a51c77007319 308 else
mbed_official 52:a51c77007319 309 {
mbed_official 52:a51c77007319 310 /* Disable software trigger for both DAC channels */
mbed_official 52:a51c77007319 311 DAC->SWTRIGR &= DUAL_SWTRIG_RESET;
mbed_official 52:a51c77007319 312 }
mbed_official 52:a51c77007319 313 }
mbed_official 52:a51c77007319 314
mbed_official 52:a51c77007319 315 /**
mbed_official 52:a51c77007319 316 * @brief Enables or disables the selected DAC channel wave generation.
mbed_official 52:a51c77007319 317 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 318 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 319 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 320 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 321 * @param DAC_Wave: Specifies the wave type to enable or disable.
mbed_official 52:a51c77007319 322 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 323 * @arg DAC_Wave_Noise: noise wave generation
mbed_official 52:a51c77007319 324 * @arg DAC_Wave_Triangle: triangle wave generation
mbed_official 52:a51c77007319 325 * @param NewState: new state of the selected DAC channel wave generation.
mbed_official 52:a51c77007319 326 * This parameter can be: ENABLE or DISABLE.
mbed_official 52:a51c77007319 327 * @retval None
mbed_official 52:a51c77007319 328 */
mbed_official 52:a51c77007319 329 void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState)
mbed_official 52:a51c77007319 330 {
mbed_official 52:a51c77007319 331 /* Check the parameters */
mbed_official 52:a51c77007319 332 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 333 assert_param(IS_DAC_WAVE(DAC_Wave));
mbed_official 52:a51c77007319 334 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 52:a51c77007319 335 if (NewState != DISABLE)
mbed_official 52:a51c77007319 336 {
mbed_official 52:a51c77007319 337 /* Enable the selected wave generation for the selected DAC channel */
mbed_official 52:a51c77007319 338 DAC->CR |= DAC_Wave << DAC_Channel;
mbed_official 52:a51c77007319 339 }
mbed_official 52:a51c77007319 340 else
mbed_official 52:a51c77007319 341 {
mbed_official 52:a51c77007319 342 /* Disable the selected wave generation for the selected DAC channel */
mbed_official 52:a51c77007319 343 DAC->CR &= ~(DAC_Wave << DAC_Channel);
mbed_official 52:a51c77007319 344 }
mbed_official 52:a51c77007319 345 }
mbed_official 52:a51c77007319 346
mbed_official 52:a51c77007319 347 /**
mbed_official 52:a51c77007319 348 * @brief Set the specified data holding register value for DAC channel1.
mbed_official 52:a51c77007319 349 * @param DAC_Align: Specifies the data alignment for DAC channel1.
mbed_official 52:a51c77007319 350 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 351 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 52:a51c77007319 352 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 52:a51c77007319 353 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 52:a51c77007319 354 * @param Data : Data to be loaded in the selected data holding register.
mbed_official 52:a51c77007319 355 * @retval None
mbed_official 52:a51c77007319 356 */
mbed_official 52:a51c77007319 357 void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
mbed_official 52:a51c77007319 358 {
mbed_official 52:a51c77007319 359 __IO uint32_t tmp = 0;
mbed_official 52:a51c77007319 360
mbed_official 52:a51c77007319 361 /* Check the parameters */
mbed_official 52:a51c77007319 362 assert_param(IS_DAC_ALIGN(DAC_Align));
mbed_official 52:a51c77007319 363 assert_param(IS_DAC_DATA(Data));
mbed_official 52:a51c77007319 364
mbed_official 52:a51c77007319 365 tmp = (uint32_t)DAC_BASE;
mbed_official 52:a51c77007319 366 tmp += DHR12R1_OFFSET + DAC_Align;
mbed_official 52:a51c77007319 367
mbed_official 52:a51c77007319 368 /* Set the DAC channel1 selected data holding register */
mbed_official 52:a51c77007319 369 *(__IO uint32_t *) tmp = Data;
mbed_official 52:a51c77007319 370 }
mbed_official 52:a51c77007319 371
mbed_official 52:a51c77007319 372 /**
mbed_official 52:a51c77007319 373 * @brief Set the specified data holding register value for DAC channel2.
mbed_official 52:a51c77007319 374 * @param DAC_Align: Specifies the data alignment for DAC channel2.
mbed_official 52:a51c77007319 375 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 376 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 52:a51c77007319 377 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 52:a51c77007319 378 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 52:a51c77007319 379 * @param Data : Data to be loaded in the selected data holding register.
mbed_official 52:a51c77007319 380 * @retval None
mbed_official 52:a51c77007319 381 */
mbed_official 52:a51c77007319 382 void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data)
mbed_official 52:a51c77007319 383 {
mbed_official 52:a51c77007319 384 __IO uint32_t tmp = 0;
mbed_official 52:a51c77007319 385
mbed_official 52:a51c77007319 386 /* Check the parameters */
mbed_official 52:a51c77007319 387 assert_param(IS_DAC_ALIGN(DAC_Align));
mbed_official 52:a51c77007319 388 assert_param(IS_DAC_DATA(Data));
mbed_official 52:a51c77007319 389
mbed_official 52:a51c77007319 390 tmp = (uint32_t)DAC_BASE;
mbed_official 52:a51c77007319 391 tmp += DHR12R2_OFFSET + DAC_Align;
mbed_official 52:a51c77007319 392
mbed_official 52:a51c77007319 393 /* Set the DAC channel2 selected data holding register */
mbed_official 52:a51c77007319 394 *(__IO uint32_t *)tmp = Data;
mbed_official 52:a51c77007319 395 }
mbed_official 52:a51c77007319 396
mbed_official 52:a51c77007319 397 /**
mbed_official 52:a51c77007319 398 * @brief Set the specified data holding register value for dual channel
mbed_official 52:a51c77007319 399 * DAC.
mbed_official 52:a51c77007319 400 * @param DAC_Align: Specifies the data alignment for dual channel DAC.
mbed_official 52:a51c77007319 401 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 402 * @arg DAC_Align_8b_R: 8bit right data alignment selected
mbed_official 52:a51c77007319 403 * @arg DAC_Align_12b_L: 12bit left data alignment selected
mbed_official 52:a51c77007319 404 * @arg DAC_Align_12b_R: 12bit right data alignment selected
mbed_official 52:a51c77007319 405 * @param Data2: Data for DAC Channel2 to be loaded in the selected data
mbed_official 52:a51c77007319 406 * holding register.
mbed_official 52:a51c77007319 407 * @param Data1: Data for DAC Channel1 to be loaded in the selected data
mbed_official 52:a51c77007319 408 * holding register.
mbed_official 52:a51c77007319 409 * @retval None
mbed_official 52:a51c77007319 410 */
mbed_official 52:a51c77007319 411 void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)
mbed_official 52:a51c77007319 412 {
mbed_official 52:a51c77007319 413 uint32_t data = 0, tmp = 0;
mbed_official 52:a51c77007319 414
mbed_official 52:a51c77007319 415 /* Check the parameters */
mbed_official 52:a51c77007319 416 assert_param(IS_DAC_ALIGN(DAC_Align));
mbed_official 52:a51c77007319 417 assert_param(IS_DAC_DATA(Data1));
mbed_official 52:a51c77007319 418 assert_param(IS_DAC_DATA(Data2));
mbed_official 52:a51c77007319 419
mbed_official 52:a51c77007319 420 /* Calculate and set dual DAC data holding register value */
mbed_official 52:a51c77007319 421 if (DAC_Align == DAC_Align_8b_R)
mbed_official 52:a51c77007319 422 {
mbed_official 52:a51c77007319 423 data = ((uint32_t)Data2 << 8) | Data1;
mbed_official 52:a51c77007319 424 }
mbed_official 52:a51c77007319 425 else
mbed_official 52:a51c77007319 426 {
mbed_official 52:a51c77007319 427 data = ((uint32_t)Data2 << 16) | Data1;
mbed_official 52:a51c77007319 428 }
mbed_official 52:a51c77007319 429
mbed_official 52:a51c77007319 430 tmp = (uint32_t)DAC_BASE;
mbed_official 52:a51c77007319 431 tmp += DHR12RD_OFFSET + DAC_Align;
mbed_official 52:a51c77007319 432
mbed_official 52:a51c77007319 433 /* Set the dual DAC selected data holding register */
mbed_official 52:a51c77007319 434 *(__IO uint32_t *)tmp = data;
mbed_official 52:a51c77007319 435 }
mbed_official 52:a51c77007319 436
mbed_official 52:a51c77007319 437 /**
mbed_official 52:a51c77007319 438 * @brief Returns the last data output value of the selected DAC channel.
mbed_official 52:a51c77007319 439 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 440 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 441 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 442 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 443 * @retval The selected DAC channel data output value.
mbed_official 52:a51c77007319 444 */
mbed_official 52:a51c77007319 445 uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel)
mbed_official 52:a51c77007319 446 {
mbed_official 52:a51c77007319 447 __IO uint32_t tmp = 0;
mbed_official 52:a51c77007319 448
mbed_official 52:a51c77007319 449 /* Check the parameters */
mbed_official 52:a51c77007319 450 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 451
mbed_official 52:a51c77007319 452 tmp = (uint32_t) DAC_BASE ;
mbed_official 52:a51c77007319 453 tmp += DOR_OFFSET + ((uint32_t)DAC_Channel >> 2);
mbed_official 52:a51c77007319 454
mbed_official 52:a51c77007319 455 /* Returns the DAC channel data output register value */
mbed_official 52:a51c77007319 456 return (uint16_t) (*(__IO uint32_t*) tmp);
mbed_official 52:a51c77007319 457 }
mbed_official 52:a51c77007319 458
mbed_official 52:a51c77007319 459 #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
mbed_official 52:a51c77007319 460 /**
mbed_official 52:a51c77007319 461 * @brief Checks whether the specified DAC flag is set or not.
mbed_official 52:a51c77007319 462 * @param DAC_Channel: thee selected DAC channel.
mbed_official 52:a51c77007319 463 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 464 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 465 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 466 * @param DAC_FLAG: specifies the flag to check.
mbed_official 52:a51c77007319 467 * This parameter can be only of the following value:
mbed_official 52:a51c77007319 468 * @arg DAC_FLAG_DMAUDR: DMA underrun flag
mbed_official 52:a51c77007319 469 * @retval The new state of DAC_FLAG (SET or RESET).
mbed_official 52:a51c77007319 470 */
mbed_official 52:a51c77007319 471 FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG)
mbed_official 52:a51c77007319 472 {
mbed_official 52:a51c77007319 473 FlagStatus bitstatus = RESET;
mbed_official 52:a51c77007319 474 /* Check the parameters */
mbed_official 52:a51c77007319 475 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 476 assert_param(IS_DAC_FLAG(DAC_FLAG));
mbed_official 52:a51c77007319 477
mbed_official 52:a51c77007319 478 /* Check the status of the specified DAC flag */
mbed_official 52:a51c77007319 479 if ((DAC->SR & (DAC_FLAG << DAC_Channel)) != (uint8_t)RESET)
mbed_official 52:a51c77007319 480 {
mbed_official 52:a51c77007319 481 /* DAC_FLAG is set */
mbed_official 52:a51c77007319 482 bitstatus = SET;
mbed_official 52:a51c77007319 483 }
mbed_official 52:a51c77007319 484 else
mbed_official 52:a51c77007319 485 {
mbed_official 52:a51c77007319 486 /* DAC_FLAG is reset */
mbed_official 52:a51c77007319 487 bitstatus = RESET;
mbed_official 52:a51c77007319 488 }
mbed_official 52:a51c77007319 489 /* Return the DAC_FLAG status */
mbed_official 52:a51c77007319 490 return bitstatus;
mbed_official 52:a51c77007319 491 }
mbed_official 52:a51c77007319 492
mbed_official 52:a51c77007319 493 /**
mbed_official 52:a51c77007319 494 * @brief Clears the DAC channelx's pending flags.
mbed_official 52:a51c77007319 495 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 496 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 497 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 498 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 499 * @param DAC_FLAG: specifies the flag to clear.
mbed_official 52:a51c77007319 500 * This parameter can be of the following value:
mbed_official 52:a51c77007319 501 * @arg DAC_FLAG_DMAUDR: DMA underrun flag
mbed_official 52:a51c77007319 502 * @retval None
mbed_official 52:a51c77007319 503 */
mbed_official 52:a51c77007319 504 void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG)
mbed_official 52:a51c77007319 505 {
mbed_official 52:a51c77007319 506 /* Check the parameters */
mbed_official 52:a51c77007319 507 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 508 assert_param(IS_DAC_FLAG(DAC_FLAG));
mbed_official 52:a51c77007319 509
mbed_official 52:a51c77007319 510 /* Clear the selected DAC flags */
mbed_official 52:a51c77007319 511 DAC->SR = (DAC_FLAG << DAC_Channel);
mbed_official 52:a51c77007319 512 }
mbed_official 52:a51c77007319 513
mbed_official 52:a51c77007319 514 /**
mbed_official 52:a51c77007319 515 * @brief Checks whether the specified DAC interrupt has occurred or not.
mbed_official 52:a51c77007319 516 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 517 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 518 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 519 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 520 * @param DAC_IT: specifies the DAC interrupt source to check.
mbed_official 52:a51c77007319 521 * This parameter can be the following values:
mbed_official 52:a51c77007319 522 * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask
mbed_official 52:a51c77007319 523 * @retval The new state of DAC_IT (SET or RESET).
mbed_official 52:a51c77007319 524 */
mbed_official 52:a51c77007319 525 ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT)
mbed_official 52:a51c77007319 526 {
mbed_official 52:a51c77007319 527 ITStatus bitstatus = RESET;
mbed_official 52:a51c77007319 528 uint32_t enablestatus = 0;
mbed_official 52:a51c77007319 529
mbed_official 52:a51c77007319 530 /* Check the parameters */
mbed_official 52:a51c77007319 531 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 532 assert_param(IS_DAC_IT(DAC_IT));
mbed_official 52:a51c77007319 533
mbed_official 52:a51c77007319 534 /* Get the DAC_IT enable bit status */
mbed_official 52:a51c77007319 535 enablestatus = (DAC->CR & (DAC_IT << DAC_Channel)) ;
mbed_official 52:a51c77007319 536
mbed_official 52:a51c77007319 537 /* Check the status of the specified DAC interrupt */
mbed_official 52:a51c77007319 538 if (((DAC->SR & (DAC_IT << DAC_Channel)) != (uint32_t)RESET) && enablestatus)
mbed_official 52:a51c77007319 539 {
mbed_official 52:a51c77007319 540 /* DAC_IT is set */
mbed_official 52:a51c77007319 541 bitstatus = SET;
mbed_official 52:a51c77007319 542 }
mbed_official 52:a51c77007319 543 else
mbed_official 52:a51c77007319 544 {
mbed_official 52:a51c77007319 545 /* DAC_IT is reset */
mbed_official 52:a51c77007319 546 bitstatus = RESET;
mbed_official 52:a51c77007319 547 }
mbed_official 52:a51c77007319 548 /* Return the DAC_IT status */
mbed_official 52:a51c77007319 549 return bitstatus;
mbed_official 52:a51c77007319 550 }
mbed_official 52:a51c77007319 551
mbed_official 52:a51c77007319 552 /**
mbed_official 52:a51c77007319 553 * @brief Clears the DAC channelx's interrupt pending bits.
mbed_official 52:a51c77007319 554 * @param DAC_Channel: the selected DAC channel.
mbed_official 52:a51c77007319 555 * This parameter can be one of the following values:
mbed_official 52:a51c77007319 556 * @arg DAC_Channel_1: DAC Channel1 selected
mbed_official 52:a51c77007319 557 * @arg DAC_Channel_2: DAC Channel2 selected
mbed_official 52:a51c77007319 558 * @param DAC_IT: specifies the DAC interrupt pending bit to clear.
mbed_official 52:a51c77007319 559 * This parameter can be the following values:
mbed_official 52:a51c77007319 560 * @arg DAC_IT_DMAUDR: DMA underrun interrupt mask
mbed_official 52:a51c77007319 561 * @retval None
mbed_official 52:a51c77007319 562 */
mbed_official 52:a51c77007319 563 void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT)
mbed_official 52:a51c77007319 564 {
mbed_official 52:a51c77007319 565 /* Check the parameters */
mbed_official 52:a51c77007319 566 assert_param(IS_DAC_CHANNEL(DAC_Channel));
mbed_official 52:a51c77007319 567 assert_param(IS_DAC_IT(DAC_IT));
mbed_official 52:a51c77007319 568
mbed_official 52:a51c77007319 569 /* Clear the selected DAC interrupt pending bits */
mbed_official 52:a51c77007319 570 DAC->SR = (DAC_IT << DAC_Channel);
mbed_official 52:a51c77007319 571 }
mbed_official 52:a51c77007319 572 #endif
mbed_official 52:a51c77007319 573
mbed_official 52:a51c77007319 574 /**
mbed_official 52:a51c77007319 575 * @}
mbed_official 52:a51c77007319 576 */
mbed_official 52:a51c77007319 577
mbed_official 52:a51c77007319 578 /**
mbed_official 52:a51c77007319 579 * @}
mbed_official 52:a51c77007319 580 */
mbed_official 52:a51c77007319 581
mbed_official 52:a51c77007319 582 /**
mbed_official 52:a51c77007319 583 * @}
mbed_official 52:a51c77007319 584 */
mbed_official 52:a51c77007319 585
mbed_official 84:f54042cbc282 586 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/