STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_hal_dac.h
Go to the documentation of this file.
1 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32F4xx_HAL_DAC_H
21 #define STM32F4xx_HAL_DAC_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
31 /* Includes ------------------------------------------------------------------*/
32 #include "stm32f4xx_hal_def.h"
33 
34 #if defined(DAC)
35 
40 /* Exported types ------------------------------------------------------------*/
41 
49 typedef enum
50 {
55  HAL_DAC_STATE_ERROR = 0x04U
58 
62 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
63 typedef struct __DAC_HandleTypeDef
64 #else
65 typedef struct
66 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
67 {
68  DAC_TypeDef *Instance;
72  HAL_LockTypeDef Lock;
78  __IO uint32_t ErrorCode;
80 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
81  void (* ConvCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
82  void (* ConvHalfCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
83  void (* ErrorCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
84  void (* DMAUnderrunCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
85 #if defined(DAC_CHANNEL2_SUPPORT)
86  void (* ConvCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
87  void (* ConvHalfCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
88  void (* ErrorCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
89  void (* DMAUnderrunCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
90 #endif /* DAC_CHANNEL2_SUPPORT */
91 
92  void (* MspInitCallback)(struct __DAC_HandleTypeDef *hdac);
93  void (* MspDeInitCallback)(struct __DAC_HandleTypeDef *hdac);
94 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
95 
97 
101 typedef struct
102 {
103  uint32_t DAC_Trigger;
106  uint32_t DAC_OutputBuffer;
110 
111 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
115 typedef enum
116 {
121 #if defined(DAC_CHANNEL2_SUPPORT)
126 #endif /* DAC_CHANNEL2_SUPPORT */
129  HAL_DAC_ALL_CB_ID = 0x0AU
131 
136 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
137 
142 /* Exported constants --------------------------------------------------------*/
143 
151 #define HAL_DAC_ERROR_NONE 0x00U
152 #define HAL_DAC_ERROR_DMAUNDERRUNCH1 0x01U
153 #if defined(DAC_CHANNEL2_SUPPORT)
154 #define HAL_DAC_ERROR_DMAUNDERRUNCH2 0x02U
155 #endif /* DAC_CHANNEL2_SUPPORT */
156 #define HAL_DAC_ERROR_DMA 0x04U
157 #define HAL_DAC_ERROR_TIMEOUT 0x08U
158 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
159 #define HAL_DAC_ERROR_INVALID_CALLBACK 0x10U
160 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
161 
169 #define DAC_TRIGGER_NONE 0x00000000UL
170 #define DAC_TRIGGER_T2_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TEN1)
171 #define DAC_TRIGGER_T4_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
172 #define DAC_TRIGGER_T5_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
173 #define DAC_TRIGGER_T6_TRGO ( DAC_CR_TEN1)
174 #define DAC_TRIGGER_T7_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TEN1)
175 #define DAC_TRIGGER_T8_TRGO ( DAC_CR_TSEL1_0 | DAC_CR_TEN1)
176 #define DAC_TRIGGER_EXT_IT9 (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)
177 #define DAC_TRIGGER_SOFTWARE (DAC_CR_TSEL1 | DAC_CR_TEN1)
186 #define DAC_OUTPUTBUFFER_ENABLE 0x00000000U
187 #define DAC_OUTPUTBUFFER_DISABLE (DAC_CR_BOFF1)
188 
196 #define DAC_CHANNEL_1 0x00000000U
197 #if defined(DAC_CHANNEL2_SUPPORT)
198 #define DAC_CHANNEL_2 0x00000010U
199 #endif /* DAC_CHANNEL2_SUPPORT */
207 #define DAC_ALIGN_12B_R 0x00000000U
208 #define DAC_ALIGN_12B_L 0x00000004U
209 #define DAC_ALIGN_8B_R 0x00000008U
210 
218 #define DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1)
219 #if defined(DAC_CHANNEL2_SUPPORT)
220 #define DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2)
221 #endif /* DAC_CHANNEL2_SUPPORT */
222 
230 #define DAC_IT_DMAUDR1 (DAC_SR_DMAUDR1)
231 #if defined(DAC_CHANNEL2_SUPPORT)
232 #define DAC_IT_DMAUDR2 (DAC_SR_DMAUDR2)
233 #endif /* DAC_CHANNEL2_SUPPORT */
234 
243 /* Exported macro ------------------------------------------------------------*/
244 
253 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
254 #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) do { \
255  (__HANDLE__)->State = HAL_DAC_STATE_RESET; \
256  (__HANDLE__)->MspInitCallback = NULL; \
257  (__HANDLE__)->MspDeInitCallback = NULL; \
258  } while(0)
259 #else
260 #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DAC_STATE_RESET)
261 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
262 
268 #define __HAL_DAC_ENABLE(__HANDLE__, __DAC_Channel__) \
269  ((__HANDLE__)->Instance->CR |= (DAC_CR_EN1 << ((__DAC_Channel__) & 0x10UL)))
270 
276 #define __HAL_DAC_DISABLE(__HANDLE__, __DAC_Channel__) \
277  ((__HANDLE__)->Instance->CR &= ~(DAC_CR_EN1 << ((__DAC_Channel__) & 0x10UL)))
278 
283 #define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) (0x00000008UL + (__ALIGNMENT__))
284 
285 #if defined(DAC_CHANNEL2_SUPPORT)
290 #define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) (0x00000014UL + (__ALIGNMENT__))
291 #endif /* DAC_CHANNEL2_SUPPORT */
292 
297 #define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) (0x00000020UL + (__ALIGNMENT__))
298 
307 #define __HAL_DAC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) |= (__INTERRUPT__))
308 
317 #define __HAL_DAC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) &= ~(__INTERRUPT__))
318 
327 #define __HAL_DAC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR\
328  & (__INTERRUPT__)) == (__INTERRUPT__))
329 
338 #define __HAL_DAC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
339 
348 #define __HAL_DAC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = (__FLAG__))
349 
354 /* Private macro -------------------------------------------------------------*/
355 
359 #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \
360  ((STATE) == DAC_OUTPUTBUFFER_DISABLE))
361 
362 #if defined(DAC_CHANNEL2_SUPPORT)
363 #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
364  ((CHANNEL) == DAC_CHANNEL_2))
365 #else
366 #define IS_DAC_CHANNEL(CHANNEL) ((CHANNEL) == DAC_CHANNEL_1)
367 #endif /* DAC_CHANNEL2_SUPPORT */
368 
369 #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \
370  ((ALIGN) == DAC_ALIGN_12B_L) || \
371  ((ALIGN) == DAC_ALIGN_8B_R))
372 
373 #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0UL)
374 
379 /* Include DAC HAL Extended module */
380 #include "stm32f4xx_hal_dac_ex.h"
381 
382 /* Exported functions --------------------------------------------------------*/
383 
391 /* Initialization and de-initialization functions *****************************/
392 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);
393 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac);
396 
404 /* IO operation functions *****************************************************/
405 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);
406 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);
407 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length,
408  uint32_t Alignment);
409 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel);
411 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
412 
417 
418 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
419 /* DAC callback registering/unregistering */
420 HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID,
421  pDAC_CallbackTypeDef pCallback);
422 HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID);
423 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
424 
432 /* Peripheral Control functions ***********************************************/
433 uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel);
434 HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
435  const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
443 /* Peripheral State and Error functions ***************************************/
445 uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac);
446 
469 #endif /* DAC */
470 
475 #ifdef __cplusplus
476 }
477 #endif
478 
479 
480 #endif /* STM32F4xx_HAL_DAC_H */
DMA_HandleTypeDef * DMA_Handle1
DAC_TypeDef * Instance
DMA_HandleTypeDef * DMA_Handle2
__IO HAL_DAC_StateTypeDef State
ADC handle Structure definition.
void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
Initialize the DAC MSP.
HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac)
Initialize the DAC peripheral according to the specified parameters in the DAC_InitStruct and initial...
HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac)
Deinitialize the DAC peripheral registers to their default reset values.
void HAL_DAC_MspDeInit(DAC_HandleTypeDef *hdac)
DeInitialize the DAC MSP.
HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel)
Disables DAC and stop conversion of channel.
HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID, pDAC_CallbackTypeDef pCallback)
Register a User DAC Callback To be used instead of the weak (overridden) predefined callback.
HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel)
Enables DAC and starts conversion of channel.
void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef *hdac)
Conversion half DMA transfer callback in non-blocking mode for Channel1.
HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel)
Disables DAC and stop conversion of channel.
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
Set the specified data holding register value for DAC channel.
HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length, uint32_t Alignment)
Enables DAC and starts conversion of channel.
void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
Error DAC callback for Channel1.
void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac)
Handles DAC interrupt request This function uses the interruption of DMA underrun.
void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef *hdac)
Conversion complete callback in non-blocking mode for Channel1.
HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID)
Unregister a User DAC Callback DAC Callback is redirected to the weak (overridden) predefined callbac...
void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
DMA underrun DAC callback for channel1.
uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel)
Returns the last data output value of the selected DAC channel.
HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac, const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel)
Configures the selected DAC channel.
HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac)
return the DAC handle state
uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac)
Return the DAC error code.
void(* pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac)
HAL DAC Callback pointer definition.
struct __DAC_HandleTypeDef else typedef struct endif DAC_HandleTypeDef
DAC handle Structure definition.
HAL_DAC_CallbackIDTypeDef
HAL DAC Callback ID enumeration definition.
HAL_DAC_StateTypeDef
HAL State structures definition.
@ HAL_DAC_MSPDEINIT_CB_ID
@ HAL_DAC_CH1_HALF_COMPLETE_CB_ID
@ HAL_DAC_CH2_ERROR_ID
@ HAL_DAC_CH2_HALF_COMPLETE_CB_ID
@ HAL_DAC_ALL_CB_ID
@ HAL_DAC_CH2_UNDERRUN_CB_ID
@ HAL_DAC_CH1_UNDERRUN_CB_ID
@ HAL_DAC_CH1_COMPLETE_CB_ID
@ HAL_DAC_MSPINIT_CB_ID
@ HAL_DAC_CH2_COMPLETE_CB_ID
@ HAL_DAC_CH1_ERROR_ID
@ HAL_DAC_STATE_READY
@ HAL_DAC_STATE_RESET
@ HAL_DAC_STATE_TIMEOUT
@ HAL_DAC_STATE_ERROR
@ HAL_DAC_STATE_BUSY
DAC Configuration regular Channel structure definition.
void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma)
DMA conversion complete callback.
void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma)
DMA error callback.
Header file of DAC HAL Extended module.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_LockTypeDef
HAL Lock structures definition
DMA handle Structure definition.