stm32f1xx_hal_dac.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /**
  2. ******************************************************************************
  3. * @file stm32f1xx_hal_dac.h
  4. * @author MCD Application Team
  5. * @version V1.1.1
  6. * @date 12-May-2017
  7. * @brief Header file of DAC HAL module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
  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. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32F1xx_HAL_DAC_H
  39. #define __STM32F1xx_HAL_DAC_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32f1xx_hal_def.h"
  46. /** @addtogroup STM32F1xx_HAL_Driver
  47. * @{
  48. */
  49. /** @addtogroup DAC
  50. * @{
  51. */
  52. /* Exported types ------------------------------------------------------------*/
  53. /** @defgroup DAC_Exported_Types DAC Exported Types
  54. * @{
  55. */
  56. /**
  57. * @brief HAL State structures definition
  58. */
  59. typedef enum
  60. {
  61. HAL_DAC_STATE_RESET = 0x00U, /*!< DAC not yet initialized or disabled */
  62. HAL_DAC_STATE_READY = 0x01U, /*!< DAC initialized and ready for use */
  63. HAL_DAC_STATE_BUSY = 0x02U, /*!< DAC internal processing is ongoing */
  64. HAL_DAC_STATE_TIMEOUT = 0x03U, /*!< DAC timeout state */
  65. HAL_DAC_STATE_ERROR = 0x04U /*!< DAC error state */
  66. }HAL_DAC_StateTypeDef;
  67. /**
  68. * @brief DAC handle Structure definition
  69. */
  70. typedef struct
  71. {
  72. DAC_TypeDef *Instance; /*!< Register base address */
  73. __IO HAL_DAC_StateTypeDef State; /*!< DAC communication state */
  74. HAL_LockTypeDef Lock; /*!< DAC locking object */
  75. DMA_HandleTypeDef *DMA_Handle1; /*!< Pointer DMA handler for channel 1 */
  76. DMA_HandleTypeDef *DMA_Handle2; /*!< Pointer DMA handler for channel 2 */
  77. __IO uint32_t ErrorCode; /*!< DAC Error code */
  78. }DAC_HandleTypeDef;
  79. /**
  80. * @brief DAC Configuration regular Channel structure definition
  81. */
  82. typedef struct
  83. {
  84. uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel.
  85. This parameter can be a value of @ref DACEx_trigger_selection
  86. Note: For STM32F100x high-density value line devices, additional trigger sources are available. */
  87. uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
  88. This parameter can be a value of @ref DAC_output_buffer */
  89. }DAC_ChannelConfTypeDef;
  90. /**
  91. * @}
  92. */
  93. /* Exported constants --------------------------------------------------------*/
  94. /** @defgroup DAC_Exported_Constants DAC Exported Constants
  95. * @{
  96. */
  97. /** @defgroup DAC_Error_Code DAC Error Code
  98. * @{
  99. */
  100. #define HAL_DAC_ERROR_NONE 0x00000000U /*!< No error */
  101. #define HAL_DAC_ERROR_DMAUNDERRUNCH1 0x00000001U /*!< DAC channel1 DMA underrun error */
  102. #define HAL_DAC_ERROR_DMAUNDERRUNCH2 0x00000002U /*!< DAC channel2 DMA underrun error */
  103. #define HAL_DAC_ERROR_DMA 0x00000004U /*!< DMA error */
  104. /**
  105. * @}
  106. */
  107. /** @defgroup DAC_output_buffer DAC output buffer
  108. * @{
  109. */
  110. #define DAC_OUTPUTBUFFER_ENABLE 0x00000000U
  111. #define DAC_OUTPUTBUFFER_DISABLE ((uint32_t)DAC_CR_BOFF1)
  112. /**
  113. * @}
  114. */
  115. /** @defgroup DAC_Channel_selection DAC Channel selection
  116. * @{
  117. */
  118. #define DAC_CHANNEL_1 0x00000000U
  119. #define DAC_CHANNEL_2 0x00000010U
  120. /**
  121. * @}
  122. */
  123. /** @defgroup DAC_data_alignement DAC data alignement
  124. * @{
  125. */
  126. #define DAC_ALIGN_12B_R 0x00000000U
  127. #define DAC_ALIGN_12B_L 0x00000004U
  128. #define DAC_ALIGN_8B_R 0x00000008U
  129. /**
  130. * @}
  131. */
  132. /**
  133. * @}
  134. */
  135. /* Exported macro ------------------------------------------------------------*/
  136. /** @defgroup DAC_Exported_Macros DAC Exported Macros
  137. * @{
  138. */
  139. /** @brief Reset DAC handle state
  140. * @param __HANDLE__: specifies the DAC handle.
  141. * @retval None
  142. */
  143. #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DAC_STATE_RESET)
  144. /** @brief Enable the DAC channel
  145. * @param __HANDLE__: specifies the DAC handle.
  146. * @param __DAC_Channel__: specifies the DAC channel
  147. * @retval None
  148. */
  149. #define __HAL_DAC_ENABLE(__HANDLE__, __DAC_Channel__) \
  150. ((__HANDLE__)->Instance->CR |= (DAC_CR_EN1 << (__DAC_Channel__)))
  151. /** @brief Disable the DAC channel
  152. * @param __HANDLE__: specifies the DAC handle
  153. * @param __DAC_Channel__: specifies the DAC channel.
  154. * @retval None
  155. */
  156. #define __HAL_DAC_DISABLE(__HANDLE__, __DAC_Channel__) \
  157. ((__HANDLE__)->Instance->CR &= ~(DAC_CR_EN1 << (__DAC_Channel__)))
  158. /**
  159. * @}
  160. */
  161. /* Private macro -------------------------------------------------------------*/
  162. /** @defgroup DAC_Private_Macros DAC Private Macros
  163. * @{
  164. */
  165. #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \
  166. ((STATE) == DAC_OUTPUTBUFFER_DISABLE))
  167. #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
  168. ((CHANNEL) == DAC_CHANNEL_2))
  169. #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \
  170. ((ALIGN) == DAC_ALIGN_12B_L) || \
  171. ((ALIGN) == DAC_ALIGN_8B_R))
  172. #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0U)
  173. #define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) (0x00000008U + (__ALIGNMENT__))
  174. #define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) (0x00000014U + (__ALIGNMENT__))
  175. #define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) (0x00000020U + (__ALIGNMENT__))
  176. /**
  177. * @}
  178. */
  179. /* Include DAC HAL Extension module */
  180. #include "stm32f1xx_hal_dac_ex.h"
  181. /* Exported functions --------------------------------------------------------*/
  182. /** @addtogroup DAC_Exported_Functions
  183. * @{
  184. */
  185. /** @addtogroup DAC_Exported_Functions_Group1
  186. * @{
  187. */
  188. /* Initialization and de-initialization functions *****************************/
  189. HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac);
  190. HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac);
  191. void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac);
  192. void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac);
  193. /**
  194. * @}
  195. */
  196. /** @addtogroup DAC_Exported_Functions_Group2
  197. * @{
  198. */
  199. /* IO operation functions *****************************************************/
  200. HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel);
  201. HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel);
  202. HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment);
  203. HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel);
  204. HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
  205. uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel);
  206. /**
  207. * @}
  208. */
  209. /** @addtogroup DAC_Exported_Functions_Group3
  210. * @{
  211. */
  212. /* Peripheral Control functions ***********************************************/
  213. HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel);
  214. /**
  215. * @}
  216. */
  217. /** @addtogroup DAC_Exported_Functions_Group4
  218. * @{
  219. */
  220. /* Peripheral State functions *************************************************/
  221. HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac);
  222. uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac);
  223. void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac);
  224. void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac);
  225. void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac);
  226. /**
  227. * @}
  228. */
  229. /**
  230. * @}
  231. */
  232. /** @addtogroup DAC_Private_Functions DAC Private Functions
  233. * @{
  234. */
  235. void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
  236. void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
  237. void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
  238. /**
  239. * @}
  240. */
  241. /**
  242. * @}
  243. */
  244. /**
  245. * @}
  246. */
  247. #endif /* STM32F100xB || STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */
  248. #ifdef __cplusplus
  249. }
  250. #endif
  251. #endif /*__STM32F1xx_HAL_DAC_H */
  252. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/