1.利用CubeMX配置ADC
(1)我這里用的是F103的芯片,配置PC4(ADC1_IN14)為檢測引腳  (2)配置ADC時鍾,要小於14MHz  (3)配置ADC參數,選擇需要的模式,我這里只有一個通道  (4)配置DMA,數據傳遞為外設到存儲器,單次模式(轉換完成后結束,再次使用需要重新開啟),循環模式(連續轉換),數據位選半字,外設地址不遞增,內存地址看情況(這里選遞增)。 2.編程中用到的函數
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length) //開啟ADC的DMA轉換,在這個函數里面,包含三個子函數HAL_ADC_Start,HAL_DMA_Start,SET_BIT(hadc1.Instance->CR2, ADC_CR2_DMA)(使能ADC的DMA功能,ADC_DMA_ENABLE) HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc) //停止DMA的采集 注意:如果DMA采用的Normal模式,上面的兩個函數都應該寫進while里,如果采用的Circular模式,則只用在while外面寫一次。另外,我用stm32l151芯片時,這兩個函數必須成對出現才能采集到正確的數據,而用stm32f103時,則不需要使用HAL_ADC_Stop_DMA3.代碼實現
