stm32 ADC模数转换
来源:互联网 发布:并查集算法 编辑:程序博客网 时间:2024/06/05 06:23
通过调节电位器,改变AD转换值和电压值
STM32F1 ADC 配置步骤
1.使能GPIO时钟和ADC时钟
2.配置引脚模式为模拟输入
3.配置ADC的分频因子
4.初始化ADC参数,ADC_InitTypeDef
5.使能ADC
6.执行ADC校准
7.设置ADC软件启动
8.读取ADC转换值
9.设置ADC规则,采样时间等
10.使能ADC的软件转换
11.读取ADC转换结果
举例
u16 ADC_value(u8 time){ u8 i = 0; u16 value; ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5); //设置ADC规则,采样时间239.5周期 for(i = 0; i < time; i++) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC的软件转换 while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) != SET); value += ADC_GetConversionValue(ADC1); //读取ADC转换结果 } return value/time;}typedef struct{ uint32_t ADC_Mode; //双模式选择 FunctionalState ADC_ScanConvMode; //扫描模式 FunctionalState ADC_ContinuousConvMode; //连续转换 uint32_t ADC_ExternalTrigConv; //注入通道的外部触发转换模式 uint32_t ADC_DataAlign; //数据对齐 uint8_t ADC_NbrOfChannel; //规则通道序列长度}ADC_InitTypeDef;void ADC_init(){ GPIO_InitTypeDef gpio = { GPIO_Pin_1, GPIO_Speed_50MHz, GPIO_Mode_AIN //模拟输入 }; ADC_InitTypeDef adc = { ADC_Mode_Independent, //独立模式 DISABLE, //关闭扫描模式 DISABLE, //单次转换模式 ADC_ExternalTrigConv_None, //不用外部事件启动转换 ADC_DataAlign_Right, //右对齐 1, //通道数目1 }; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE); //使能GPIO时钟和ADC时钟 GPIO_Init(GPIOA, &gpio); //配置引脚模式 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //配置ADC的分频因子 ADC_Init(ADC1, &adc); //初始化ADC参数 ADC_Cmd(ADC1, ENABLE); //使能ADC ADC_ResetCalibration(ADC1); //执行ADC复位校准 while(ADC_GetResetCalibrationStatus(ADC1) == SET); //等待校准完成 ADC_StartCalibration(ADC1); //执行ADC校准 while(ADC_GetCalibrationStatus(ADC1) == SET); ADC_SoftwareStartConvCmd(ADC1, ENABLE); //ADC软件启动}int main(void){ ADC_init(); while(1) { adc = ADC_value(15); //15次平均值 printf("ADC_value is %d.\n", adc); printf("vol is %.3fV.\n", adc * (3.3 / 4096)); //电压值 delay_ms(500); led1 = ~led1; }}
电压计算
vol = ADC * (3.3 / 4096);
ADC的参考电压VREF+为3.3V。ADC为12位转换精度, 2^12为4096
阅读全文
1 0
- stm32 ADC模数转换
- STM32 ADC 模数转换的简单实现
- 【菜鸟入门】stm32 之 ADC 模数转换
- 6.ADC模数转换
- stm8 ADC模数转换
- STM32 ADC转换时间
- STM32 ADC 转换时间
- STM32之ADC转换
- 【连载】【STM32神舟III号实验例程】ADC模数转换实验(8)
- 寒假学习之stm32(13)----ADC(模数转换)
- 寒假学习之stm32(13)----ADC(模数转换)
- STM32 ADC 单次转换
- ADC (A/D)模数转换
- LPC1768之模数转换ADC
- STM32 ADC 规则多通道转换
- STM32 ADC多通道转换(转)
- STM32 ADC 规则多通道转换
- STM32学习笔记之ADC转换
- 第十篇:JAVA常用类之日期处理
- 为什么会有mov edi, edi?(转)
- MP3播放器的工作原理
- JavaScript 匿名函数和闭包
- springboot-cloud-4-feign
- stm32 ADC模数转换
- XGBoost笔记
- Vue笔记
- 【C语言】【unix c】静态库的制作和使用
- LeetCode (26)与(80) java practice
- 构造函数与析构函数是否可以抛出异常
- 关于DBLink
- 在jquery的ajax方法中的success中使用return要注意的问题
- 网页版井字游戏(TicTacToe)人机对战的制作(附思路和源码)