;// ADC开始校准while(ADC_GetCalibrationStatus(ADC1));// 等待校准完成ADC_SoftwareStartConvCmd(ADC1,ENABLE);// 软件触发ADC转换} 相关的分析都在程序注释里了,很容易读懂。这里只说明一个关键点。ADC_RegularChannelConfig()函数用来配置ADC的转换顺序和采样时间等,关于采样时间的周期选择,周期越长,采样精度越...
bsp_adc.c #include"bsp_adc.h"uint16_tadc_test_raw_data=0;//adc测试输出原始结果(平均值)floatadc_test_voltage=0.0;//adc测试输出电压值(平均值)voidTest_Adc_Init(void){//设置模拟输入IOrcu_periph_clock_enable(TEST_ADC_GPIO_PERCLK);gpio_mode_set(TEST_ADC_GPIO_PORT,GPIO_MODE_ANALOG,GPIO_...
ENABLE);// ADC 模式配置// 只使用一个ADC,属于独立模式ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;// 禁止扫描模式,多通道才要,单通道不需要ADC_InitStructure.ADC_ScanConvMode=DISABLE;// 连续转换模式ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;// 不用外部触发转换,软件开启...
adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE); (2)开启 AD 转换器 在设置完了以上信息后,我们就开启 AD 转换器了 /* enable ADC interface */ adc_enable(ADC0); delay_1ms(1);//延迟 等待稳定 /* ADC calibration and reset calibration */ adc_calibration_enable(ADC0);//使能 ...
adc_enable(ADC0); 1. 执行ADC 校准的方法是: adc_calibration_enable(ADC0); 1. ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。
adc_calibration = adc_original * (1.20f / voltage_vrefint_proportion); 1. 2. 3. 程序 uint16_t ADC_ConvertedValue[6] = {0}; HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&ADC_ConvertedValue, 6); 1. 2. 即可开启DMA传输。 ADC的DMA中断函数为DMA2_Stream0_IRQHandler。可以直接在DMA中断函数...
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);// 转换结束中断ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1);// 初始化ADC校准寄存器while(ADC_GetResetCalibrationStatus(ADC1));// 等待校准寄存器初始化完成ADC_StartCalibration(ADC1);// ADC开始校准while(ADC_GetCalibrationStatus(ADC1));// 等待校准...
adc_dma_request_after_last_enable(ADC->adc_port); adc_dma_mode_enable(ADC->adc_port); } /*ADC的使能和自校准,ADC使能后需要经过一定的ADC_CLK后才能校准,本示例中直接使用1ms延时*/ adc_enable(ADC->adc_port); delay_ms(1); /* ADC calibration mode config */ ...
ADC_Cmd(ADC1,ENABLE); /*Reset the ADC1 Calibration register ***/ ADC_ResetCalibration(ADC1); /*Get the reset calibration status until succeed ***/ while (ADC_GetResetCalibrationStatus(ADC1)); /*Start the specific ADC calibration
LL_ADC_EnableInternalRegulator(ADC1); LL_ADC_ClearFlag_JEOC(ADC1); LL_ADC_EnableIT_JEOC(ADC1); LL_ADC_StartCalibration(ADC1, LL_ADC_SINGLE_ENDED); while (1U == LL_ADC_IsCalibrationOnGoing(ADC1)) {/* Nothing to do */ }