ADC工作均為非阻塞狀態
輪詢模式
中斷模式
DMA模式
庫函數:
1 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);//輪詢模式,需放在循環中不斷開啟 2 3 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc); 4 5 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);//等待轉換結束,只適用於輪詢 6 7 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);// 8 9 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);//中斷模式 10 11 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc); 12 13 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);//中斷 14 15 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);//DMA模式 16 17 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc); 18 19 uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc); //讀取ADC的值 20 21 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);//結束后回調 22 23 void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);//轉換過程中回調 24 25 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc); 26 27 void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
校准模式:
校准ADC(HAL_ADCEx_Calibration_Start(&hadc);有些芯片不支持校准,F4不支持
----------------------------------------------------------------------------------------------------------------------------------
可變占空比設置
手動更改占空比
TIM3->CCR2 改變占空比
TIM3->ARR 改變頻率
TIM3->PSC
ADC_EXIT 觸發引腳
32芯片自帶的溫度傳感器,在16或者18通道
可以用來做對比
代碼:
應用:測量壓敏電阻阻值---還是測電壓
DMA多通道采集-----開啟多通道設置,定義一個數組存放轉換值
交叉模式---目的是兩路ADC采集一路信號,可以獲取雙倍速度
DAC---數據轉換
基本配置:
初始化
設置通道
啟動DAC
在循環中改變dac_value值即可
庫函數:
輸出正弦波----DMA模式
就是預設一組值,不斷改變