L0库通过HAL_ADC_Start_DMA()函数启动DMA模式的ADC。问题就出在该函数的最后一个参数Length上——它到底对应的是以字节计算的数据量,还是传输次数。如果ADC的精度是12位,以字节计算的数据量将是传输次数的两倍。
下面是该库函数的说明和定义。
说明中清晰地指出,最后一个参数是以字节为单位的,而不是以ADC传输次数为单位的。该Length长度参数辗转对应的是DMA_CNDTRx寄存器。
然而STM32L0x1参考手册(Rev 6)的描述中却说到,DMA_CNDTRx对应的是传输的次数,也就是说ADC传输的数据量应该是Length×2字节
但是,在同一个参考手册的DMA_CNDTRx寄存器说明中又出现了大逆转,说里面的数据是以字节为单位
我开始迷糊了,这到底以什么为单位? @香水城
|