STM32搬运ADC转换后的次数,只搬运一半次数的原因
Cube生成工程后直接用库函数进行启动ADC_DMA功能
uint32_t dma_value[20]={0};
HAL_ADC_Start_DMA(&hadc1,dma_value,20);注意此处设置的传输数量为20,即搬运20次ADC转换后的值
由于我用的是STM32F103芯片,ADC精度采用12bit,但函数HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)
中接受转换完的数据类型需为32位,所以我错误的定义了一个32位的变量dma_value[20];结果就是库函数自动把我的每个32位变量塞满了。
结果0xFFF&dma_value[0]
就会丢失一半的数据,也就是0x00000FFF把高16位的有效数据给浪费了。。。
正确代码
uint**16**_t dma_value[20]={0};
HAL_ADC_Start_DMA(&hadc1,**(uint32_t *)**dma_value,20);