資源簡介
STM32的ADC轉換程序,測試通過,非DMA方式,可用于多通道采集

代碼片段和文件信息
#include?“stm32_adc.h“
u16??ADC_Value[2]={0};
void?ADC1_Init(void)??
{?????
????//?定義ADC初始化結構體
ADC_InitTypeDef?ADC_InitStructure;
????RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1?????ENABLE?);???//
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //?ADC所允許的最大時鐘頻率為14MHz
//?獨立工作模式
//?多通道掃描模式
//?連續模數轉化模式
//?轉換觸發方式:?轉換由軟件觸發啟動
//?ADC數據右對齊
//?進行規則轉換的ADC通道的數目為1
ADC_InitStructure.ADC_Mode?=?ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode?=?DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode?=?DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv?=?ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign?=?ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel?=?1;
ADC_Init(ADC1?&ADC_InitStructure);
ADC_Cmd(ADC1?ENABLE); //?使能ADC1
ADC_ResetCalibration(ADC1); //?復位校準寄存器
while(ADC_GetResetCalibrationStatus(ADC1)); //?等待ADC1校準寄存器復位完成
ADC_StartCalibration(ADC1); //?開始ADC1校準
while(ADC_GetCalibrationStatus(ADC1)); //?等待ADC1校準完成
}?????????
??
//單次獲得ADC值??
//ch:通道值?0~3??
u16?Get_ADC(u8?ch)?????
{??
????u16?tempADC?=?0;???
?????
????//?設置ADC1使用8轉換通道,采樣時間為55.5周期
????ADC_RegularChannelConfig(ADC1?ch?1?ADC_SampleTime_239Cycles5);
????ADC_SoftwareStartConvCmd(ADC1?ENABLE); //?啟動ADC1轉換
????while(!ADC_GetFlagStatus(ADC1?ADC_FLAG_EOC?));//等待轉換結束??
????tempADC?=?ADC_GetConversionValue(ADC1);????????
????ADC_SoftwareStartConvCmd(ADC1?DISABLE); //?啟動ADC1轉換
????return?tempADC;?//返回最近一次ADC1規則組的轉換結果??
}??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-31?11:20??STM32_ADC\
?????文件????????1636??2018-12-31?11:19??STM32_ADC\stm32_adc.c
?????文件?????????226??2017-12-06?14:10??STM32_ADC\stm32_adc.h
- 上一篇:iups典型信令數據
- 下一篇:Knime白皮書2.0版本中文翻譯.pdf
評論
共有 條評論