|
- /*****************头文件*************************/
- #include "fsl_common.h"
- #include "fsl_port.h"
- #include "fsl_gpio.h"
- #include "adc_Interrupt.h"
- #include "fsl_adc16.h"
-
- uint32_t g_Adc12ConversionValue = 0; //ADC寄存器数值
- uint32_t g_Adc12_Value = 0; //返回转换后的电压值,数值为0-3040
- uint32_t g_Adc12Count = 0;
-
- /*****************ADC初始化*************************
- * adc16ConfigStruct.referenceVoltageSource = kADC16_ReferenceVoltageSourceVref; //选择VREFL为参考电压
- * adc16ConfigStruct.clockSource = kADC16_ClockSourceAsynchronousClock;
- * adc16ConfigStruct.enableAsynchronousClock = true;
- * adc16ConfigStruct.clockDivider = kADC16_ClockDivider8;
- * adc16ConfigStruct.resolution = kADC16_ResolutionSE12Bit; //分辨率为12位,最大值4096
- * adc16ConfigStruct.longSampleMode = kADC16_LongSampleDisabled;
- * adc16ConfigStruct.enableHighSpeed = false;
- * adc16ConfigStruct.enableLowPower = false;
- * adc16ConfigStruct.enableContinuousConversion = false;
- *******************************************************/
- void ADC12_InterrputInit() //ADC初始化
- {
- /*ADC分辨率选择12位,最大值4096*/
- /*参考电压选择VREFL,连接VDDA(3.3V)*/
- adc16_config_t adc16ConfigStruct;
- adc16_channel_config_t adc16ChannelConfigStruct;
- EnableIRQ(ADC0_IRQn);
- ADC16_GetDefaultConfig(&adc16ConfigStruct);
- adc16ConfigStruct.enableContinuousConversion = true; //开启连续转换
- ADC16_Init(ADC0, &adc16ConfigStruct);
- ADC16_EnableHardwareTrigger(ADC0, false); //ADC软件触发
- adc16ChannelConfigStruct.channelNumber = 5u; //选择通道5
- adc16ChannelConfigStruct.enableInterruptOnConversionCompleted = true; //使能ADC中断触发标志
- ADC16_SetChannelConfig(ADC0, 0u, &adc16ChannelConfigStruct);
- }
-
- uint32_t adc_ReturnValue()
- {
- g_Adc12_Value = g_Adc12ConversionValue * 3040/ g_Adc12_12bitFullRange;
- return g_Adc12_Value; //电压值放大1000倍
- }
-
- void ADC0_IRQHandler(void)
- {
- g_Adc12ConversionValue = ADC16_GetChannelConversionValue(ADC0, 0u); //读取ADC寄存器数值
- g_Adc12Count++;
- g_Adc12Count %= 1000;
- SDK_ISR_EXIT_BARRIER; //清除中断标志位
- }
|