Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | mjames | 1 | /** |
2 | ****************************************************************************** |
||
3 | * @file stm32f0xx_hal_dac.h |
||
4 | * @author MCD Application Team |
||
5 | * @brief Header file of DAC HAL module. |
||
6 | ****************************************************************************** |
||
7 | * @attention |
||
8 | * |
||
9 | * <h2><center>© Copyright (c) 2016 STMicroelectronics. |
||
10 | * All rights reserved.</center></h2> |
||
11 | * |
||
12 | * This software component is licensed by ST under BSD 3-Clause license, |
||
13 | * the "License"; You may not use this file except in compliance with the |
||
14 | * License. You may obtain a copy of the License at: |
||
15 | * opensource.org/licenses/BSD-3-Clause |
||
16 | * |
||
17 | ****************************************************************************** |
||
18 | */ |
||
19 | |||
20 | /* Define to prevent recursive inclusion -------------------------------------*/ |
||
21 | #ifndef STM32F0xx_HAL_DAC_H |
||
22 | #define STM32F0xx_HAL_DAC_H |
||
23 | |||
24 | #ifdef __cplusplus |
||
25 | extern "C" { |
||
26 | #endif |
||
27 | |||
28 | /** @addtogroup STM32F0xx_HAL_Driver |
||
29 | * @{ |
||
30 | */ |
||
31 | |||
32 | #if defined (DAC1) |
||
33 | |||
34 | /* Includes ------------------------------------------------------------------*/ |
||
35 | #include "stm32f0xx_hal_def.h" |
||
36 | |||
37 | /** @addtogroup DAC |
||
38 | * @{ |
||
39 | */ |
||
40 | |||
41 | /* Exported types ------------------------------------------------------------*/ |
||
42 | |||
43 | /** @defgroup DAC_Exported_Types DAC Exported Types |
||
44 | * @{ |
||
45 | */ |
||
46 | |||
47 | /** |
||
48 | * @brief HAL State structures definition |
||
49 | */ |
||
50 | typedef enum |
||
51 | { |
||
52 | HAL_DAC_STATE_RESET = 0x00U, /*!< DAC not yet initialized or disabled */ |
||
53 | HAL_DAC_STATE_READY = 0x01U, /*!< DAC initialized and ready for use */ |
||
54 | HAL_DAC_STATE_BUSY = 0x02U, /*!< DAC internal processing is ongoing */ |
||
55 | HAL_DAC_STATE_TIMEOUT = 0x03U, /*!< DAC timeout state */ |
||
56 | HAL_DAC_STATE_ERROR = 0x04U /*!< DAC error state */ |
||
57 | |||
58 | }HAL_DAC_StateTypeDef; |
||
59 | |||
60 | /** |
||
61 | * @brief DAC handle Structure definition |
||
62 | */ |
||
63 | typedef struct __DAC_HandleTypeDef |
||
64 | { |
||
65 | DAC_TypeDef *Instance; /*!< Register base address */ |
||
66 | |||
67 | __IO HAL_DAC_StateTypeDef State; /*!< DAC communication state */ |
||
68 | |||
69 | HAL_LockTypeDef Lock; /*!< DAC locking object */ |
||
70 | |||
71 | DMA_HandleTypeDef *DMA_Handle1; /*!< Pointer DMA handler for channel 1 */ |
||
72 | |||
73 | DMA_HandleTypeDef *DMA_Handle2; /*!< Pointer DMA handler for channel 2 */ |
||
74 | |||
75 | __IO uint32_t ErrorCode; /*!< DAC Error code */ |
||
76 | |||
77 | #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1) |
||
78 | void (* ConvCpltCallbackCh1) (struct __DAC_HandleTypeDef *hdac); |
||
79 | void (* ConvHalfCpltCallbackCh1) (struct __DAC_HandleTypeDef *hdac); |
||
80 | void (* ErrorCallbackCh1) (struct __DAC_HandleTypeDef *hdac); |
||
81 | void (* DMAUnderrunCallbackCh1) (struct __DAC_HandleTypeDef *hdac); |
||
82 | void (* ConvCpltCallbackCh2) (struct __DAC_HandleTypeDef* hdac); |
||
83 | void (* ConvHalfCpltCallbackCh2) (struct __DAC_HandleTypeDef* hdac); |
||
84 | void (* ErrorCallbackCh2) (struct __DAC_HandleTypeDef* hdac); |
||
85 | void (* DMAUnderrunCallbackCh2) (struct __DAC_HandleTypeDef* hdac); |
||
86 | |||
87 | void (* MspInitCallback) (struct __DAC_HandleTypeDef *hdac); |
||
88 | void (* MspDeInitCallback ) (struct __DAC_HandleTypeDef *hdac); |
||
89 | #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */ |
||
90 | |||
91 | }DAC_HandleTypeDef; |
||
92 | |||
93 | /** |
||
94 | * @brief DAC Configuration regular Channel structure definition |
||
95 | */ |
||
96 | typedef struct |
||
97 | { |
||
98 | uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel. |
||
99 | This parameter can be a value of @ref DAC_trigger_selection */ |
||
100 | |||
101 | uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled. |
||
102 | This parameter can be a value of @ref DAC_output_buffer */ |
||
103 | |||
104 | }DAC_ChannelConfTypeDef; |
||
105 | |||
106 | #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1) |
||
107 | /** |
||
108 | * @brief HAL DAC Callback ID enumeration definition |
||
109 | */ |
||
110 | typedef enum |
||
111 | { |
||
112 | HAL_DAC_CH1_COMPLETE_CB_ID = 0x00U, /*!< DAC CH1 Complete Callback ID */ |
||
113 | HAL_DAC_CH1_HALF_COMPLETE_CB_ID = 0x01U, /*!< DAC CH1 half Complete Callback ID */ |
||
114 | HAL_DAC_CH1_ERROR_ID = 0x02U, /*!< DAC CH1 error Callback ID */ |
||
115 | HAL_DAC_CH1_UNDERRUN_CB_ID = 0x03U, /*!< DAC CH1 underrun Callback ID */ |
||
116 | HAL_DAC_CH2_COMPLETE_CB_ID = 0x04U, /*!< DAC CH2 Complete Callback ID */ |
||
117 | HAL_DAC_CH2_HALF_COMPLETE_CB_ID = 0x05U, /*!< DAC CH2 half Complete Callback ID */ |
||
118 | HAL_DAC_CH2_ERROR_ID = 0x06U, /*!< DAC CH2 error Callback ID */ |
||
119 | HAL_DAC_CH2_UNDERRUN_CB_ID = 0x07U, /*!< DAC CH2 underrun Callback ID */ |
||
120 | HAL_DAC_MSPINIT_CB_ID = 0x08U, /*!< DAC MspInit Callback ID */ |
||
121 | HAL_DAC_MSPDEINIT_CB_ID = 0x09U, /*!< DAC MspDeInit Callback ID */ |
||
122 | HAL_DAC_ALL_CB_ID = 0x0AU /*!< DAC All ID */ |
||
123 | } HAL_DAC_CallbackIDTypeDef; |
||
124 | |||
125 | /** |
||
126 | * @brief HAL DAC Callback pointer definition |
||
127 | */ |
||
128 | typedef void (*pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac); |
||
129 | #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */ |
||
130 | |||
131 | /** |
||
132 | * @} |
||
133 | */ |
||
134 | |||
135 | /* Exported constants --------------------------------------------------------*/ |
||
136 | |||
137 | /** @defgroup DAC_Exported_Constants DAC Exported Constants |
||
138 | * @{ |
||
139 | */ |
||
140 | |||
141 | /** @defgroup DAC_Error_Code DAC Error Code |
||
142 | * @{ |
||
143 | */ |
||
144 | #define HAL_DAC_ERROR_NONE 0x00U /*!< No error */ |
||
145 | #define HAL_DAC_ERROR_DMAUNDERRUNCH1 0x01U /*!< DAC channel1 DMA underrun error */ |
||
146 | #define HAL_DAC_ERROR_DMAUNDERRUNCH2 0x02U /*!< DAC channel2 DMA underrun error */ |
||
147 | #define HAL_DAC_ERROR_DMA 0x04U /*!< DMA error */ |
||
148 | #define HAL_DAC_ERROR_TIMEOUT 0x08U /*!< Timeout error */ |
||
149 | #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1) |
||
150 | #define HAL_DAC_ERROR_INVALID_CALLBACK 0x10U /*!< Invalid callback error */ |
||
151 | #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */ |
||
152 | /** |
||
153 | * @} |
||
154 | */ |
||
155 | |||
156 | /** @defgroup DAC_output_buffer DAC output buffer |
||
157 | * @{ |
||
158 | */ |
||
159 | #define DAC_OUTPUTBUFFER_ENABLE (0x00000000U) |
||
160 | #define DAC_OUTPUTBUFFER_DISABLE ((uint32_t)DAC_CR_BOFF1) |
||
161 | |||
162 | /** |
||
163 | * @} |
||
164 | */ |
||
165 | |||
166 | /** @defgroup DAC_data_alignment DAC data alignment |
||
167 | * @{ |
||
168 | */ |
||
169 | #define DAC_ALIGN_12B_R (0x00000000U) |
||
170 | #define DAC_ALIGN_12B_L (0x00000004U) |
||
171 | #define DAC_ALIGN_8B_R (0x00000008U) |
||
172 | |||
173 | /** |
||
174 | * @} |
||
175 | */ |
||
176 | |||
177 | /** @defgroup DAC_flags_definition DAC flags definition |
||
178 | * @{ |
||
179 | */ |
||
180 | #define DAC_FLAG_DMAUDR1 ((uint32_t)DAC_SR_DMAUDR1) |
||
181 | #define DAC_FLAG_DMAUDR2 ((uint32_t)DAC_SR_DMAUDR2) |
||
182 | /** |
||
183 | * @} |
||
184 | */ |
||
185 | |||
186 | /** @defgroup DAC_IT_definition DAC IT definition |
||
187 | * @{ |
||
188 | */ |
||
189 | #define DAC_IT_DMAUDR1 ((uint32_t)DAC_SR_DMAUDR1) |
||
190 | #define DAC_IT_DMAUDR2 ((uint32_t)DAC_SR_DMAUDR2) |
||
191 | /** |
||
192 | * @} |
||
193 | */ |
||
194 | |||
195 | /** |
||
196 | * @} |
||
197 | */ |
||
198 | |||
199 | /* Exported macro ------------------------------------------------------------*/ |
||
200 | |||
201 | /** @defgroup DAC_Exported_Macros DAC Exported Macros |
||
202 | * @{ |
||
203 | */ |
||
204 | |||
205 | /** @brief Reset DAC handle state |
||
206 | * @param __HANDLE__ specifies the DAC handle. |
||
207 | * @retval None |
||
208 | */ |
||
209 | #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1) |
||
210 | #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) do { \ |
||
211 | (__HANDLE__)->State = HAL_DAC_STATE_RESET; \ |
||
212 | (__HANDLE__)->MspInitCallback = NULL; \ |
||
213 | (__HANDLE__)->MspDeInitCallback = NULL; \ |
||
214 | } while(0) |
||
215 | #else |
||
216 | #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DAC_STATE_RESET) |
||
217 | #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */ |
||
218 | |||
219 | /** @brief Enable the DAC channel |
||
220 | * @param __HANDLE__ specifies the DAC handle. |
||
221 | * @param __DAC_Channel__ specifies the DAC channel |
||
222 | * @retval None |
||
223 | */ |
||
224 | #define __HAL_DAC_ENABLE(__HANDLE__, __DAC_Channel__) \ |
||
225 | ((__HANDLE__)->Instance->CR |= (DAC_CR_EN1 << (__DAC_Channel__))) |
||
226 | |||
227 | /** @brief Disable the DAC channel |
||
228 | * @param __HANDLE__ specifies the DAC handle |
||
229 | * @param __DAC_Channel__ specifies the DAC channel. |
||
230 | * @retval None |
||
231 | */ |
||
232 | #define __HAL_DAC_DISABLE(__HANDLE__, __DAC_Channel__) \ |
||
233 | ((__HANDLE__)->Instance->CR &= ~(DAC_CR_EN1 << (__DAC_Channel__))) |
||
234 | |||
235 | /** @brief Enable the DAC interrupt |
||
236 | * @param __HANDLE__ specifies the DAC handle |
||
237 | * @param __INTERRUPT__ specifies the DAC interrupt. |
||
238 | * This parameter can be any combination of the following values: |
||
239 | * @arg DAC_IT_DMAUDR1: DAC channel 1 DMA underrun interrupt |
||
240 | * @arg DAC_IT_DMAUDR2: DAC channel 2 DMA underrun interrupt |
||
241 | * @retval None |
||
242 | */ |
||
243 | #define __HAL_DAC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) |= (__INTERRUPT__)) |
||
244 | |||
245 | /** @brief Disable the DAC interrupt |
||
246 | * @param __HANDLE__ specifies the DAC handle |
||
247 | * @param __INTERRUPT__ specifies the DAC interrupt. |
||
248 | * This parameter can be any combination of the following values: |
||
249 | * @arg DAC_IT_DMAUDR1: DAC channel 1 DMA underrun interrupt |
||
250 | * @retval None |
||
251 | */ |
||
252 | #define __HAL_DAC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) &= ~(__INTERRUPT__)) |
||
253 | |||
254 | /** @brief Check whether the specified DAC interrupt source is enabled or not |
||
255 | * @param __HANDLE__ DAC handle |
||
256 | * @param __INTERRUPT__ DAC interrupt source to check |
||
257 | * This parameter can be any combination of the following values: |
||
258 | * @arg DAC_IT_DMAUDR1: DAC channel 1 DMA underrun interrupt |
||
259 | * @arg DAC_IT_DMAUDR2: DAC channel 2 DMA underrun interrupt |
||
260 | * @retval State of interruption (SET or RESET) |
||
261 | */ |
||
262 | #define __HAL_DAC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR & (__INTERRUPT__)) == (__INTERRUPT__)) |
||
263 | |||
264 | /** @brief Get the selected DAC's flag status |
||
265 | * @param __HANDLE__ specifies the DAC handle. |
||
266 | * @param __FLAG__ specifies the DAC flag to get. |
||
267 | * This parameter can be any combination of the following values: |
||
268 | * @arg DAC_FLAG_DMAUDR1: DAC channel 1 DMA underrun flag |
||
269 | * @retval None |
||
270 | */ |
||
271 | #define __HAL_DAC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__)) |
||
272 | |||
273 | /** @brief Clear the DAC's flag |
||
274 | * @param __HANDLE__ specifies the DAC handle. |
||
275 | * @param __FLAG__ specifies the DAC flag to clear. |
||
276 | * This parameter can be any combination of the following values: |
||
277 | * @arg DAC_FLAG_DMAUDR1: DAC channel 1 DMA underrun flag |
||
278 | * @retval None |
||
279 | */ |
||
280 | #define __HAL_DAC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = (__FLAG__)) |
||
281 | |||
282 | /** |
||
283 | * @} |
||
284 | */ |
||
285 | |||
286 | /* Private macro -------------------------------------------------------------*/ |
||
287 | |||
288 | /** @addtogroup DAC_Private_Macros |
||
289 | * @{ |
||
290 | */ |
||
291 | #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \ |
||
292 | ((STATE) == DAC_OUTPUTBUFFER_DISABLE)) |
||
293 | |||
294 | |||
295 | #if defined(DAC_CHANNEL2_SUPPORT) |
||
296 | |||
297 | #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \ |
||
298 | ((CHANNEL) == DAC_CHANNEL_2)) |
||
299 | |||
300 | #else |
||
301 | |||
302 | #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1)) |
||
303 | |||
304 | #endif /* DAC_CHANNEL2_SUPPORT */ |
||
305 | |||
306 | |||
307 | #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \ |
||
308 | ((ALIGN) == DAC_ALIGN_12B_L) || \ |
||
309 | ((ALIGN) == DAC_ALIGN_8B_R)) |
||
310 | |||
311 | #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0U) |
||
312 | |||
313 | /** @brief Set DHR12R1 alignment |
||
314 | * @param __ALIGNMENT__ specifies the DAC alignment |
||
315 | * @retval None |
||
316 | */ |
||
317 | #define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) ((0x00000008U) + (__ALIGNMENT__)) |
||
318 | |||
319 | /** @brief Set DHR12R2 alignment |
||
320 | * @param __ALIGNMENT__ specifies the DAC alignment |
||
321 | * @retval None |
||
322 | */ |
||
323 | #define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) ((0x00000014U) + (__ALIGNMENT__)) |
||
324 | |||
325 | /** @brief Set DHR12RD alignment |
||
326 | * @param __ALIGNMENT__ specifies the DAC alignment |
||
327 | * @retval None |
||
328 | */ |
||
329 | #define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) ((0x00000020U) + (__ALIGNMENT__)) |
||
330 | |||
331 | /** |
||
332 | * @} |
||
333 | */ |
||
334 | |||
335 | /* Include DAC HAL Extension module */ |
||
336 | #include "stm32f0xx_hal_dac_ex.h" |
||
337 | |||
338 | /* Exported functions --------------------------------------------------------*/ |
||
339 | |||
340 | /** @addtogroup DAC_Exported_Functions |
||
341 | * @{ |
||
342 | */ |
||
343 | |||
344 | /** @addtogroup DAC_Exported_Functions_Group1 |
||
345 | * @{ |
||
346 | */ |
||
347 | /* Initialization and de-initialization functions *****************************/ |
||
348 | HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac); |
||
349 | HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac); |
||
350 | void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac); |
||
351 | void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac); |
||
352 | |||
353 | /** |
||
354 | * @} |
||
355 | */ |
||
356 | |||
357 | /** @addtogroup DAC_Exported_Functions_Group2 |
||
358 | * @{ |
||
359 | */ |
||
360 | /* IO operation functions *****************************************************/ |
||
361 | HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel); |
||
362 | HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel); |
||
363 | HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment); |
||
364 | HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel); |
||
365 | |||
366 | void HAL_DAC_IRQHandler(DAC_HandleTypeDef* hdac); |
||
367 | |||
368 | HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data); |
||
369 | |||
370 | void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac); |
||
371 | void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac); |
||
372 | void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac); |
||
373 | void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac); |
||
374 | |||
375 | #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1) |
||
376 | /* DAC callback registering/unregistering */ |
||
377 | HAL_StatusTypeDef HAL_DAC_RegisterCallback (DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackId, pDAC_CallbackTypeDef pCallback); |
||
378 | HAL_StatusTypeDef HAL_DAC_UnRegisterCallback (DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackId); |
||
379 | #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */ |
||
380 | |||
381 | /** |
||
382 | * @} |
||
383 | */ |
||
384 | |||
385 | /** @addtogroup DAC_Exported_Functions_Group3 |
||
386 | * @{ |
||
387 | */ |
||
388 | /* Peripheral Control functions ***********************************************/ |
||
389 | uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel); |
||
390 | |||
391 | HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel); |
||
392 | /** |
||
393 | * @} |
||
394 | */ |
||
395 | |||
396 | /** @addtogroup DAC_Exported_Functions_Group4 |
||
397 | * @{ |
||
398 | */ |
||
399 | /* Peripheral State and Error functions ***************************************/ |
||
400 | HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac); |
||
401 | uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac); |
||
402 | |||
403 | /** |
||
404 | * @} |
||
405 | */ |
||
406 | |||
407 | /** |
||
408 | * @} |
||
409 | */ |
||
410 | |||
411 | /** |
||
412 | * @} |
||
413 | */ |
||
414 | |||
415 | #endif /* DAC1 */ |
||
416 | |||
417 | /** |
||
418 | * @} |
||
419 | */ |
||
420 | |||
421 | #ifdef __cplusplus |
||
422 | } |
||
423 | #endif |
||
424 | |||
425 | |||
426 | #endif /* STM32F0xx_HAL_DAC_H */ |
||
427 | |||
428 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
||
429 |