You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

54 rivejä
2.0 KiB

  1. /*****************头文件*************************/
  2. #include "fsl_common.h"
  3. #include "fsl_port.h"
  4. #include "fsl_gpio.h"
  5. #include "adc_Interrupt.h"
  6. #include "fsl_adc16.h"
  7. uint32_t g_Adc12ConversionValue = 0;
  8. uint32_t g_Adc12Count = 0;
  9. /*****************ADC初始化*************************
  10. * adc16ConfigStruct.referenceVoltageSource = kADC16_ReferenceVoltageSourceVref; //选择VREFL为参考电压
  11. * adc16ConfigStruct.clockSource = kADC16_ClockSourceAsynchronousClock;
  12. * adc16ConfigStruct.enableAsynchronousClock = true;
  13. * adc16ConfigStruct.clockDivider = kADC16_ClockDivider8;
  14. * adc16ConfigStruct.resolution = kADC16_ResolutionSE12Bit; //分辨率为12位,最大值4096
  15. * adc16ConfigStruct.longSampleMode = kADC16_LongSampleDisabled;
  16. * adc16ConfigStruct.enableHighSpeed = false;
  17. * adc16ConfigStruct.enableLowPower = false;
  18. * adc16ConfigStruct.enableContinuousConversion = false;
  19. *******************************************************/
  20. void ADC12_InterrputInit() //ADC初始化
  21. {
  22. /*ADC分辨率选择12位,最大值4096*/
  23. /*参考电压选择VREFL,连接VDDA(3.3V)*/
  24. adc16_config_t adc16ConfigStruct;
  25. adc16_channel_config_t adc16ChannelConfigStruct;
  26. EnableIRQ(ADC0_IRQn);
  27. ADC16_GetDefaultConfig(&adc16ConfigStruct);
  28. adc16ConfigStruct.enableContinuousConversion = true; //开启连续转换
  29. ADC16_Init(ADC0, &adc16ConfigStruct);
  30. ADC16_EnableHardwareTrigger(ADC0, false); //ADC软件触发
  31. adc16ChannelConfigStruct.channelNumber = 2u; //选择通道2
  32. adc16ChannelConfigStruct.enableInterruptOnConversionCompleted = true; //使能ADC中断触发标志
  33. ADC16_SetChannelConfig(ADC0, 0u, &adc16ChannelConfigStruct);
  34. }
  35. uint32_t adc_ReturnValue()
  36. {
  37. return g_Adc12ConversionValue / g_Adc12_12bitFullRange * 3300; //放大1000倍
  38. }
  39. void ADC0_IRQHandler(void)
  40. {
  41. /* Read conversion result to clear the conversion completed flag. */
  42. g_Adc12ConversionValue = ADC16_GetChannelConversionValue(ADC0, 0u);
  43. g_Adc12Count++;
  44. g_Adc12Count %= 1000;
  45. SDK_ISR_EXIT_BARRIER;
  46. }