LL庫實現ADC多通道DMA讀取

首先依舊使用STcubeMX配置一下工程

我這裏使用的是ADC1的多個通道,具體看下面配置圖,比較簡單,因爲我使用了DMA,配置好ADC之後還需要配置一下DMA。

1,ADC配置

2,DMA配置,需要配置通道以及方向,是外設到內存還是內存到內存,以及緩存區數據寬度。

3,配置好以上後,我們還需要手動添加外設地址以及內存地址等

下面看代碼:

	LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_1,NOFCHANEL);
	LL_DMA_SetPeriphAddress(DMA1,LL_DMA_CHANNEL_1,LL_ADC_DMA_GetRegAddr(ADC1,     LL_ADC_DMA_REG_REGULAR_DATA));
	LL_DMA_SetMemoryAddress(DMA1,LL_DMA_CHANNEL_1,(uint32_t)&ADC_ConvertedValue);
	LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_1);
	
	LL_ADC_Enable(ADC1);
	// ADC開始校準
	LL_ADC_StartCalibration(ADC1);
	// 等待校準完成
	while(LL_ADC_IsCalibrationOnGoing(ADC1));
	//設置ADC組通過DMA定期轉換數據傳輸
	LL_ADC_REG_SetDMATransfer(ADC1,LL_ADC_REG_DMA_TRANSFER_UNLIMITED);

設置好以上之後,DMA會自動開始搬運,我們查看ADC_ConvertedValue數組就可以看到數據了。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章