stm32 ADC配置
2024-10-16 19:49:09
STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器,它有 18 个通道,可测量 16 个外部和 2 个内部信号源
各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据
寄存器中。
当ADC 通道 1 在 PA1 上时。
//初始化 ADC
//这里我们仅以规则通道为例
//我们默认将开启通道 0~3
void Adc_Init(void)
{ ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
RCC_APB2Periph_ADC1 , ENABLE ); //使能 ADC1 通道时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置 ADC 分频因子 6
//72M/6=12,ADC 最大时间不能超过 14M
//PA1 作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.1
ADC_DeInit(ADC1); //复位 ADC1,将外设 ADC1 的全部寄存器重设为缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC 独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //单通道模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由
//软件而不是外部触发启动
21 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC 数据右对齐
ADC_Init(ADC1, &ADC_InitStructure); //根据指定的参数初始化外设 ADCx
ADC_Cmd(ADC1, ENABLE); //使能指定的 ADC1
ADC_ResetCalibration(ADC1); //开启复位校准
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
ADC_StartCalibration(ADC1); //开启 AD 校准
while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束
}
//获得 ADC 值
31 //ch:通道值 0~3
32 u16 Get_Adc(u8 ch)
{
//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
ADC_RegularChannelConfig(ADC1, ch, , ADC_SampleTime_239Cycles5 );
36 //通道 1,规则采样顺序值为 1,采样时间为 239.5 周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能软件转换功能
38 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
return ADC_GetConversionValue(ADC1); //返回最近一次 ADC1 规则组的转换结果
}
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=;
u8 t;
for(t=;t<times;t++)
{ temp_val+=Get_Adc(ch); //通过Get_Adc_Average函数,用于多次获取 ADC 值,取平均,用来提高准确度。
delay_ms();
}
return temp_val/times;
}
知识来源:STM32F1 开发指南(库函数版)
最新文章
- 通过Gulp使用Browsersync实现浏览器实时响应文件更改
- Python的平凡之路(20)
- nodejs中Stream的理解
- cordova /phonegap 自定义插件
- 【转】Javascript 中的false,零值,null,undefined和空字符串对象
- iPhone 6 &; iPhone 6 Plus适配
- 关于dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的分发机制浅析
- 九度OJ 1351 数组中只出现一次的数字
- C#操作word封装
- ubuntu openstack
- The Django template language 阅读批注
- python3.5 + django1.9.1+mysql
- vue框架-学习记录
- linux下挂载U盘
- angularJS--多个控制器之间的数据共享
- YOLO理解
- 将bean转换成XML字符串
- Match-----Gray-value-----基于灰度值的模板匹配
- logback log4j log4j2 性能实测
- PAT 1049 数列的片段和