一、ADC——单次转换+非扫描模式
1、初始化流程
{
/*第一步,开启时钟*/
/*第二步,GPIO初始化*/
/*第三步,设置ADC时钟*/
/*第四步,规则组通道配置*/
/*第五步,ADC初始化*/
/*第六步,ADC使能*/
/*第七步,ADC校准*/
}
2、获取值函数流程
{
uint16_t temp;
/*若转换多个模拟信号,初始化时不设置规则组,在此处更换ADC规则组*/
/*若转换一个模拟信号,初始化设置规则组,获取数值时此处省略*/
/* ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); */
/*第一步,软件触发ADC*/
/*第二步,等待转换*/
/*第三步,获取值*/
/*第四步,清除标记位*/
return temp;
}
二、ADC——连续转换+扫描模式
1、初始化流程
{
/*第一步,开启时钟*/
/*第二步,GPIO初始化*/
/*第三步,设置ADC时钟*/
/*第四步,规则组通道配置*/
/*第五步,ADC初始化*/
/*第六步,ADC使能*/
/*第七步,ADC校准*/
/*第八步,软件触发ADC*/
}
2、获取值函数流程
//若只有一个外部模拟信号
{
return ADC_GetConversionValue(ADC1);
}
//若有多个外部模拟信号
{
/*第一步,设置ADC规则组*/
/*第二步,清除标记位*/
/*第三步,等待转换*/
/*第四步,获取值*/
/*第五步,清除标记位*/
return temp;
}
三、ADC单次转换扫描模式+DMA单次转运
1、初始化流程
{
/*第一步,开启时钟*/
/*第二步,GPIO初始化*/
/*第三步,设置ADC时钟*/
/*第四步,规则组通道配置*/
/*第五步,ADC初始化*/
/*第六步,DMA_Init*/
/*第七步,DMA_Cmd*/
/*第八步,ADC_DMACmd*/
/*第九步,ADC_Cmd*/
/*第十步,ADC校准*/
}
2、获取值函数流程
//用ADC+DMA来转换数据,数据自动保存在变量或者数组中
{
/*第一步,DMA_Cmd失能*/
/*第二步,DMA的传输计数器赋值*/
/*第三步,DMA_Cmd使能*/
/*第四步,软件触发ADC*/
/*第五步,等待DMA转换,用DMA标记位来识别是否完成,不管ADC标记位置*/
/*第六步,清除DMA标记位,不管ADC标记位*/
}
四、ADC连续转换扫描模式+DMA连续转运
1、初始化流程
{
/*第一步,开启时钟*/
/*第二步,GPIO初始化*/
/*第三步,设置ADC时钟*/
/*第四步,规则组通道配置*/
/*第五步,ADC初始化*/
/*第六步,DMA_Init*/
/*第七步,DMA_Cmd*/
/*第八步,ADC_DMACmd*/
/*第九步,ADC_Cmd*/
/*第十步,ADC校准*/
/*第十一步,软件触发ADC*/
}
2、获取值函数流程
//用ADC+DMA来转换数据,数据自动保存在变量或者数组中
//硬件自动完成转换,不需要函数获取数值