Subversion Repositories DashDisplay

Rev

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

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_hal_dac.h
  4.   * @author  MCD Application Team
  5.   * @version V1.0.4
  6.   * @date    29-April-2016
  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.  
  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.  
  325.