前言:
本文章介紹了STM32微控制器的ADC外設,介紹了ADC的底層原理以及基本結構,介紹了ADC有關的標準庫函數,以及如何編寫代碼實現ADC對電位器電壓的讀取。
可以根據基本結構圖來編寫代碼
大體流程:
1、開啟RCC時鐘(包括ADC和GPIO的時鐘,另外ADCCLK的分頻器,也需要配置)
2、配置GPIO(把需要用的GPIO配置成模擬輸入模式)
3、配置多路開關(把左邊的通道接入到右邊的規則組列表里)
4、配置ADC轉換器(用庫函數結構體)
5、如果需要模擬看門狗和中斷,也可以配置
6、開關控制,調用ADC_Cmd函數,開啟ADC(如果需要,還可以開啟校準)
ADC相關庫函數介紹
1)ADCCLK的配置庫函數,在rcc.h
這個函數是用來配置ADCCLK分頻器的(它可以對APB2的72MHz時鐘選擇2、4、6、8分頻,輸入到ADCCLK)
void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
2)ADC的配置庫函數,在adc.h
恢復出廠配置、初始化、結構體初始化
void ADC_DeInit(ADC_TypeDef* ADCx);
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
用于給ADC上電
void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
開啟DMA輸出信號(如果使用DMA轉運數據,就得調用這個函數)
void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
中斷輸出控制
void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
用于控制校準的函數:復位校準、獲取復位校準狀態、開始校準,獲取開始校準狀態(在ADC初始化之后,可以依次調用)
void ADC_ResetCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
void ADC_StartCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
ADC軟件開始轉換控制,這個就是用于軟件觸發的函數了,調用一下,就可以軟件觸發轉化了
void ADC_SoftwareStartCon