STM32F103C8T6技巧——ADC与DMA组合种类

一、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来转换数据,数据自动保存在变量或者数组中
//硬件自动完成转换,不需要函数获取数值

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值