Subversion Repositories DashDisplay

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_dac.h
4
  * @author  MCD Application Team
5 mjames 5
  * @version V1.0.4
6
  * @date    29-April-2016
2 mjames 7
  * @brief   Header file of DAC HAL module.
8
  ******************************************************************************
9
  * @attention
10
  *
5 mjames 11
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
2 mjames 12
  *
13
  * Redistribution and use in source and binary forms, with or without modification,
14
  * are permitted provided that the following conditions are met:
15
  *   1. Redistributions of source code must retain the above copyright notice,
16
  *      this list of conditions and the following disclaimer.
17
  *   2. Redistributions in binary form must reproduce the above copyright notice,
18
  *      this list of conditions and the following disclaimer in the documentation
19
  *      and/or other materials provided with the distribution.
20
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
21
  *      may be used to endorse or promote products derived from this software
22
  *      without specific prior written permission.
23
  *
24
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
  *
35
  ******************************************************************************
36
  */
37
 
38
/* Define to prevent recursive inclusion -------------------------------------*/
39
#ifndef __STM32F1xx_HAL_DAC_H
40
#define __STM32F1xx_HAL_DAC_H
41
 
42
#ifdef __cplusplus
43
 extern "C" {
44
#endif
45
 
46
#if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
47
 
48
/* Includes ------------------------------------------------------------------*/
49
#include "stm32f1xx_hal_def.h"
50
 
51
/** @addtogroup STM32F1xx_HAL_Driver
52
  * @{
53
  */
54
 
55
/** @addtogroup DAC
56
  * @{
57
  */
58
 
59
/* Exported types ------------------------------------------------------------*/
60
 
61
/** @defgroup DAC_Exported_Types DAC Exported Types
62
  * @{
63
  */
64
 
65
/**
66
  * @brief  HAL State structures definition  
67
  */
68
typedef enum
69
{
70
  HAL_DAC_STATE_RESET             = 0x00,  /*!< DAC not yet initialized or disabled  */
71
  HAL_DAC_STATE_READY             = 0x01,  /*!< DAC initialized and ready for use    */
72
  HAL_DAC_STATE_BUSY              = 0x02,  /*!< DAC internal processing is ongoing   */
73
  HAL_DAC_STATE_TIMEOUT           = 0x03,  /*!< DAC timeout state                    */
74
  HAL_DAC_STATE_ERROR             = 0x04   /*!< DAC error state                      */
75
 
76
}HAL_DAC_StateTypeDef;
77
 
78
/**
79
  * @brief  DAC handle Structure definition  
80
  */
81
typedef struct
82
{
83
  DAC_TypeDef                 *Instance;     /*!< Register base address             */
84
 
85
  __IO HAL_DAC_StateTypeDef   State;         /*!< DAC communication state           */
86
 
87
  HAL_LockTypeDef             Lock;          /*!< DAC locking object                */
88
 
89
  DMA_HandleTypeDef           *DMA_Handle1;  /*!< Pointer DMA handler for channel 1 */
90
 
91
  DMA_HandleTypeDef           *DMA_Handle2;  /*!< Pointer DMA handler for channel 2 */
92
 
93
  __IO uint32_t               ErrorCode;     /*!< DAC Error code                    */
94
 
95
}DAC_HandleTypeDef;
96
 
97
/**
98
  * @brief   DAC Configuration regular Channel structure definition  
99
  */
100
typedef struct
101
{
102
  uint32_t DAC_Trigger;       /*!< Specifies the external trigger for the selected DAC channel.
103
                                   This parameter can be a value of @ref DACEx_trigger_selection
104
                                   Note: For STM32F100x high-density value line devices, additional trigger sources are available. */
105
 
106
  uint32_t DAC_OutputBuffer;  /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
107
                                   This parameter can be a value of @ref DAC_output_buffer */
108
 
109
}DAC_ChannelConfTypeDef;
110
 
111
/**
112
  * @}
113
  */
114
 
115
/* Exported constants --------------------------------------------------------*/
116
 
117
/** @defgroup DAC_Exported_Constants DAC Exported Constants
118
  * @{
119
  */
120
 
121
/** @defgroup DAC_Error_Code DAC Error Code
122
  * @{
123
  */
124
#define  HAL_DAC_ERROR_NONE              0x00    /*!< No error                          */
125
#define  HAL_DAC_ERROR_DMAUNDERRUNCH1    0x01    /*!< DAC channel1 DMA underrun error   */
126
#define  HAL_DAC_ERROR_DMAUNDERRUNCH2    0x02    /*!< DAC channel2 DMA underrun error   */
127
#define  HAL_DAC_ERROR_DMA               0x04    /*!< DMA error                         */   
128
/**
129
  * @}
130
  */
131
 
132
/** @defgroup DAC_output_buffer DAC output buffer
133
  * @{
134
  */
135
#define DAC_OUTPUTBUFFER_ENABLE            ((uint32_t)0x00000000)
136
#define DAC_OUTPUTBUFFER_DISABLE           ((uint32_t)DAC_CR_BOFF1)
137
 
138
/**
139
  * @}
140
  */
141
 
142
/** @defgroup DAC_Channel_selection DAC Channel selection
143
  * @{
144
  */
145
#define DAC_CHANNEL_1                      ((uint32_t)0x00000000)
146
#define DAC_CHANNEL_2                      ((uint32_t)0x00000010)
147
 
148
/**
149
  * @}
150
  */
151
 
152
/** @defgroup DAC_data_alignement DAC data alignement
153
  * @{
154
  */
155
#define DAC_ALIGN_12B_R                    ((uint32_t)0x00000000)
156
#define DAC_ALIGN_12B_L                    ((uint32_t)0x00000004)
157
#define DAC_ALIGN_8B_R                     ((uint32_t)0x00000008)
158
 
159
/**
160
  * @}
161
  */
162
 
163
/**
164
  * @}
165
  */
166
 
167
/* Exported macro ------------------------------------------------------------*/
168
 
169
/** @defgroup DAC_Exported_Macros DAC Exported Macros
170
  * @{
171
  */
172
 
173
/** @brief Reset DAC handle state
174
  * @param  __HANDLE__: specifies the DAC handle.
175
  * @retval None
176
  */
177
#define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DAC_STATE_RESET)
178
 
179
/** @brief Enable the DAC channel
180
  * @param  __HANDLE__: specifies the DAC handle.
181
  * @param  __DAC_Channel__: specifies the DAC channel
182
  * @retval None
183
  */
184
#define __HAL_DAC_ENABLE(__HANDLE__, __DAC_Channel__) \
185
((__HANDLE__)->Instance->CR |=  (DAC_CR_EN1 << (__DAC_Channel__)))
186
 
187
/** @brief Disable the DAC channel
188
  * @param  __HANDLE__: specifies the DAC handle
189
  * @param  __DAC_Channel__: specifies the DAC channel.
190
  * @retval None
191
  */
192
#define __HAL_DAC_DISABLE(__HANDLE__, __DAC_Channel__) \
193
((__HANDLE__)->Instance->CR &=  ~(DAC_CR_EN1 << (__DAC_Channel__)))
194
 
195
 
196
/**
197
  * @}
198
  */
199
 
200
/* Private macro -------------------------------------------------------------*/
201
 
202
/** @defgroup DAC_Private_Macros DAC Private Macros
203
  * @{
204
  */
205
#define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \
206
                                           ((STATE) == DAC_OUTPUTBUFFER_DISABLE))
