adc12.h
上传用户:yyyd609
上传日期:2022-07-18
资源大小:183k
文件大小:7k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
  2. * File Name          : adc12.h
  3. * Author             : MCD Application Team
  4. * Date First Issued  : 07/31/2003
  5. * Description        : ADC12 functions prototypes
  6. ********************************************************************************
  7. * History:
  8. *  01/01/2004 : V1.2
  9. *  14/07/2004 : V1.3
  10. *******************************************************************************/
  11. #ifndef _ADC12_H
  12. #define _ADC12_H
  13. #include "71x_lib.h"
  14. //--------------------ADC12 Conversion modes-----------------------------------
  15. typedef enum
  16. {
  17.   ADC12_SINGLE,
  18.   ADC12_ROUND
  19. } ADC12_Modes;
  20. //--------------------ADC12 Channels-------------------------------------------
  21. typedef enum
  22. {
  23.   ADC12_CHANNEL0 = 0x00,
  24.   ADC12_CHANNEL1 = 0x10,
  25.   ADC12_CHANNEL2 = 0x20,
  26.   ADC12_CHANNEL3 = 0x30
  27. } ADC12_Channels;
  28. //--------------------ADC12 control status register flag-----------------------
  29. typedef enum
  30. {
  31.   ADC12_DA0 = 0x01,
  32.   ADC12_DA1 = 0x02,
  33.   ADC12_DA2 = 0x04,
  34.   ADC12_DA3 = 0x08,
  35.   ADC12_OR  = 0x2000
  36. } ADC12_Flags;
  37. // Masks for the update of interrupt bit for channel n
  38. #define ADC12_IT0_Mask   0x0100
  39. #define ADC12_IT1_Mask   0x0200
  40. #define ADC12_IT2_Mask   0x0400
  41. #define ADC12_IT3_Mask   0x0800
  42. //Mask for the update of all the interrupt bit in the CSR
  43. #define ADC12_IT_Mask    0x0F00
  44. //Mask for Selecting mode
  45. #define ADC12_Mode_Mask  0x0040
  46. //Mask for configuring the converter
  47. #define ADC12_Start_Mask 0x0020
  48. /*******************************************************************************
  49. * Function Name      : ADC12_Init
  50. * Description        : Intialize the ADC
  51. * Input              : None.
  52. * Return             : None.
  53. *******************************************************************************/
  54. void ADC12_Init(void);
  55. /*******************************************************************************
  56. * Function Name      : ADC12_ConversionStart
  57. * Description        : start the Conversion.
  58. * Input              : None
  59. * Return             : None
  60. *******************************************************************************/
  61. inline void ADC12_ConversionStart (void)
  62. {
  63.   // Set the ADCen bit of the bootconf register
  64.   PCU->BOOTCR |= ADC12_Start_Mask;
  65. }
  66. /*******************************************************************************
  67. * Function Name      : ADC12_ConversionStop
  68. * Description        : Disable the ADC
  69. * Input              : None.
  70. * Return             : None.
  71. *******************************************************************************/
  72. inline void ADC12_ConversionStop(void)
  73. {
  74.   // Clear the ADCen bit of the bootconf register
  75.   PCU->BOOTCR &= ~ADC12_Start_Mask;
  76. }
  77. /*******************************************************************************
  78. * Function Name      : ADC12_ModeConfig
  79. * Description        : Configure the mode of conversion
  80. * Input              : ADC12_SINGLE: single channel mode
  81. *                      ADC12_ROUND : round robin mode
  82. * Return             : None
  83. *******************************************************************************/
  84. inline void ADC12_ModeConfig (ADC12_Modes ConversionMode)
  85. {
  86.   // Select the mode of conversion and update the CSR[6]
  87.   ADC12->CSR= ConversionMode == ADC12_SINGLE ? ADC12->CSR | ADC12_Mode_Mask :
  88.                                                ADC12->CSR & ~ADC12_Mode_Mask;
  89. }
  90. /*******************************************************************************
  91. * Function Name      : ADC12_PrescalerConfig
  92. * Description        : Configure the prescaler
  93. * Input              : Adc12_clk: Sampling frequency.
  94. * Return             : None.
  95. *******************************************************************************/
  96. void ADC12_PrescalerConfig(u32 Adc12_clk);
  97. /*******************************************************************************
  98. * Function Name      : ADC12_ChannelSelect
  99. * Description        : select the channel passed as parameter to be converted.
  100. * Input              : ADC12_Channel: channel selected to be converted it may be
  101. *                      ADC12_CHANNEL0 : select channel 0
  102. *                      ADC12_CHANNEL1 : select channel 1
  103. *                      ADC12_CHANNEL2 : select channel 2
  104. *                      ADC12_CHANNEL3 : select channel 3
  105. * Return             : None
  106. *******************************************************************************/
  107. inline void ADC12_ChannelSelect(ADC12_Channels ADC12_Channel)
  108. {
  109.   // Update the CSR by the value of the selected channel
  110.   ADC12->CSR |= ADC12_Channel;
  111. }
  112. /*******************************************************************************
  113. * Function Name      : ADC12_FlagStatus
  114. * Description        : test if the flag passed in parameter is set or not
  115. * Input              : ADC12_DA0 :Data Available on Channel 0
  116. *                      ADC12_DA1 :Data Available on Channel 1
  117. *                      ADC12_DA2 :Data Available on Channel 2
  118. *                      ADC12_DA3 :Data Available on Channel 3
  119. *                      ADC12_OR  :Overrun
  120. * Return             : SET: if the flag is set
  121. *                      RESET: if the flag is clear
  122. *******************************************************************************/
  123. inline FlagStatus ADC12_FlagStatus (ADC12_Flags flag)
  124. {
  125.   // Test on the flag status and return set or RESET
  126.   return ADC12->CSR & flag ? SET : RESET;
  127. }
  128. /*******************************************************************************
  129. * Function Name      : ADC12_ConversionValue
  130. * Description        : Read the conversion result from the data register.
  131. * Input              : ADC12_Channel :number of the register to read
  132. *                      ADC12_CHANNEL0 : read the DATA0 register
  133. *                      ADC12_CHANNEL1 : read the DATA1 register
  134. *                      ADC12_CHANNEL2 : read the DATA2 register
  135. *                      ADC12_CHANNEL3 : read the DATA3 register
  136. * Return             : the register value of the channel converted
  137. *******************************************************************************/
  138. inline u16 ADC12_ConversionValue( ADC12_Channels ADC12_Channel)
  139. {
  140.   // Only the 12 MSB of the DATAn Register are taken
  141.   return *(u16 *)(ADC12_BASE + (ADC12_Channel >> 1)) >> 4;
  142. }
  143. /*******************************************************************************
  144. * Function Name      : ADC12_ITConfig
  145. * Description        : enable or disable the interruption
  146. * Input              : status=ENABLE=>enable interrupt
  147. *                      status=DISABLE=>disable interrupt
  148. * Return             : None
  149. *******************************************************************************/
  150. void ADC12_ITConfig (FunctionalState NewState);
  151. #endif