gd32f10x_adc.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. /**
  2. ******************************************************************************
  3. * @brief ADC header file of the firmware library.
  4. ******************************************************************************
  5. */
  6. /* Define to prevent recursive inclusion -------------------------------------*/
  7. #ifndef __GD32F10X_ADC_H
  8. #define __GD32F10X_ADC_H
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. typedef enum { FALSE = 0, TRUE } BOOL;
  13. /* Includes ------------------------------------------------------------------*/
  14. #include "gd32f10x.h"
  15. /** @addtogroup GD32F10x_Firmware
  16. * @{
  17. */
  18. /** @addtogroup ADC
  19. * @{
  20. */
  21. /** @defgroup ADC_Exported_Types
  22. * @{
  23. */
  24. /**
  25. * @brief ADC Init structure definition
  26. */
  27. typedef struct {
  28. uint32_t ADC_Trig_External; /*!< AD conversion of regular channels trigger. */
  29. uint8_t ADC_Channel_Number; /*!< The number of converted ADC channels .
  30. This parameter must range from 1 to 16. */
  31. uint32_t ADC_Data_Align; /*!< ADC data alignment,left or right. */
  32. TypeState ADC_Mode_Scan; /*!< AD conversion mode,multichannels mode or Single channel mode.
  33. This parameter can be ENABLE or DISABLE */
  34. uint32_t ADC_Mode; /*!< AD operation mode,independent mode or dual mode.
  35. This parameter can be a value of @ref ADC_mode */
  36. TypeState ADC_Mode_Continuous; /*!< AD perform mode,continuous mode or single mode.
  37. This parameter can be ENABLE or DISABLE. */
  38. } ADC_InitPara;
  39. /**
  40. * @}
  41. */
  42. /** @defgroup ADC_Exported_Constants
  43. * @{
  44. */
  45. /** @defgroup ADC_external_trigger
  46. * @{
  47. */
  48. #define ADC_EXTERNAL_TRIGGER_MODE_T1_CC1 ((uint32_t)0x00000000) /*!< Only used in ADC1 and ADC2 */
  49. #define ADC_EXTERNAL_TRIGGER_MODE_T1_CC2 ((uint32_t)0x00020000) /*!< Only used in ADC1 and ADC2 */
  50. #define ADC_EXTERNAL_TRIGGER_MODE_T2_CC2 ((uint32_t)0x00060000) /*!< Only used in ADC1 and ADC2 */
  51. #define ADC_EXTERNAL_TRIGGER_MODE_T3_TRGO ((uint32_t)0x00080000) /*!< Only used in ADC1 and ADC2 */
  52. #define ADC_EXTERNAL_TRIGGER_MODE_T4_CC4 ((uint32_t)0x000A0000) /*!< Only used in ADC1 and ADC2 */
  53. #define ADC_EXTERNAL_TRIGGER_MODE_EXT_IT11_T8_TRGO ((uint32_t)0x000C0000) /*!< Only used in ADC1 and ADC2 */
  54. #define ADC_EXTERNAL_TRIGGER_MODE_T1_CC3 ((uint32_t)0x00040000) /*!< Used in ADC1,ADC2 and ADC3 */
  55. #define ADC_EXTERNAL_TRIGGER_MODE_NONE ((uint32_t)0x000E0000) /*!< Used in ADC1,ADC2 and ADC3 */
  56. #define ADC_EXTERNAL_TRIGGER_MODE_T3_CC1 ((uint32_t)0x00000000) /*!< Only used in ADC3 */
  57. #define ADC_EXTERNAL_TRIGGER_MODE_T2_CC3 ((uint32_t)0x00020000) /*!< Only used in ADC3 */
  58. #define ADC_EXTERNAL_TRIGGER_MODE_T8_CC1 ((uint32_t)0x00060000) /*!< Only used in ADC3 */
  59. #define ADC_EXTERNAL_TRIGGER_MODE_T8_TRGO ((uint32_t)0x00080000) /*!< Only used in ADC3 */
  60. #define ADC_EXTERNAL_TRIGGER_MODE_T5_CC1 ((uint32_t)0x000A0000) /*!< Only used in ADC3 */
  61. #define ADC_EXTERNAL_TRIGGER_MODE_T5_CC3 ((uint32_t)0x000C0000) /*!< Only used in ADC3 */
  62. /**
  63. * @}
  64. */
  65. /** @defgroup ADC_channels
  66. * @{
  67. */
  68. #define ADC_CHANNEL_0 ((uint8_t)0x00)
  69. #define ADC_CHANNEL_1 ((uint8_t)0x01)
  70. #define ADC_CHANNEL_2 ((uint8_t)0x02)
  71. #define ADC_CHANNEL_3 ((uint8_t)0x03)
  72. #define ADC_CHANNEL_4 ((uint8_t)0x04)
  73. #define ADC_CHANNEL_5 ((uint8_t)0x05)
  74. #define ADC_CHANNEL_6 ((uint8_t)0x06)
  75. #define ADC_CHANNEL_7 ((uint8_t)0x07)
  76. #define ADC_CHANNEL_8 ((uint8_t)0x08)
  77. #define ADC_CHANNEL_9 ((uint8_t)0x09)
  78. #define ADC_CHANNEL_10 ((uint8_t)0x0A)
  79. #define ADC_CHANNEL_11 ((uint8_t)0x0B)
  80. #define ADC_CHANNEL_12 ((uint8_t)0x0C)
  81. #define ADC_CHANNEL_13 ((uint8_t)0x0D)
  82. #define ADC_CHANNEL_14 ((uint8_t)0x0E)
  83. #define ADC_CHANNEL_15 ((uint8_t)0x0F)
  84. #define ADC_CHANNEL_16 ((uint8_t)0x10)
  85. #define ADC_CHANNEL_17 ((uint8_t)0x11)
  86. #define ADC_CHANNEL_TEMPSENSOR ((uint8_t)ADC_CHANNEL_16)
  87. #define ADC_CHANNEL_VREFINT ((uint8_t)ADC_CHANNEL_17)
  88. /**
  89. * @}
  90. */
  91. /** @defgroup ADC_data_align
  92. * @{
  93. */
  94. #define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000)
  95. #define ADC_DATAALIGN_LEFT ((uint32_t)0x00000800)
  96. /**
  97. * @}
  98. */
  99. /** @defgroup ADC_mode
  100. * @{
  101. */
  102. #define ADC_MODE_INDEPENDENT ((uint32_t)0x00000000)
  103. #define ADC_MODE_REGINSERTSIMULT ((uint32_t)0x00010000)
  104. #define ADC_MODE_REGSIMULT_ALTERTRIG ((uint32_t)0x00020000)
  105. #define ADC_MODE_INSERTSIMULT_FASTINTERL ((uint32_t)0x00030000)
  106. #define ADC_MODE_INSERTSIMULT_SLOWINTERL ((uint32_t)0x00040000)
  107. #define ADC_MODE_INSERTSIMULT ((uint32_t)0x00050000)
  108. #define ADC_MODE_REGSIMULT ((uint32_t)0x00060000)
  109. #define ADC_MODE_FASTINTERL ((uint32_t)0x00070000)
  110. #define ADC_MODE_SLOWINTERL ((uint32_t)0x00080000)
  111. #define ADC_MODE_ALTERTRIG ((uint32_t)0x00090000)
  112. /**
  113. * @}
  114. */
  115. /** @defgroup ADC_sampling_time
  116. * @{
  117. */
  118. #define ADC_SAMPLETIME_1POINT5 ((uint8_t)0x00)
  119. #define ADC_SAMPLETIME_7POINT5 ((uint8_t)0x01)
  120. #define ADC_SAMPLETIME_13POINT5 ((uint8_t)0x02)
  121. #define ADC_SAMPLETIME_28POINT5 ((uint8_t)0x03)
  122. #define ADC_SAMPLETIME_41POINT5 ((uint8_t)0x04)
  123. #define ADC_SAMPLETIME_55POINT5 ((uint8_t)0x05)
  124. #define ADC_SAMPLETIME_71POINT5 ((uint8_t)0x06)
  125. #define ADC_SAMPLETIME_239POINT5 ((uint8_t)0x07)
  126. /**
  127. * @}
  128. */
  129. /** @defgroup ADC_external_trigger_sources_for_inserted_channels_conversion
  130. * @{
  131. */
  132. #define ADC_EXTERNAL_TRIG_INSERTCONV_T2_TRGO ((uint32_t)0x00002000) /*!< Only used in ADC1 and ADC2 */
  133. #define ADC_EXTERNAL_TRIG_INSERTCONV_T2_CC1 ((uint32_t)0x00003000) /*!< Only used in ADC1 and ADC2 */
  134. #define ADC_EXTERNAL_TRIG_INSERTCONV_T3_CC4 ((uint32_t)0x00004000) /*!< Only used in ADC1 and ADC2 */
  135. #define ADC_EXTERNAL_TRIG_INSERTCONV_T4_TRGO ((uint32_t)0x00005000) /*!< Only used in ADC1 and ADC2 */
  136. #define ADC_EXTERNAL_TRIG_INSERTCONV_EXT_IT15_T8_CC4 ((uint32_t)0x00006000) /*!< Only used in ADC1 and ADC2 */
  137. #define ADC_EXTERNAL_TRIG_INSERTCONV_T1_TRIG ((uint32_t)0x00000000) /*!< Used in ADC1,ADC2 and ADC3 */
  138. #define ADC_EXTERNAL_TRIG_INSERTCONV_T1_CC4 ((uint32_t)0x00001000) /*!< Used in ADC1,ADC2 and ADC3 */
  139. #define ADC_EXTERNAL_TRIG_INSERTCONV_NONE ((uint32_t)0x00007000) /*!< Used in ADC1,ADC2 and ADC3 */
  140. #define ADC_EXTERNAL_TRIG_INSERTCONV_T4_CC3 ((uint32_t)0x00002000) /*!< Only used in ADC3 */
  141. #define ADC_EXTERNAL_TRIG_INSERTCONV_T8_CC2 ((uint32_t)0x00003000) /*!< Only used in ADC3 */
  142. #define ADC_EXTERNAL_TRIG_INSERTCONV_T8_CC4 ((uint32_t)0x00004000) /*!< Only used in ADC3 */
  143. #define ADC_EXTERNAL_TRIG_INSERTCONV_T5_TRGO ((uint32_t)0x00005000) /*!< Only used in ADC3 */
  144. #define ADC_EXTERNAL_TRIG_INSERTCONV_T5_CC4 ((uint32_t)0x00006000) /*!< Only used in ADC3 */
  145. /**
  146. * @}
  147. */
  148. /** @defgroup ADC_inserted_channel_selection
  149. * @{
  150. */
  151. #define ADC_INSERTEDCHANNEL_1 ((uint8_t)0x14)
  152. #define ADC_INSERTEDCHANNEL_2 ((uint8_t)0x18)
  153. #define ADC_INSERTEDCHANNEL_3 ((uint8_t)0x1C)
  154. #define ADC_INSERTEDCHANNEL_4 ((uint8_t)0x20)
  155. /**
  156. * @}
  157. */
  158. /** @defgroup ADC_analog_watchdog_selection
  159. * @{
  160. */
  161. #define ADC_ANALOGWATCHDOG_SINGLEREGENABLE ((uint32_t)0x00800200)
  162. #define ADC_ANALOGWATCHDOG_SINGLEINSERTENABLE ((uint32_t)0x00400200)
  163. #define ADC_ANALOGWATCHDOG_SINGLEREGORINSERTENABLE ((uint32_t)0x00C00200)
  164. #define ADC_ANALOGWATCHDOG_ALLREGENABLE ((uint32_t)0x00800000)
  165. #define ADC_ANALOGWATCHDOG_ALLINSERTENABLE ((uint32_t)0x00400000)
  166. #define ADC_ANALOGWATCHDOG_ALLREGALLINSERTENABLE ((uint32_t)0x00C00000)
  167. #define ADC_ANALOGWATCHDOG_NONE ((uint32_t)0x00000000)
  168. /**
  169. * @}
  170. */
  171. /** @defgroup ADC_interrupts_definition
  172. * @{
  173. */
  174. #define ADC_INT_EOC ((uint16_t)0x0220)
  175. #define ADC_INT_AWE ((uint16_t)0x0140)
  176. #define ADC_INT_EOIC ((uint16_t)0x0480)
  177. /**
  178. * @}
  179. */
  180. /** @defgroup ADC_flags_definition
  181. * @{
  182. */
  183. #define ADC_FLAG_AWE ((uint8_t)0x01)
  184. #define ADC_FLAG_EOC ((uint8_t)0x02)
  185. #define ADC_FLAG_EOIC ((uint8_t)0x04)
  186. #define ADC_FLAG_STIC ((uint8_t)0x08)
  187. #define ADC_FLAG_STRC ((uint8_t)0x10)
  188. /**
  189. * @}
  190. */
  191. /**
  192. * @}
  193. */
  194. /** @defgroup ADC_Exported_Functions
  195. * @{
  196. */
  197. void ADC_DeInit(ADC_TypeDef *ADCx, ADC_InitPara *ADC_InitParaStruct);
  198. void ADC_Init(ADC_TypeDef *ADCx, ADC_InitPara *ADC_InitParaStruct);
  199. void ADC_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  200. void ADC_DMA_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  201. void ADC_INTConfig(ADC_TypeDef *ADCx, uint16_t ADC_INT, TypeState NewValue);
  202. void ADC_Calibration(ADC_TypeDef *ADCx);
  203. void ADC_SoftwareStartConv_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  204. TypeState ADC_GetSoftwareStartConvBitState(ADC_TypeDef *ADCx);
  205. void ADC_DiscModeChannelCount_Config(ADC_TypeDef *ADCx, uint8_t Number);
  206. void ADC_DiscMode_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  207. void ADC_RegularChannel_Config(ADC_TypeDef *ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
  208. void ADC_ExternalTrigConv_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  209. uint16_t ADC_GetConversionValue(ADC_TypeDef *ADCx);
  210. uint32_t ADC_GetDualModeConversionValue(void);
  211. void ADC_AutoInsertedConv_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  212. void ADC_InsertedDiscMode_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  213. void ADC_ExternalTrigInsertedConv_Config(ADC_TypeDef *ADCx, uint32_t ADC_ExternalTrigInsertConv);
  214. void ADC_ExternalTrigInsertedConv_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  215. void ADC_SoftwareStartInsertedConv_Enable(ADC_TypeDef *ADCx, TypeState NewValue);
  216. TypeState ADC_GetSoftwareStartInsertedConvCmdBitState(ADC_TypeDef *ADCx);
  217. void ADC_InsertedChannel_Config(ADC_TypeDef *ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
  218. void ADC_InsertedSequencerLength_Config(ADC_TypeDef *ADCx, uint8_t Length);
  219. void ADC_SetInsertedOffset(ADC_TypeDef *ADCx, uint8_t ADC_InsertedChannel, uint16_t Offset);
  220. uint16_t ADC_GetInsertedConversionValue(ADC_TypeDef *ADCx, uint8_t ADC_InsertedChannel);
  221. void ADC_AnalogWatchdog_Enable(ADC_TypeDef *ADCx, uint32_t ADC_AnalogWatchdog);
  222. void ADC_AnalogWatchdogThresholds_Config(ADC_TypeDef *ADCx, uint16_t HighThreshold, uint16_t LowThreshold);
  223. void ADC_AnalogWatchdogSingleChannel_Config(ADC_TypeDef *ADCx, uint8_t ADC_Channel);
  224. void ADC_TempSensorVrefint_Enable(TypeState NewValue);
  225. TypeState ADC_GetBitState(ADC_TypeDef *ADCx, uint8_t ADC_FLAG);
  226. void ADC_ClearBitState(ADC_TypeDef *ADCx, uint8_t ADC_FLAG);
  227. TypeState ADC_GetIntState(ADC_TypeDef *ADCx, uint16_t ADC_INT);
  228. void ADC_ClearIntBitState(ADC_TypeDef *ADCx, uint16_t ADC_INT);
  229. /**
  230. * @}
  231. */
  232. /**
  233. * @}
  234. */
  235. /**
  236. * @}
  237. */
  238. #ifdef __cplusplus
  239. }
  240. #endif
  241. #endif /*__GD32F10X_ADC_H */