最近做ADC采样,通过DMA将数据从ADC1的储存器传到自己定义的数组里面,结果传输结果打印出来一直显示为0,求大神指导一下 |
ADC转换后的数据是定点数,你用一个float的数组来缓存数据,而float的数据是32位,DMA的设置字长是halfword,这怎么能传过去呢?没见过之间把adc传到浮点数这样做,你是否先把get_buffer改成uint16先试试看。
三楼说的很有可能,数值类型换成整形看下~
ST官方有例程可以参考: ADC_RegularConversion_DMA.rar (5.99 MB, 下载次数: 21) 2021-7-15 10:00 上传 点击文件名下载附件 下载积分: ST金币 -1
建议你分两步来检查。第一步检查确认DMA传输,即从ADC结果到内存数组这个过程有无问题。如有问题,重点检查DMA相关配置。若没问题,则进入第二步,即检查打印输出这块,检查相关代码及外部配合的软硬件工具。
ADC转换后的数据是定点数,你用一个float的数组来缓存数据,而float的数据是32位,DMA的设置字长是halfword ...
问题解决了,确实数组设置为float,显示不出来,另外上边ADC和dma中的一些初始化设置顺序也有点问题