207
 
208
#define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
209
                                 ((CHANNEL) == DAC_CHANNEL_2))
210
 
211
#define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \
212
                             ((ALIGN) == DAC_ALIGN_12B_L) || \
213
                             ((ALIGN) == DAC_ALIGN_8B_R))
214
 
215
#define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0)
216
 
217
#define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) (((uint32_t)0x00000008) + (__ALIGNMENT__))
218
 
219
#define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) (((uint32_t)0x00000014) + (__ALIGNMENT__))
220
 
221
#define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) (((uint32_t)0x00000020) + (__ALIGNMENT__))
222
 
223
/**
224
  * @}
225
  */
226
 
227
 
228
/* Include DAC HAL Extension module */
229
#include "stm32f1xx_hal_dac_ex.h"
230
 
231
/* Exported functions --------------------------------------------------------*/
232
 
233
/** @addtogroup DAC_Exported_Functions
234
  * @{
235
  */
236
 
237
/** @addtogroup DAC_Exported_Functions_Group1
238
  * @{
239
  */
240
/* Initialization and de-initialization functions *****************************/
241
HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac);
242
HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac);
243
void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac);
244
void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac);
245
 
246
/**
247
  * @}
248
  */
249
 
250
/** @addtogroup DAC_Exported_Functions_Group2
251
  * @{
252
  */
253
/* IO operation functions *****************************************************/
254
HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel);
255
HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel);
256
HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment);
257
HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel);
258
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
259
uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel);
260
 
261
/**
262
  * @}
263
  */
264
 
265
/** @addtogroup DAC_Exported_Functions_Group3
266
  * @{
267
  */
268
/* Peripheral Control functions ***********************************************/
269
HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel);
270
 
271
/**
272
  * @}
273
  */
274
 
275
/** @addtogroup DAC_Exported_Functions_Group4
276
  * @{
277
  */
278
/* Peripheral State functions *************************************************/
279
HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac);
280
uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac);
281
 
282
void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac);
283
void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac);
284
void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac);
285
 
286
 
287
/**
288
  * @}
289
  */
290
 
291
/**
292
  * @}
293
  */
294
 
295
/** @addtogroup DAC_Private_Functions DAC Private Functions
296
  * @{
297
  */
298
void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
299
void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
300
void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
301
 
302
/**
303
  * @}
304
  */
305
 
306
/**
307
  * @}
308
  */
309
 
310
/**
311
  * @}
312
  */
313
 
314
#endif /* STM32F100xB || STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
315
 
316
#ifdef __cplusplus
317
}
318
#endif
319
 
320
 
321
#endif /*__STM32F1xx_HAL_DAC_H */
322
 
323
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
324