stm32f10x_adc.h
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:18k
源码类别:

uCOS

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : stm32f10x_adc.h
  3. * Author             : MCD Application Team
  4. * Version            : V2.0.2
  5. * Date               : 07/11/2008
  6. * Description        : This file contains all the functions prototypes for the
  7. *                      ADC firmware library.
  8. ********************************************************************************
  9. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  10. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  11. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  12. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  13. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  14. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  15. *******************************************************************************/
  16. /* Define to prevent recursive inclusion -------------------------------------*/
  17. #ifndef __STM32F10x_ADC_H
  18. #define __STM32F10x_ADC_H
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "stm32f10x_map.h"
  21. /* Exported types ------------------------------------------------------------*/
  22. /* ADC Init structure definition */
  23. typedef struct
  24. {
  25.   u32 ADC_Mode;
  26.   FunctionalState ADC_ScanConvMode; 
  27.   FunctionalState ADC_ContinuousConvMode;
  28.   u32 ADC_ExternalTrigConv;
  29.   u32 ADC_DataAlign;
  30.   u8 ADC_NbrOfChannel;
  31. }ADC_InitTypeDef;
  32. /* Exported constants --------------------------------------------------------*/
  33. #define IS_ADC_ALL_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == ADC1_BASE) || 
  34.                                    ((*(u32*)&(PERIPH)) == ADC2_BASE) || 
  35.                                    ((*(u32*)&(PERIPH)) == ADC3_BASE))
  36.                                  
  37. #define IS_ADC_DMA_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == ADC1_BASE) || 
  38.                                    ((*(u32*)&(PERIPH)) == ADC3_BASE))
  39. /* ADC dual mode -------------------------------------------------------------*/
  40. #define ADC_Mode_Independent                       ((u32)0x00000000)
  41. #define ADC_Mode_RegInjecSimult                    ((u32)0x00010000)
  42. #define ADC_Mode_RegSimult_AlterTrig               ((u32)0x00020000)
  43. #define ADC_Mode_InjecSimult_FastInterl            ((u32)0x00030000)
  44. #define ADC_Mode_InjecSimult_SlowInterl            ((u32)0x00040000)
  45. #define ADC_Mode_InjecSimult                       ((u32)0x00050000)
  46. #define ADC_Mode_RegSimult                         ((u32)0x00060000)
  47. #define ADC_Mode_FastInterl                        ((u32)0x00070000)
  48. #define ADC_Mode_SlowInterl                        ((u32)0x00080000)
  49. #define ADC_Mode_AlterTrig                         ((u32)0x00090000)
  50. #define IS_ADC_MODE(MODE) (((MODE) == ADC_Mode_Independent) || 
  51.                            ((MODE) == ADC_Mode_RegInjecSimult) || 
  52.                            ((MODE) == ADC_Mode_RegSimult_AlterTrig) || 
  53.                            ((MODE) == ADC_Mode_InjecSimult_FastInterl) || 
  54.                            ((MODE) == ADC_Mode_InjecSimult_SlowInterl) || 
  55.                            ((MODE) == ADC_Mode_InjecSimult) || 
  56.                            ((MODE) == ADC_Mode_RegSimult) || 
  57.                            ((MODE) == ADC_Mode_FastInterl) || 
  58.                            ((MODE) == ADC_Mode_SlowInterl) || 
  59.                            ((MODE) == ADC_Mode_AlterTrig))
  60. /* ADC extrenal trigger sources for regular channels conversion --------------*/
  61. /* for ADC1 and ADC2 */
  62. #define ADC_ExternalTrigConv_T1_CC1                ((u32)0x00000000)
  63. #define ADC_ExternalTrigConv_T1_CC2                ((u32)0x00020000)
  64. #define ADC_ExternalTrigConv_T2_CC2                ((u32)0x00060000)
  65. #define ADC_ExternalTrigConv_T3_TRGO               ((u32)0x00080000)
  66. #define ADC_ExternalTrigConv_T4_CC4                ((u32)0x000A0000)
  67. #define ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO    ((u32)0x000C0000)
  68. /* for ADC1, ADC2 and ADC3 */
  69. #define ADC_ExternalTrigConv_T1_CC3                ((u32)0x00040000)
  70. #define ADC_ExternalTrigConv_None                  ((u32)0x000E0000)
  71. /* for ADC3 */
  72. #define ADC_ExternalTrigConv_T3_CC1                ((u32)0x00000000)
  73. #define ADC_ExternalTrigConv_T2_CC3                ((u32)0x00020000)
  74. #define ADC_ExternalTrigConv_T8_CC1                ((u32)0x00060000)
  75. #define ADC_ExternalTrigConv_T8_TRGO               ((u32)0x00080000)
  76. #define ADC_ExternalTrigConv_T5_CC1                ((u32)0x000A0000)
  77. #define ADC_ExternalTrigConv_T5_CC3                ((u32)0x000C0000)
  78. #define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_ExternalTrigConv_T1_CC1) || 
  79.                                   ((REGTRIG) == ADC_ExternalTrigConv_T1_CC2) || 
  80.                                   ((REGTRIG) == ADC_ExternalTrigConv_T1_CC3) || 
  81.                                   ((REGTRIG) == ADC_ExternalTrigConv_T2_CC2) || 
  82.                                   ((REGTRIG) == ADC_ExternalTrigConv_T3_TRGO) || 
  83.                                   ((REGTRIG) == ADC_ExternalTrigConv_T4_CC4) || 
  84.                                   ((REGTRIG) == ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO) || 
  85.                                   ((REGTRIG) == ADC_ExternalTrigConv_None) || 
  86.                                   ((REGTRIG) == ADC_ExternalTrigConv_T3_CC1) || 
  87.                                   ((REGTRIG) == ADC_ExternalTrigConv_T2_CC3) || 
  88.                                   ((REGTRIG) == ADC_ExternalTrigConv_T8_CC1) || 
  89.                                   ((REGTRIG) == ADC_ExternalTrigConv_T8_TRGO) || 
  90.                                   ((REGTRIG) == ADC_ExternalTrigConv_T5_CC1) || 
  91.                                   ((REGTRIG) == ADC_ExternalTrigConv_T5_CC3))
  92. /* ADC data align ------------------------------------------------------------*/
  93. #define ADC_DataAlign_Right                        ((u32)0x00000000)
  94. #define ADC_DataAlign_Left                         ((u32)0x00000800)
  95. #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DataAlign_Right) || 
  96.                                   ((ALIGN) == ADC_DataAlign_Left))
  97. /* ADC channels --------------------------------------------------------------*/
  98. #define ADC_Channel_0                               ((u8)0x00)
  99. #define ADC_Channel_1                               ((u8)0x01)
  100. #define ADC_Channel_2                               ((u8)0x02)
  101. #define ADC_Channel_3                               ((u8)0x03)
  102. #define ADC_Channel_4                               ((u8)0x04)
  103. #define ADC_Channel_5                               ((u8)0x05)
  104. #define ADC_Channel_6                               ((u8)0x06)
  105. #define ADC_Channel_7                               ((u8)0x07)
  106. #define ADC_Channel_8                               ((u8)0x08)
  107. #define ADC_Channel_9                               ((u8)0x09)
  108. #define ADC_Channel_10                              ((u8)0x0A)
  109. #define ADC_Channel_11                              ((u8)0x0B)
  110. #define ADC_Channel_12                              ((u8)0x0C)
  111. #define ADC_Channel_13                              ((u8)0x0D)
  112. #define ADC_Channel_14                              ((u8)0x0E)
  113. #define ADC_Channel_15                              ((u8)0x0F)
  114. #define ADC_Channel_16                              ((u8)0x10)
  115. #define ADC_Channel_17                              ((u8)0x11)
  116. #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_Channel_0) || ((CHANNEL) == ADC_Channel_1) || 
  117.                                  ((CHANNEL) == ADC_Channel_2) || ((CHANNEL) == ADC_Channel_3) || 
  118.                                  ((CHANNEL) == ADC_Channel_4) || ((CHANNEL) == ADC_Channel_5) || 
  119.                                  ((CHANNEL) == ADC_Channel_6) || ((CHANNEL) == ADC_Channel_7) || 
  120.                                  ((CHANNEL) == ADC_Channel_8) || ((CHANNEL) == ADC_Channel_9) || 
  121.                                  ((CHANNEL) == ADC_Channel_10) || ((CHANNEL) == ADC_Channel_11) || 
  122.                                  ((CHANNEL) == ADC_Channel_12) || ((CHANNEL) == ADC_Channel_13) || 
  123.                                  ((CHANNEL) == ADC_Channel_14) || ((CHANNEL) == ADC_Channel_15) || 
  124.                                  ((CHANNEL) == ADC_Channel_16) || ((CHANNEL) == ADC_Channel_17))
  125. /* ADC sampling times --------------------------------------------------------*/
  126. #define ADC_SampleTime_1Cycles5                    ((u8)0x00)
  127. #define ADC_SampleTime_7Cycles5                    ((u8)0x01)
  128. #define ADC_SampleTime_13Cycles5                   ((u8)0x02)
  129. #define ADC_SampleTime_28Cycles5                   ((u8)0x03)
  130. #define ADC_SampleTime_41Cycles5                   ((u8)0x04)
  131. #define ADC_SampleTime_55Cycles5                   ((u8)0x05)
  132. #define ADC_SampleTime_71Cycles5                   ((u8)0x06)
  133. #define ADC_SampleTime_239Cycles5                  ((u8)0x07)
  134. #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SampleTime_1Cycles5) || 
  135.                                   ((TIME) == ADC_SampleTime_7Cycles5) || 
  136.                                   ((TIME) == ADC_SampleTime_13Cycles5) || 
  137.                                   ((TIME) == ADC_SampleTime_28Cycles5) || 
  138.                                   ((TIME) == ADC_SampleTime_41Cycles5) || 
  139.                                   ((TIME) == ADC_SampleTime_55Cycles5) || 
  140.                                   ((TIME) == ADC_SampleTime_71Cycles5) || 
  141.                                   ((TIME) == ADC_SampleTime_239Cycles5))
  142. /* ADC extrenal trigger sources for injected channels conversion -------------*/
  143. /* For ADC1 and ADC2 */
  144. #define ADC_ExternalTrigInjecConv_T2_TRGO           ((u32)0x00002000)
  145. #define ADC_ExternalTrigInjecConv_T2_CC1            ((u32)0x00003000)
  146. #define ADC_ExternalTrigInjecConv_T3_CC4            ((u32)0x00004000)
  147. #define ADC_ExternalTrigInjecConv_T4_TRGO           ((u32)0x00005000)
  148. #define ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4 ((u32)0x00006000)
  149. /* For ADC1, ADC2 and ADC3 */
  150. #define ADC_ExternalTrigInjecConv_T1_TRGO           ((u32)0x00000000)
  151. #define ADC_ExternalTrigInjecConv_T1_CC4            ((u32)0x00001000)
  152. #define ADC_ExternalTrigInjecConv_None              ((u32)0x00007000)
  153. /* For ADC3 */
  154. #define ADC_ExternalTrigInjecConv_T4_CC3            ((u32)0x00002000)
  155. #define ADC_ExternalTrigInjecConv_T8_CC2            ((u32)0x00003000)
  156. #define ADC_ExternalTrigInjecConv_T8_CC4            ((u32)0x00004000)
  157. #define ADC_ExternalTrigInjecConv_T5_TRGO           ((u32)0x00005000)
  158. #define ADC_ExternalTrigInjecConv_T5_CC4            ((u32)0x00006000)
  159. #define IS_ADC_EXT_INJEC_TRIG(INJTRIG) (((INJTRIG) == ADC_ExternalTrigInjecConv_T1_TRGO) || 
  160.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T1_CC4) || 
  161.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_TRGO) || 
  162.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_CC1) || 
  163.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T3_CC4) || 
  164.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_TRGO) || 
  165.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4) || 
  166.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_None) || 
  167.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_CC3) || 
  168.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T8_CC2) || 
  169.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T8_CC4) || 
  170.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T5_TRGO) || 
  171.                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T5_CC4))
  172. /* ADC injected channel selection --------------------------------------------*/
  173. #define ADC_InjectedChannel_1                       ((u8)0x14)
  174. #define ADC_InjectedChannel_2                       ((u8)0x18)
  175. #define ADC_InjectedChannel_3                       ((u8)0x1C)
  176. #define ADC_InjectedChannel_4                       ((u8)0x20)
  177. #define IS_ADC_INJECTED_CHANNEL(CHANNEL) (((CHANNEL) == ADC_InjectedChannel_1) || 
  178.                                           ((CHANNEL) == ADC_InjectedChannel_2) || 
  179.                                           ((CHANNEL) == ADC_InjectedChannel_3) || 
  180.                                           ((CHANNEL) == ADC_InjectedChannel_4))
  181. /* ADC analog watchdog selection ---------------------------------------------*/
  182. #define ADC_AnalogWatchdog_SingleRegEnable         ((u32)0x00800200)
  183. #define ADC_AnalogWatchdog_SingleInjecEnable       ((u32)0x00400200)
  184. #define ADC_AnalogWatchdog_SingleRegOrInjecEnable  ((u32)0x00C00200)
  185. #define ADC_AnalogWatchdog_AllRegEnable            ((u32)0x00800000)
  186. #define ADC_AnalogWatchdog_AllInjecEnable          ((u32)0x00400000)
  187. #define ADC_AnalogWatchdog_AllRegAllInjecEnable    ((u32)0x00C00000)
  188. #define ADC_AnalogWatchdog_None                    ((u32)0x00000000)
  189. #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_AnalogWatchdog_SingleRegEnable) || 
  190.                                           ((WATCHDOG) == ADC_AnalogWatchdog_SingleInjecEnable) || 
  191.                                           ((WATCHDOG) == ADC_AnalogWatchdog_SingleRegOrInjecEnable) || 
  192.                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllRegEnable) || 
  193.                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllInjecEnable) || 
  194.                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllRegAllInjecEnable) || 
  195.                                           ((WATCHDOG) == ADC_AnalogWatchdog_None))
  196. /* ADC interrupts definition -------------------------------------------------*/
  197. #define ADC_IT_EOC                                 ((u16)0x0220)
  198. #define ADC_IT_AWD                                 ((u16)0x0140)
  199. #define ADC_IT_JEOC                                ((u16)0x0480)
  200. #define IS_ADC_IT(IT) ((((IT) & (u16)0xF81F) == 0x00) && ((IT) != 0x00))
  201. #define IS_ADC_GET_IT(IT) (((IT) == ADC_IT_EOC) || ((IT) == ADC_IT_AWD) || 
  202.                            ((IT) == ADC_IT_JEOC))
  203. /* ADC flags definition ------------------------------------------------------*/
  204. #define ADC_FLAG_AWD                               ((u8)0x01)
  205. #define ADC_FLAG_EOC                               ((u8)0x02)
  206. #define ADC_FLAG_JEOC                              ((u8)0x04)
  207. #define ADC_FLAG_JSTRT                             ((u8)0x08)
  208. #define ADC_FLAG_STRT                              ((u8)0x10)
  209. #define IS_ADC_CLEAR_FLAG(FLAG) ((((FLAG) & (u8)0xE0) == 0x00) && ((FLAG) != 0x00))
  210. #define IS_ADC_GET_FLAG(FLAG) (((FLAG) == ADC_FLAG_AWD) || ((FLAG) == ADC_FLAG_EOC) || 
  211.                                ((FLAG) == ADC_FLAG_JEOC) || ((FLAG)== ADC_FLAG_JSTRT) || 
  212.                                ((FLAG) == ADC_FLAG_STRT))
  213. /* ADC thresholds ------------------------------------------------------------*/
  214. #define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFF)
  215. /* ADC injected offset -------------------------------------------------------*/
  216. #define IS_ADC_OFFSET(OFFSET) ((OFFSET) <= 0xFFF)
  217. /* ADC injected length -------------------------------------------------------*/
  218. #define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x4))
  219. /* ADC injected rank ---------------------------------------------------------*/
  220. #define IS_ADC_INJECTED_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x4))
  221. /* ADC regular length --------------------------------------------------------*/
  222. #define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x10))
  223. /* ADC regular rank ----------------------------------------------------------*/
  224. #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x10))
  225. /* ADC regular discontinuous mode number -------------------------------------*/
  226. #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 0x1) && ((NUMBER) <= 0x8))
  227. /* Exported macro ------------------------------------------------------------*/
  228. /* Exported functions ------------------------------------------------------- */
  229. void ADC_DeInit(ADC_TypeDef* ADCx);
  230. void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
  231. void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
  232. void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  233. void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  234. void ADC_ITConfig(ADC_TypeDef* ADCx, u16 ADC_IT, FunctionalState NewState);
  235. void ADC_ResetCalibration(ADC_TypeDef* ADCx);
  236. FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
  237. void ADC_StartCalibration(ADC_TypeDef* ADCx);
  238. FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
  239. void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  240. FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);
  241. void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, u8 Number);
  242. void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  243. void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime);
  244. void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  245. u16 ADC_GetConversionValue(ADC_TypeDef* ADCx);
  246. u32 ADC_GetDualModeConversionValue(void);
  247. void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  248. void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  249. void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, u32 ADC_ExternalTrigInjecConv);
  250. void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  251. void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  252. FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
  253. void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime);
  254. void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, u8 Length);
  255. void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, u8 ADC_InjectedChannel, u16 Offset);
  256. u16 ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, u8 ADC_InjectedChannel);
  257. void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, u32 ADC_AnalogWatchdog);
  258. void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, u16 HighThreshold, u16 LowThreshold);
  259. void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel);
  260. void ADC_TempSensorVrefintCmd(FunctionalState NewState);
  261. FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, u8 ADC_FLAG);
  262. void ADC_ClearFlag(ADC_TypeDef* ADCx, u8 ADC_FLAG);
  263. ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, u16 ADC_IT);
  264. void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, u16 ADC_IT);
  265. #endif /*__STM32F10x_ADC_H */
  266. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/