STM32的ADC是:12 位 ADC 是一种逐次逼近型模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D
转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。
模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值值。【详细介绍可以看数据手册中文版第16章节】
利用原子的精英开发板实现ADC1的通道1进行单次转化,测量外部电压。

void Adc_Init(void) { //第一步:开启PA时钟(属于GPIOA即APB2的时钟)和ADC1的时钟,设置APB1为输入模式
GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Pin =
GPIO_Pin_1; GPIO_Init(GPIOA,&GPIO_InitStructure); //第二步:复位iADC1,并设置ADC1的分频因子
RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_DeInit(ADC1);
//第三步:初始化ADC1的相关参数,设置ADC1的工作模式以及规则序列相关信息。
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //工作在单一模式而不是循环模式
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//右对齐
ADC_InitStructure.ADC_ExternalTrigConv =
ADC_ExternalTrigConv_None;//转换是由软件转换而不是硬件转换 ADC_InitStructure.ADC_Mode =
ADC_Mode_Independent; //独立模式 ADC_InitStructure.ADC_NbrOfChannel = 1;
//顺序进行规则转化的通道数目 ADC_InitStructure.ADC_ScanConvMode = DISABLE;
//扫描模式关闭,扫描模式是y用来扫描一组模拟通道,我们这里用一个通道,所以用单一模式就ok,用不到扫描模式。
ADC_Init(ADC1,&ADC_InitStructure);//ADC1初始化 //第四步:使能ADC1并校准
ADC_Cmd(ADC1,ENABLE); ADC_GetResetCalibrationStatus(ADC1);//校准复位ADC1
while(ADC_GetResetCalibrationStatus(ADC1)); //检测ADC1校准复位是否完成
ADC_StartCalibration(ADC1);//,脚注复位完成,开始校准
while(ADC_GetCalibrationStatus(ADC1));//检测是否校准完成 } u16 Get_Adc(u8 ch) {
//第五步:配置规则通道参数,设置指定ADC的规则通道,一个序列,采样时间
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);//ADC1,ADC通道1,采样时间HSI239.5个周期
//第六步:开启软件转换 ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能指定的ADC的软件转换功能,我们的是ADC1
while(ADC_GetSoftwareStartConvStatus(ADC1));//检测软件转换是否完成 return
ADC_GetDualModeConversionValue();//返回最后一次读到的AD值。 返回最近一次规则组的转换结果。 }
//为了AD的转换值更加准确,我们采用多次采集求平均的方式 u16 Get_Adc_Average(u8 ch,u8 times) { u32
temp_val=0; u8 t; for(t=0;t<times;t++) { temp_val+=Get_Adc(ch); delay_ms(5); }
return temp_val/times; }

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信