Cube配置
代码
uint16_t AD_Value[20];
//main.c文件
HAL_ADC_Start_DMA(&hadc1,(uint32_t *)AD_Value,20);
上面配置如果是word,则更改一下定义就好了,cube生成的代码会随着变:
uint32_t AD_Value[20];
//main.c文件
HAL_ADC_Start_DMA(&hadc1,(uint32_t *)AD_Value,20);
分析一下函数原型
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
有网友就简单看到原型是uint32_t就认为必须是32位了,其实ad只有12位,数据定义成16位才是物尽其用。产生这个试验想法是基于std库用过一次就是16位的,另外uint16_t AD_Value[20]也可以换成二维数组uint16_t AD_Value[10][2],二者本质没什么区别,好处是通道更多了就只需要改变第二个下标就行了,再其他地方处理AD数据的时候也很方便。
采样的数据: