1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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; } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:45 , Processed in 0.936873 second(s), Total 77, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号