有人使用STM32U5系列MCU开发产品,在用到ADC结合DMA传输时遇到点障碍,这里针对片内ADC1和ADC4基于DMA标准请求模式和链表模式演示下实现过程,以供参考。
先对ADC1基于DMA标准请求模式做演示。
随意选择ADC1的4个通道,扫描模式,连续转换,DMA传输转换结果并令DMA工作在外设字到内存字的循环传输模式。使用CubeMx进行配置。其中DMA通道使用Channel 1。
相关代码:
#define ADC_BUFFRER_SIZE ((uint32_t) 8)
uint32_t ADC1_Result[ADC_BUFFRER_SIZE];
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef handle_GPDMA1_Channel1; //For ADC1
/* USER CODE BEGIN 2 */
HAL_PWREx_EnableVddA(); //add it manually with lower cubeMx version
__HAL_LINKDMA(&hadc1, DMA_Handle, handle_GPDMA1_Channel1);
if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC1_Result,
(ADC_BUFFRER_SIZE)
) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END 2 */
运行结果如下图所示:【目前4个通道我是悬空的】
全部0条评论
快来发表一下你的评论吧 !