野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12231|回复: 5

关于ADC的DMA的循环模式和常规模式的问题

[复制链接]
发表于 2017-11-28 22:12:48 | 显示全部楼层 |阅读模式
在火哥ADC双重规则同步DMA的基础上进行了改编,加入了DAC产生正弦波的功能,然后改了一下存储数据的功能:
我在main.c文件里面定义了一个extern __IO uint16_t ADC_ConvertedValue[1024];
然后利用双重规则模式ADC采样
在DMA模式下设置了        DMA_InitStructure.DMA_BufferSize =1024;       
问题来了
当DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;时,结果 ADC_ConvertedValue数组里面的值能够全部填充上正确的采样值
但是当        DMA_InitStructure.DMA_Mode =DMA_Mode_Normal;时,结果 ADC_ConvertedValue数组里面的值只有前4个是正确的,后面都是大于采样最高电压的值,而且很不规则
请教各位老师,谢谢

回复

使用道具 举报

发表于 2017-11-29 13:53:59 | 显示全部楼层
normal的话只采样几个就停了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-29 19:06:52 | 显示全部楼层
但是我设的DMA_BufferSize =1024啊,按说不应该是采1024个值才对吗
而且我把变量开始都初始化为0了,但是结果不对,但是也不再是零
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-29 19:52:17 | 显示全部楼层
已经自己找出原因
回复 支持 反对

使用道具 举报

发表于 2017-11-29 21:55:39 | 显示全部楼层
ljcllr 发表于 2017-11-29 19:52
已经自己找出原因

什么原因,分享一下撒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-29 22:49:06 | 显示全部楼层
问题就处在extern这个关键词上,我只改了main函数里面的ADC_ConvertedValue[1024]数组大小,这里并不是数组的真正定义,只是一个声明而已,所以并没有真正改变ADC_ConvertedValue数组定义的大小
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 20:07 , Processed in 0.030544 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表