STM32L476RC ADC-DMA输出值后128个数据都为0

2019-07-14 13:38发布

在做ADC-DMA转电压值时,输出值存储在uhADCxConvertedValue中,长度为256,但是打印出来的值每个通道的前128个有数值,但是后128个数据都为0,很奇怪,不知道为什么?

#define NB  256 //每个通道长度为256
#define CHN  2  //两个通道
#define ADCNB NB*CHN

u16 uhADCxConvertedValue[NB][CHN];

HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&uhADCxConvertedValue, ADCNB);

for(int a=0;a<NB;a++){
  printf("uhADCxConvertedValue[%d][0]= %d ",a,uhADCxConvertedValue[a][0]);  //通道1的数据
  printf("uhADCxConvertedValue[%d][1]= %d ",a,uhADCxConvertedValue[a][1]); //通道2的数据
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
huazhe
1楼-- · 2019-07-14 18:59
 精彩回答 2  元偷偷看……
linlin10
2楼-- · 2019-07-14 21:47
zhouxk 发表于 2019-3-15 08:06
不知道你在什么时候读取数据的,不知道跟DMA进两次中断有没有关系。

“从程序看,DMA会进两次中断,第一次是一半传输完,第二次是全部传输完”这句话怎么理解,怎么看出会两次中断还要读两次才完整?
tianyou15
3楼-- · 2019-07-14 23:57
u16 uhADCxConvertedValue[NB][CHN];  这个改成 u32 uhADCxConvertedValue[NB][CHN]; 就可以了
zhouxk
4楼-- · 2019-07-15 03:20
linlin10 发表于 2019-3-15 08:32
“从程序看,DMA会进两次中断,第一次是一半传输完,第二次是全部传输完”这句话怎么理解,怎么看出会两次中断还要读两次才完整?

linlin10
5楼-- · 2019-07-15 05:21
zhouxk 发表于 2019-3-15 09:03

哦,大概清楚了,谢谢
liujinyi016
6楼-- · 2019-07-15 10:59
 精彩回答 2  元偷偷看……

一周热门 更多>