ADC----DMA方式采集电压

本文介绍了DMA在微控制器中的作用,它能减轻CPU负担,实现存储器和外设间的直接数据传输。以ADC为例,对比了基于CPU中断和DMA进行数据转换的区别。在DMA方式下,ADC转换后的值无需通过CPU,直接存储到指定变量,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DMA介绍篇

1、DMA(存储器直接存取)  

2、功能:为CPU分担相当大一部分的”数据搬运”!!!解放CPU资源(CPU去负责更深的运算)  

插入: 微控制器由CPU,存储器,外设三部分构成,各部分之间的协调与交互由CPU完成  (大脑,脚与手的关系)   (CPU每次都是从A外设拿到一个数据送到B外设使用,中间通过一个”桥”)        而 DMA可实现存储器和存储器之间,外设和存储器之间,存储器和外设之间的传输(跳过CPU)!!!

3、我们来看一下CPU 与DMA在搬运数据上的不同吧!

 

(1)  基于CPU的单通道中断方式转换数据

extern __IO uint16_t ADC_ConvertedValue;     //这里DMA方式 与CPU中断方式都引用一个外部变量(分析代码便可得出不同)

void ADC_IRQHandler(void)                   //ADC转换完成后会进入中断服务函数,(在中断函数内,通过CPU的“搬运”,对ADC转换后的值进行存储与转送)如下显示:
{
if (ADC_GetITStatus(ADCx,ADC_IT_EOC)==SET)
{
// 读取ADC的转换值
ADC_ConvertedValue = ADC_GetConversionValue(ADCx);   // 获取ADC转换结果值的库函数(CPU读出ADC转换后的12数值先存储在ADC数据寄存器,然后CPU通过库函数提取到CPU寄存器里,然后再转附送到ADC_ConvertedValue地址的变量里 。            &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值