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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
<>
Date:
Thu Oct 27 16:45:56 2016 +0100
Revision:
128:9bcdf88f62b0
Parent:
113:f141b2784e32
Child:
139:856d2700e60b
Release 128 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

2966: Add kw24 support https://github.com/ARMmbed/mbed-os/pull/2966
3068: MultiTech mDot - clean up PeripheralPins.c and add new pin names https://github.com/ARMmbed/mbed-os/pull/3068
3089: Kinetis HAL: Remove clock initialization code from serial and ticker https://github.com/ARMmbed/mbed-os/pull/3089
2943: [NRF5] NVIC_SetVector functionality https://github.com/ARMmbed/mbed-os/pull/2943
2938: InterruptIn changes in NCS36510 HAL. https://github.com/ARMmbed/mbed-os/pull/2938
3108: Fix sleep function for NRF52. https://github.com/ARMmbed/mbed-os/pull/3108
3076: STM32F1: Correct timer master value reading https://github.com/ARMmbed/mbed-os/pull/3076
3085: Add LOWPOWERTIMER capability for NUCLEO_F303ZE https://github.com/ARMmbed/mbed-os/pull/3085
3046: [BEETLE] Update BLE stack on Beetle board https://github.com/ARMmbed/mbed-os/pull/3046
3122: [Silicon Labs] Update of Silicon Labs HAL https://github.com/ARMmbed/mbed-os/pull/3122
3022: OnSemi RAM usage fix https://github.com/ARMmbed/mbed-os/pull/3022
3121: STM32F3: Correct UART4 and UART5 defines when using DEVICE_SERIAL_ASYNCH https://github.com/ARMmbed/mbed-os/pull/3121
3142: Targets- NUMAKER_PFM_NUC47216 remove mbed 2 https://github.com/ARMmbed/mbed-os/pull/3142

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 98:8ab26030e058 1 /***************************************************************************//**
Kojto 98:8ab26030e058 2 * @file em_dac.h
Kojto 98:8ab26030e058 3 * @brief Digital to Analog Converter (DAC) peripheral API
<> 128:9bcdf88f62b0 4 * @version 5.0.0
Kojto 98:8ab26030e058 5 *******************************************************************************
Kojto 98:8ab26030e058 6 * @section License
<> 128:9bcdf88f62b0 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
Kojto 98:8ab26030e058 8 *******************************************************************************
Kojto 98:8ab26030e058 9 *
Kojto 98:8ab26030e058 10 * Permission is granted to anyone to use this software for any purpose,
Kojto 98:8ab26030e058 11 * including commercial applications, and to alter it and redistribute it
Kojto 98:8ab26030e058 12 * freely, subject to the following restrictions:
Kojto 98:8ab26030e058 13 *
Kojto 98:8ab26030e058 14 * 1. The origin of this software must not be misrepresented; you must not
Kojto 98:8ab26030e058 15 * claim that you wrote the original software.
Kojto 98:8ab26030e058 16 * 2. Altered source versions must be plainly marked as such, and must not be
Kojto 98:8ab26030e058 17 * misrepresented as being the original software.
Kojto 98:8ab26030e058 18 * 3. This notice may not be removed or altered from any source distribution.
Kojto 98:8ab26030e058 19 *
Kojto 98:8ab26030e058 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
Kojto 98:8ab26030e058 21 * obligation to support this Software. Silicon Labs is providing the
Kojto 98:8ab26030e058 22 * Software "AS IS", with no express or implied warranties of any kind,
Kojto 98:8ab26030e058 23 * including, but not limited to, any implied warranties of merchantability
Kojto 98:8ab26030e058 24 * or fitness for any particular purpose or warranties against infringement
Kojto 98:8ab26030e058 25 * of any proprietary rights of a third party.
Kojto 98:8ab26030e058 26 *
Kojto 98:8ab26030e058 27 * Silicon Labs will not be liable for any consequential, incidental, or
Kojto 98:8ab26030e058 28 * special damages, or any other relief, or for any claim by any third party,
Kojto 98:8ab26030e058 29 * arising from your use of this Software.
Kojto 98:8ab26030e058 30 *
Kojto 98:8ab26030e058 31 ******************************************************************************/
Kojto 98:8ab26030e058 32
<> 128:9bcdf88f62b0 33 #ifndef EM_DAC_H
<> 128:9bcdf88f62b0 34 #define EM_DAC_H
Kojto 98:8ab26030e058 35
Kojto 98:8ab26030e058 36 #include "em_device.h"
Kojto 98:8ab26030e058 37
Kojto 98:8ab26030e058 38 #if defined(DAC_COUNT) && (DAC_COUNT > 0)
Kojto 98:8ab26030e058 39
Kojto 113:f141b2784e32 40 #include "em_assert.h"
Kojto 98:8ab26030e058 41 #include <stdbool.h>
Kojto 98:8ab26030e058 42
Kojto 98:8ab26030e058 43 #ifdef __cplusplus
Kojto 98:8ab26030e058 44 extern "C" {
Kojto 98:8ab26030e058 45 #endif
Kojto 98:8ab26030e058 46
Kojto 98:8ab26030e058 47
Kojto 98:8ab26030e058 48 /***************************************************************************//**
<> 128:9bcdf88f62b0 49 * @addtogroup emlib
Kojto 98:8ab26030e058 50 * @{
Kojto 98:8ab26030e058 51 ******************************************************************************/
Kojto 98:8ab26030e058 52
Kojto 98:8ab26030e058 53 /***************************************************************************//**
Kojto 98:8ab26030e058 54 * @addtogroup DAC
Kojto 98:8ab26030e058 55 * @{
Kojto 98:8ab26030e058 56 ******************************************************************************/
Kojto 98:8ab26030e058 57
Kojto 98:8ab26030e058 58 /** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
Kojto 98:8ab26030e058 59
Kojto 98:8ab26030e058 60 /** Validation of DAC register block pointer reference for assert statements. */
Kojto 98:8ab26030e058 61 #define DAC_REF_VALID(ref) ((ref) == DAC0)
Kojto 98:8ab26030e058 62
Kojto 98:8ab26030e058 63 /** @endcond */
Kojto 98:8ab26030e058 64
Kojto 98:8ab26030e058 65 /*******************************************************************************
Kojto 98:8ab26030e058 66 ******************************** ENUMS ************************************
Kojto 98:8ab26030e058 67 ******************************************************************************/
Kojto 98:8ab26030e058 68
Kojto 98:8ab26030e058 69 /** Conversion mode. */
Kojto 98:8ab26030e058 70 typedef enum
Kojto 98:8ab26030e058 71 {
Kojto 98:8ab26030e058 72 dacConvModeContinuous = _DAC_CTRL_CONVMODE_CONTINUOUS, /**< Continuous mode. */
Kojto 98:8ab26030e058 73 dacConvModeSampleHold = _DAC_CTRL_CONVMODE_SAMPLEHOLD, /**< Sample/hold mode. */
Kojto 98:8ab26030e058 74 dacConvModeSampleOff = _DAC_CTRL_CONVMODE_SAMPLEOFF /**< Sample/shut off mode. */
Kojto 98:8ab26030e058 75 } DAC_ConvMode_TypeDef;
Kojto 98:8ab26030e058 76
Kojto 98:8ab26030e058 77 /** Output mode. */
Kojto 98:8ab26030e058 78 typedef enum
Kojto 98:8ab26030e058 79 {
Kojto 98:8ab26030e058 80 dacOutputDisable = _DAC_CTRL_OUTMODE_DISABLE, /**< Output to pin and ADC disabled. */
Kojto 98:8ab26030e058 81 dacOutputPin = _DAC_CTRL_OUTMODE_PIN, /**< Output to pin only. */
Kojto 98:8ab26030e058 82 dacOutputADC = _DAC_CTRL_OUTMODE_ADC, /**< Output to ADC only */
Kojto 98:8ab26030e058 83 dacOutputPinADC = _DAC_CTRL_OUTMODE_PINADC /**< Output to pin and ADC. */
Kojto 98:8ab26030e058 84 } DAC_Output_TypeDef;
Kojto 98:8ab26030e058 85
Kojto 98:8ab26030e058 86
Kojto 98:8ab26030e058 87 /** Peripheral Reflex System signal used to trigger single sample. */
Kojto 98:8ab26030e058 88 typedef enum
Kojto 98:8ab26030e058 89 {
Kojto 98:8ab26030e058 90 dacPRSSELCh0 = _DAC_CH0CTRL_PRSSEL_PRSCH0, /**< PRS channel 0. */
Kojto 98:8ab26030e058 91 dacPRSSELCh1 = _DAC_CH0CTRL_PRSSEL_PRSCH1, /**< PRS channel 1. */
Kojto 98:8ab26030e058 92 dacPRSSELCh2 = _DAC_CH0CTRL_PRSSEL_PRSCH2, /**< PRS channel 2. */
Kojto 98:8ab26030e058 93 dacPRSSELCh3 = _DAC_CH0CTRL_PRSSEL_PRSCH3, /**< PRS channel 3. */
Kojto 98:8ab26030e058 94 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH4 )
Kojto 98:8ab26030e058 95 dacPRSSELCh4 = _DAC_CH0CTRL_PRSSEL_PRSCH4, /**< PRS channel 4. */
Kojto 98:8ab26030e058 96 #endif
Kojto 98:8ab26030e058 97 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH5 )
Kojto 98:8ab26030e058 98 dacPRSSELCh5 = _DAC_CH0CTRL_PRSSEL_PRSCH5, /**< PRS channel 5. */
Kojto 98:8ab26030e058 99 #endif
Kojto 98:8ab26030e058 100 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH6 )
Kojto 98:8ab26030e058 101 dacPRSSELCh6 = _DAC_CH0CTRL_PRSSEL_PRSCH6, /**< PRS channel 6. */
Kojto 98:8ab26030e058 102 #endif
Kojto 98:8ab26030e058 103 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH7 )
Kojto 98:8ab26030e058 104 dacPRSSELCh7 = _DAC_CH0CTRL_PRSSEL_PRSCH7, /**< PRS channel 7. */
Kojto 98:8ab26030e058 105 #endif
Kojto 98:8ab26030e058 106 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH8 )
Kojto 98:8ab26030e058 107 dacPRSSELCh8 = _DAC_CH0CTRL_PRSSEL_PRSCH8, /**< PRS channel 8. */
Kojto 98:8ab26030e058 108 #endif
Kojto 98:8ab26030e058 109 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH9 )
Kojto 98:8ab26030e058 110 dacPRSSELCh9 = _DAC_CH0CTRL_PRSSEL_PRSCH9, /**< PRS channel 9. */
Kojto 98:8ab26030e058 111 #endif
Kojto 98:8ab26030e058 112 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH10 )
Kojto 98:8ab26030e058 113 dacPRSSELCh10 = _DAC_CH0CTRL_PRSSEL_PRSCH10, /**< PRS channel 10. */
Kojto 98:8ab26030e058 114 #endif
Kojto 98:8ab26030e058 115 #if defined( _DAC_CH0CTRL_PRSSEL_PRSCH11 )
Kojto 98:8ab26030e058 116 dacPRSSELCh11 = _DAC_CH0CTRL_PRSSEL_PRSCH11, /**< PRS channel 11. */
Kojto 98:8ab26030e058 117 #endif
Kojto 98:8ab26030e058 118 } DAC_PRSSEL_TypeDef;
Kojto 98:8ab26030e058 119
Kojto 98:8ab26030e058 120
Kojto 98:8ab26030e058 121 /** Reference voltage for DAC. */
Kojto 98:8ab26030e058 122 typedef enum
Kojto 98:8ab26030e058 123 {
Kojto 98:8ab26030e058 124 dacRef1V25 = _DAC_CTRL_REFSEL_1V25, /**< Internal 1.25V bandgap reference. */
Kojto 98:8ab26030e058 125 dacRef2V5 = _DAC_CTRL_REFSEL_2V5, /**< Internal 2.5V bandgap reference. */
Kojto 98:8ab26030e058 126 dacRefVDD = _DAC_CTRL_REFSEL_VDD /**< VDD reference. */
Kojto 98:8ab26030e058 127 } DAC_Ref_TypeDef;
Kojto 98:8ab26030e058 128
Kojto 98:8ab26030e058 129
Kojto 98:8ab26030e058 130 /** Refresh interval. */
Kojto 98:8ab26030e058 131 typedef enum
Kojto 98:8ab26030e058 132 {
Kojto 98:8ab26030e058 133 dacRefresh8 = _DAC_CTRL_REFRSEL_8CYCLES, /**< Refresh every 8 prescaled cycles. */
Kojto 98:8ab26030e058 134 dacRefresh16 = _DAC_CTRL_REFRSEL_16CYCLES, /**< Refresh every 16 prescaled cycles. */
Kojto 98:8ab26030e058 135 dacRefresh32 = _DAC_CTRL_REFRSEL_32CYCLES, /**< Refresh every 32 prescaled cycles. */
Kojto 98:8ab26030e058 136 dacRefresh64 = _DAC_CTRL_REFRSEL_64CYCLES /**< Refresh every 64 prescaled cycles. */
Kojto 98:8ab26030e058 137 } DAC_Refresh_TypeDef;
Kojto 98:8ab26030e058 138
Kojto 98:8ab26030e058 139
Kojto 98:8ab26030e058 140 /*******************************************************************************
Kojto 98:8ab26030e058 141 ******************************* STRUCTS ***********************************
Kojto 98:8ab26030e058 142 ******************************************************************************/
Kojto 98:8ab26030e058 143
Kojto 98:8ab26030e058 144 /** DAC init structure, common for both channels. */
Kojto 98:8ab26030e058 145 typedef struct
Kojto 98:8ab26030e058 146 {
Kojto 98:8ab26030e058 147 /** Refresh interval. Only used if REFREN bit set for a DAC channel. */
Kojto 98:8ab26030e058 148 DAC_Refresh_TypeDef refresh;
Kojto 98:8ab26030e058 149
Kojto 98:8ab26030e058 150 /** Reference voltage to use. */
Kojto 98:8ab26030e058 151 DAC_Ref_TypeDef reference;
Kojto 98:8ab26030e058 152
Kojto 98:8ab26030e058 153 /** Output mode */
Kojto 98:8ab26030e058 154 DAC_Output_TypeDef outMode;
Kojto 98:8ab26030e058 155
Kojto 98:8ab26030e058 156 /** Conversion mode. */
Kojto 98:8ab26030e058 157 DAC_ConvMode_TypeDef convMode;
Kojto 98:8ab26030e058 158
Kojto 98:8ab26030e058 159 /**
Kojto 98:8ab26030e058 160 * Prescaler used to get DAC clock. Derived as follows:
Kojto 98:8ab26030e058 161 * DACclk=HFPERclk/(2^prescale). The DAC clock should be <= 1MHz.
Kojto 98:8ab26030e058 162 */
Kojto 98:8ab26030e058 163 uint8_t prescale;
Kojto 98:8ab26030e058 164
Kojto 98:8ab26030e058 165 /** Enable/disable use of low pass filter on output. */
Kojto 98:8ab26030e058 166 bool lpEnable;
Kojto 98:8ab26030e058 167
Kojto 98:8ab26030e058 168 /** Enable/disable reset of prescaler on ch0 start. */
Kojto 98:8ab26030e058 169 bool ch0ResetPre;
Kojto 98:8ab26030e058 170
Kojto 98:8ab26030e058 171 /** Enable/disable output enable control by CH1 PRS signal. */
Kojto 98:8ab26030e058 172 bool outEnablePRS;
Kojto 98:8ab26030e058 173
Kojto 98:8ab26030e058 174 /** Enable/disable sine mode. */
Kojto 98:8ab26030e058 175 bool sineEnable;
Kojto 98:8ab26030e058 176
Kojto 98:8ab26030e058 177 /** Select if single ended or differential mode. */
Kojto 98:8ab26030e058 178 bool diff;
Kojto 98:8ab26030e058 179 } DAC_Init_TypeDef;
Kojto 98:8ab26030e058 180
Kojto 98:8ab26030e058 181 /** Default config for DAC init structure. */
Kojto 113:f141b2784e32 182 #define DAC_INIT_DEFAULT \
Kojto 113:f141b2784e32 183 { \
Kojto 113:f141b2784e32 184 dacRefresh8, /* Refresh every 8 prescaled cycles. */ \
Kojto 113:f141b2784e32 185 dacRef1V25, /* 1.25V internal reference. */ \
Kojto 113:f141b2784e32 186 dacOutputPin, /* Output to pin only. */ \
Kojto 113:f141b2784e32 187 dacConvModeContinuous, /* Continuous mode. */ \
Kojto 113:f141b2784e32 188 0, /* No prescaling. */ \
Kojto 113:f141b2784e32 189 false, /* Do not enable low pass filter. */ \
Kojto 113:f141b2784e32 190 false, /* Do not reset prescaler on ch0 start. */ \
Kojto 113:f141b2784e32 191 false, /* DAC output enable always on. */ \
Kojto 113:f141b2784e32 192 false, /* Disable sine mode. */ \
Kojto 113:f141b2784e32 193 false /* Single ended mode. */ \
Kojto 113:f141b2784e32 194 }
Kojto 98:8ab26030e058 195
Kojto 98:8ab26030e058 196
Kojto 98:8ab26030e058 197 /** DAC channel init structure. */
Kojto 98:8ab26030e058 198 typedef struct
Kojto 98:8ab26030e058 199 {
Kojto 98:8ab26030e058 200 /** Enable channel. */
Kojto 98:8ab26030e058 201 bool enable;
Kojto 98:8ab26030e058 202
Kojto 98:8ab26030e058 203 /**
Kojto 98:8ab26030e058 204 * Peripheral reflex system trigger enable. If false, channel is triggered
Kojto 98:8ab26030e058 205 * by writing to CHnDATA.
Kojto 98:8ab26030e058 206 */
Kojto 98:8ab26030e058 207 bool prsEnable;
Kojto 98:8ab26030e058 208
Kojto 98:8ab26030e058 209 /**
Kojto 98:8ab26030e058 210 * Enable/disable automatic refresh of channel. Refresh interval must be
Kojto 98:8ab26030e058 211 * defined in common control init, please see DAC_Init().
Kojto 98:8ab26030e058 212 */
Kojto 98:8ab26030e058 213 bool refreshEnable;
Kojto 98:8ab26030e058 214
Kojto 98:8ab26030e058 215 /**
Kojto 98:8ab26030e058 216 * Peripheral reflex system trigger selection. Only applicable if @p prsEnable
Kojto 98:8ab26030e058 217 * is enabled.
Kojto 98:8ab26030e058 218 */
Kojto 98:8ab26030e058 219 DAC_PRSSEL_TypeDef prsSel;
Kojto 98:8ab26030e058 220 } DAC_InitChannel_TypeDef;
Kojto 98:8ab26030e058 221
Kojto 98:8ab26030e058 222 /** Default config for DAC channel init structure. */
Kojto 113:f141b2784e32 223 #define DAC_INITCHANNEL_DEFAULT \
Kojto 113:f141b2784e32 224 { \
Kojto 113:f141b2784e32 225 false, /* Leave channel disabled when init done. */ \
Kojto 113:f141b2784e32 226 false, /* Disable PRS triggering. */ \
Kojto 113:f141b2784e32 227 false, /* Channel not refreshed automatically. */ \
Kojto 113:f141b2784e32 228 dacPRSSELCh0 /* Select PRS ch0 (if PRS triggering enabled). */ \
Kojto 113:f141b2784e32 229 }
Kojto 98:8ab26030e058 230
Kojto 98:8ab26030e058 231
Kojto 98:8ab26030e058 232 /*******************************************************************************
Kojto 98:8ab26030e058 233 ***************************** PROTOTYPES **********************************
Kojto 98:8ab26030e058 234 ******************************************************************************/
Kojto 98:8ab26030e058 235
Kojto 98:8ab26030e058 236 void DAC_Enable(DAC_TypeDef *dac, unsigned int ch, bool enable);
Kojto 98:8ab26030e058 237 void DAC_Init(DAC_TypeDef *dac, const DAC_Init_TypeDef *init);
Kojto 98:8ab26030e058 238 void DAC_InitChannel(DAC_TypeDef *dac,
Kojto 98:8ab26030e058 239 const DAC_InitChannel_TypeDef *init,
Kojto 98:8ab26030e058 240 unsigned int ch);
Kojto 98:8ab26030e058 241 void DAC_ChannelOutputSet(DAC_TypeDef *dac,
Kojto 98:8ab26030e058 242 unsigned int channel,
Kojto 98:8ab26030e058 243 uint32_t value);
Kojto 98:8ab26030e058 244
Kojto 98:8ab26030e058 245 /***************************************************************************//**
Kojto 98:8ab26030e058 246 * @brief
Kojto 98:8ab26030e058 247 * Set the output signal of DAC channel 0 to a given value.
Kojto 98:8ab26030e058 248 *
Kojto 98:8ab26030e058 249 * @details
Kojto 98:8ab26030e058 250 * This function sets the output signal of DAC channel 0 by writing @p value
Kojto 98:8ab26030e058 251 * to the CH0DATA register.
Kojto 98:8ab26030e058 252 *
Kojto 98:8ab26030e058 253 * @param[in] dac
Kojto 98:8ab26030e058 254 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 255 *
Kojto 98:8ab26030e058 256 * @param[in] value
Kojto 98:8ab26030e058 257 * Value to write to the channel 0 output register CH0DATA.
Kojto 98:8ab26030e058 258 ******************************************************************************/
Kojto 98:8ab26030e058 259 __STATIC_INLINE void DAC_Channel0OutputSet( DAC_TypeDef *dac,
Kojto 98:8ab26030e058 260 uint32_t value )
Kojto 98:8ab26030e058 261 {
Kojto 98:8ab26030e058 262 EFM_ASSERT(value<=_DAC_CH0DATA_MASK);
Kojto 98:8ab26030e058 263 dac->CH0DATA = value;
Kojto 98:8ab26030e058 264 }
Kojto 98:8ab26030e058 265
Kojto 98:8ab26030e058 266
Kojto 98:8ab26030e058 267 /***************************************************************************//**
Kojto 98:8ab26030e058 268 * @brief
Kojto 98:8ab26030e058 269 * Set the output signal of DAC channel 1 to a given value.
Kojto 98:8ab26030e058 270 *
Kojto 98:8ab26030e058 271 * @details
Kojto 98:8ab26030e058 272 * This function sets the output signal of DAC channel 1 by writing @p value
Kojto 98:8ab26030e058 273 * to the CH1DATA register.
Kojto 98:8ab26030e058 274 *
Kojto 98:8ab26030e058 275 * @param[in] dac
Kojto 98:8ab26030e058 276 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 277 *
Kojto 98:8ab26030e058 278 * @param[in] value
Kojto 98:8ab26030e058 279 * Value to write to the channel 1 output register CH1DATA.
Kojto 98:8ab26030e058 280 ******************************************************************************/
Kojto 98:8ab26030e058 281 __STATIC_INLINE void DAC_Channel1OutputSet( DAC_TypeDef *dac,
Kojto 98:8ab26030e058 282 uint32_t value )
Kojto 98:8ab26030e058 283 {
Kojto 98:8ab26030e058 284 EFM_ASSERT(value<=_DAC_CH1DATA_MASK);
Kojto 98:8ab26030e058 285 dac->CH1DATA = value;
Kojto 98:8ab26030e058 286 }
Kojto 98:8ab26030e058 287
Kojto 98:8ab26030e058 288
Kojto 98:8ab26030e058 289 /***************************************************************************//**
Kojto 98:8ab26030e058 290 * @brief
Kojto 98:8ab26030e058 291 * Clear one or more pending DAC interrupts.
Kojto 98:8ab26030e058 292 *
Kojto 98:8ab26030e058 293 * @param[in] dac
Kojto 98:8ab26030e058 294 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 295 *
Kojto 98:8ab26030e058 296 * @param[in] flags
Kojto 98:8ab26030e058 297 * Pending DAC interrupt source to clear. Use a bitwise logic OR combination of
Kojto 98:8ab26030e058 298 * valid interrupt flags for the DAC module (DAC_IF_nnn).
Kojto 98:8ab26030e058 299 ******************************************************************************/
Kojto 98:8ab26030e058 300 __STATIC_INLINE void DAC_IntClear(DAC_TypeDef *dac, uint32_t flags)
Kojto 98:8ab26030e058 301 {
Kojto 98:8ab26030e058 302 dac->IFC = flags;
Kojto 98:8ab26030e058 303 }
Kojto 98:8ab26030e058 304
Kojto 98:8ab26030e058 305
Kojto 98:8ab26030e058 306 /***************************************************************************//**
Kojto 98:8ab26030e058 307 * @brief
Kojto 98:8ab26030e058 308 * Disable one or more DAC interrupts.
Kojto 98:8ab26030e058 309 *
Kojto 98:8ab26030e058 310 * @param[in] dac
Kojto 98:8ab26030e058 311 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 312 *
Kojto 98:8ab26030e058 313 * @param[in] flags
Kojto 98:8ab26030e058 314 * DAC interrupt sources to disable. Use a bitwise logic OR combination of
Kojto 98:8ab26030e058 315 * valid interrupt flags for the DAC module (DAC_IF_nnn).
Kojto 98:8ab26030e058 316 ******************************************************************************/
Kojto 98:8ab26030e058 317 __STATIC_INLINE void DAC_IntDisable(DAC_TypeDef *dac, uint32_t flags)
Kojto 98:8ab26030e058 318 {
Kojto 113:f141b2784e32 319 dac->IEN &= ~flags;
Kojto 98:8ab26030e058 320 }
Kojto 98:8ab26030e058 321
Kojto 98:8ab26030e058 322
Kojto 98:8ab26030e058 323 /***************************************************************************//**
Kojto 98:8ab26030e058 324 * @brief
Kojto 98:8ab26030e058 325 * Enable one or more DAC interrupts.
Kojto 98:8ab26030e058 326 *
Kojto 98:8ab26030e058 327 * @note
Kojto 98:8ab26030e058 328 * Depending on the use, a pending interrupt may already be set prior to
Kojto 98:8ab26030e058 329 * enabling the interrupt. Consider using DAC_IntClear() prior to enabling
Kojto 98:8ab26030e058 330 * if such a pending interrupt should be ignored.
Kojto 98:8ab26030e058 331 *
Kojto 98:8ab26030e058 332 * @param[in] dac
Kojto 98:8ab26030e058 333 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 334 *
Kojto 98:8ab26030e058 335 * @param[in] flags
Kojto 98:8ab26030e058 336 * DAC interrupt sources to enable. Use a bitwise logic OR combination of
Kojto 98:8ab26030e058 337 * valid interrupt flags for the DAC module (DAC_IF_nnn).
Kojto 98:8ab26030e058 338 ******************************************************************************/
Kojto 98:8ab26030e058 339 __STATIC_INLINE void DAC_IntEnable(DAC_TypeDef *dac, uint32_t flags)
Kojto 98:8ab26030e058 340 {
Kojto 98:8ab26030e058 341 dac->IEN |= flags;
Kojto 98:8ab26030e058 342 }
Kojto 98:8ab26030e058 343
Kojto 98:8ab26030e058 344
Kojto 98:8ab26030e058 345 /***************************************************************************//**
Kojto 98:8ab26030e058 346 * @brief
Kojto 98:8ab26030e058 347 * Get pending DAC interrupt flags.
Kojto 98:8ab26030e058 348 *
Kojto 98:8ab26030e058 349 * @note
Kojto 98:8ab26030e058 350 * The event bits are not cleared by the use of this function.
Kojto 98:8ab26030e058 351 *
Kojto 98:8ab26030e058 352 * @param[in] dac
Kojto 98:8ab26030e058 353 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 354 *
Kojto 98:8ab26030e058 355 * @return
Kojto 98:8ab26030e058 356 * DAC interrupt sources pending. A bitwise logic OR combination of valid
Kojto 98:8ab26030e058 357 * interrupt flags for the DAC module (DAC_IF_nnn).
Kojto 98:8ab26030e058 358 ******************************************************************************/
Kojto 98:8ab26030e058 359 __STATIC_INLINE uint32_t DAC_IntGet(DAC_TypeDef *dac)
Kojto 98:8ab26030e058 360 {
Kojto 113:f141b2784e32 361 return dac->IF;
Kojto 113:f141b2784e32 362 }
Kojto 113:f141b2784e32 363
Kojto 113:f141b2784e32 364
Kojto 113:f141b2784e32 365 /***************************************************************************//**
Kojto 113:f141b2784e32 366 * @brief
Kojto 113:f141b2784e32 367 * Get enabled and pending DAC interrupt flags.
Kojto 113:f141b2784e32 368 * Useful for handling more interrupt sources in the same interrupt handler.
Kojto 113:f141b2784e32 369 *
Kojto 113:f141b2784e32 370 * @param[in] dac
Kojto 113:f141b2784e32 371 * Pointer to DAC peripheral register block.
Kojto 113:f141b2784e32 372 *
Kojto 113:f141b2784e32 373 * @note
Kojto 113:f141b2784e32 374 * Interrupt flags are not cleared by the use of this function.
Kojto 113:f141b2784e32 375 *
Kojto 113:f141b2784e32 376 * @return
Kojto 113:f141b2784e32 377 * Pending and enabled DAC interrupt sources.
Kojto 113:f141b2784e32 378 * The return value is the bitwise AND combination of
Kojto 113:f141b2784e32 379 * - the OR combination of enabled interrupt sources in DACx_IEN_nnn
Kojto 113:f141b2784e32 380 * register (DACx_IEN_nnn) and
Kojto 113:f141b2784e32 381 * - the OR combination of valid interrupt flags of the DAC module
Kojto 113:f141b2784e32 382 * (DACx_IF_nnn).
Kojto 113:f141b2784e32 383 ******************************************************************************/
Kojto 113:f141b2784e32 384 __STATIC_INLINE uint32_t DAC_IntGetEnabled(DAC_TypeDef *dac)
Kojto 113:f141b2784e32 385 {
Kojto 113:f141b2784e32 386 uint32_t ien;
Kojto 113:f141b2784e32 387
Kojto 113:f141b2784e32 388 /* Store DAC->IEN in temporary variable in order to define explicit order
Kojto 113:f141b2784e32 389 * of volatile accesses. */
Kojto 113:f141b2784e32 390 ien = dac->IEN;
Kojto 113:f141b2784e32 391
Kojto 113:f141b2784e32 392 /* Bitwise AND of pending and enabled interrupts */
Kojto 113:f141b2784e32 393 return dac->IF & ien;
Kojto 98:8ab26030e058 394 }
Kojto 98:8ab26030e058 395
Kojto 98:8ab26030e058 396
Kojto 98:8ab26030e058 397 /***************************************************************************//**
Kojto 98:8ab26030e058 398 * @brief
Kojto 98:8ab26030e058 399 * Set one or more pending DAC interrupts from SW.
Kojto 98:8ab26030e058 400 *
Kojto 98:8ab26030e058 401 * @param[in] dac
Kojto 98:8ab26030e058 402 * Pointer to DAC peripheral register block.
Kojto 98:8ab26030e058 403 *
Kojto 98:8ab26030e058 404 * @param[in] flags
Kojto 98:8ab26030e058 405 * DAC interrupt sources to set to pending. Use a bitwise logic OR combination
Kojto 98:8ab26030e058 406 * of valid interrupt flags for the DAC module (DAC_IF_nnn).
Kojto 98:8ab26030e058 407 ******************************************************************************/
Kojto 98:8ab26030e058 408 __STATIC_INLINE void DAC_IntSet(DAC_TypeDef *dac, uint32_t flags)
Kojto 98:8ab26030e058 409 {
Kojto 98:8ab26030e058 410 dac->IFS = flags;
Kojto 98:8ab26030e058 411 }
Kojto 98:8ab26030e058 412
Kojto 98:8ab26030e058 413 uint8_t DAC_PrescaleCalc(uint32_t dacFreq, uint32_t hfperFreq);
Kojto 98:8ab26030e058 414 void DAC_Reset(DAC_TypeDef *dac);
Kojto 98:8ab26030e058 415
Kojto 98:8ab26030e058 416 /** @} (end addtogroup DAC) */
<> 128:9bcdf88f62b0 417 /** @} (end addtogroup emlib) */
Kojto 98:8ab26030e058 418
Kojto 98:8ab26030e058 419 #ifdef __cplusplus
Kojto 98:8ab26030e058 420 }
Kojto 98:8ab26030e058 421 #endif
Kojto 98:8ab26030e058 422
Kojto 98:8ab26030e058 423 #endif /* defined(DAC_COUNT) && (DAC_COUNT > 0) */
<> 128:9bcdf88f62b0 424 #endif /* EM_DAC_H */