1.ADC设置
hadc.Instance = ADC1;
hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc.Init.Resolu
tion = ADC_RESOLUTION_12B;
hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc.Init.LowPowerAutoWait = 禁用;
hadc.Init.LowPowerAutoPowerOff = 禁用;
hadc.Init.ContinuousConvMode = ENABLE;
hadc.Init.DiscontinuousConvMode = 禁用;
hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc.Init.DMAContinuousRequests = ENABLE;
hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
如果(HAL_ADC_Init(&hadc)!= HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_4;
sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_5;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_6;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_7;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_8;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
的
/** 配置要转换的选定 ADC 常规通道。
*/
sConfig.Channel = ADC_CHANNEL_9;
如果 (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
错误处理程序();
}
//////////////////////////////////////////////// /////////////////////////////////////
2.DMA设置
hdma_adc.Instance = DMA1_Channel1;
hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_adc.Init.MemInc = DMA_MINC_ENABLE;
hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_adc.Init.Mode = DMA_CIRCULAR;
hdma_adc.Init.Priority = DMA_PRIORITY_VERY_HIGH;
如果(HAL_DMA_Init(&hdma_adc)!= HAL_OK)
{
错误处理程序();
}
的
3. DMA 启动
无符号短 Test_adc[6];
HAL_ADC_Start_DMA(&hadc,(uint32_t *)Test_adc,6);
在 Cube IDE 中配置的 ADC DMA 的测试结果
只有第一个值被采样和输入。
请告诉我应该更正哪些内容才能正确转换。