STM32F4xx HAL Driver master
STM32CubeF4 HAL / LL Drivers API Reference
Loading...
Searching...
No Matches
stm32f4xx_hal_dac.h
Go to the documentation of this file.
1
18
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32F4xx_HAL_DAC_H
21#define STM32F4xx_HAL_DAC_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
30
31/* Includes ------------------------------------------------------------------*/
32#include "stm32f4xx_hal_def.h"
33
34#if defined(DAC)
35
39
40/* Exported types ------------------------------------------------------------*/
41
45
49typedef enum
50{
51 HAL_DAC_STATE_RESET = 0x00U,
52 HAL_DAC_STATE_READY = 0x01U,
53 HAL_DAC_STATE_BUSY = 0x02U,
54 HAL_DAC_STATE_TIMEOUT = 0x03U,
55 HAL_DAC_STATE_ERROR = 0x04U
56
57} HAL_DAC_StateTypeDef;
58
62#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
63typedef struct __DAC_HandleTypeDef
64#else
65typedef struct
66#endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
67{
68 DAC_TypeDef *Instance;
69
70 __IO HAL_DAC_StateTypeDef State;
71
72 HAL_LockTypeDef Lock;
73
74 DMA_HandleTypeDef *DMA_Handle1;
75
76 DMA_HandleTypeDef *DMA_Handle2;
77
78 __IO uint32_t ErrorCode;
79
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
96} DAC_HandleTypeDef;
97
101typedef struct
102{
103 uint32_t DAC_Trigger;
105
106 uint32_t DAC_OutputBuffer;
108
109} DAC_ChannelConfTypeDef;
110
111#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
115typedef enum
116{
117 HAL_DAC_CH1_COMPLETE_CB_ID = 0x00U,
118 HAL_DAC_CH1_HALF_COMPLETE_CB_ID = 0x01U,
119 HAL_DAC_CH1_ERROR_ID = 0x02U,
120 HAL_DAC_CH1_UNDERRUN_CB_ID = 0x03U,
121#if defined(DAC_CHANNEL2_SUPPORT)
122 HAL_DAC_CH2_COMPLETE_CB_ID = 0x04U,
123 HAL_DAC_CH2_HALF_COMPLETE_CB_ID = 0x05U,
124 HAL_DAC_CH2_ERROR_ID = 0x06U,
125 HAL_DAC_CH2_UNDERRUN_CB_ID = 0x07U,
126#endif /* DAC_CHANNEL2_SUPPORT */
127 HAL_DAC_MSPINIT_CB_ID = 0x08U,
128 HAL_DAC_MSPDEINIT_CB_ID = 0x09U,
129 HAL_DAC_ALL_CB_ID = 0x0AU
130} HAL_DAC_CallbackIDTypeDef;
131
135typedef void (*pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac);
136#endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
137
141
142/* Exported constants --------------------------------------------------------*/
143
147
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
165
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)
178
182
186#define DAC_OUTPUTBUFFER_ENABLE 0x00000000U
187#define DAC_OUTPUTBUFFER_DISABLE (DAC_CR_BOFF1)
188
192
196#define DAC_CHANNEL_1 0x00000000U
197#if defined(DAC_CHANNEL2_SUPPORT)
198#define DAC_CHANNEL_2 0x00000010U
199#endif /* DAC_CHANNEL2_SUPPORT */
203
207#define DAC_ALIGN_12B_R 0x00000000U
208#define DAC_ALIGN_12B_L 0x00000004U
209#define DAC_ALIGN_8B_R 0x00000008U
210
214
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
226
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
238
242
243/* Exported macro ------------------------------------------------------------*/
244
248
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
353
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
378
379/* Include DAC HAL Extended module */
380#include "stm32f4xx_hal_dac_ex.h"
381
382/* Exported functions --------------------------------------------------------*/
383
387
391/* Initialization and de-initialization functions *****************************/
392HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);
393HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac);
394void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac);
395void HAL_DAC_MspDeInit(DAC_HandleTypeDef *hdac);
396
400
404/* IO operation functions *****************************************************/
405HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);
406HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);
407HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length,
408 uint32_t Alignment);
409HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel);
410void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac);
411HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
412
413void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef *hdac);
414void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef *hdac);
415void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac);
416void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac);
417
418#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
419/* DAC callback registering/unregistering */
420HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID,
421 pDAC_CallbackTypeDef pCallback);
422HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID);
423#endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
424
428
432/* Peripheral Control functions ***********************************************/
433uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel);
434HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
435 const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
439
443/* Peripheral State and Error functions ***************************************/
444HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac);
445uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac);
446
450
454
458void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
459void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
460void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
464
468
469#endif /* DAC */
470
474
475#ifdef __cplusplus
476}
477#endif
478
479
480#endif /* STM32F4xx_HAL_DAC_H */
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
Header file of DAC HAL Extended module.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.
HAL_LockTypeDef
HAL Lock structures definition.