为什么将adc采集器的resolution 从8改到12之后 程序烧录到板卡之后不起作用了
时间: 2023-12-28 17:03:38 浏览: 28
将ADC采集器的Resolution从8位改为12位后,需要相应地修改程序中的ADC采集配置参数,否则可能会出现采集结果不准确或不稳定的情况。
具体来说,需要修改的参数包括采样时间、参考电压、时钟分频等。在修改参数时,需要注意ADC转换时间的变化,以及ADC采集结果的数据类型变化(如8位改为12位需要使用uint16_t类型接收结果)。
如果修改参数后,程序烧录到板卡之后仍然无法正常工作,可能需要检查程序中的其他问题,如是否正确初始化ADC模块、是否正确配置引脚、是否正确使能ADC中断等。如果检查后仍然无法解决问题,可以考虑使用调试工具进行调试,以找出具体的问题所在。
相关问题
为什么选用12位ADC解析器之后 只有一个adc数值正常 另外一个adc不正常了
有可能是以下几个原因导致的:
1. 电源噪声干扰:使用12位ADC需要更加稳定的电源,如果电源有噪声干扰,会影响ADC的精度。
2. 信号线干扰:ADC的信号线需要与信号源隔离,并且要有足够的屏蔽,避免外部电磁场的影响。
3. 转换速率不一致:如果两个ADC转换速率不一致,可能会导致其中一个ADC的读数不正常。可以尝试调整两个ADC的转换速率相同。
4. 程序问题:可能是程序在读取ADC数据的时候出现了问题,可以检查一下程序的代码是否存在问题。
需要具体分析具体原因,可以尝试对以上几个方面进行排查。
stm32F103C8T6将PB10设置为ADC2的初始化以及详细配置函数以及获取ADC2采集到的具体数据函数
以下是将PB10设置为ADC2的初始化和配置函数以及获取ADC2采集到的具体数据函数的代码示例:
```c
#include "stm32f10x.h"
void ADC2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
// 使能ADC2和GPIOB的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2 | RCC_APB2Periph_GPIOB, ENABLE);
// 配置PB10为模拟输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// ADC2的配置
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; // 转换通道数为1
ADC_Init(ADC2, &ADC_InitStructure);
// 开启ADC2
ADC_Cmd(ADC2, ENABLE);
// ADC2转换器校准
ADC_ResetCalibration(ADC2);
while (ADC_GetResetCalibrationStatus(ADC2));
ADC_StartCalibration(ADC2);
while (ADC_GetCalibrationStatus(ADC2));
}
u16 ADC2_GetValue(void)
{
// 启动ADC2转换
ADC_SoftwareStartConvCmd(ADC2, ENABLE);
// 等待转换完成
while (!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC));
// 返回ADC2转换结果
return ADC_GetConversionValue(ADC2);
}
```
使用方法:
在主函数中调用ADC2_Init()函数进行ADC2的初始化和配置,然后调用ADC2_GetValue()函数获取PB10的模拟信号经过ADC2转换后的数字量。需要注意的是,ADC2_GetValue()函数每次返回的结果是一个16位的无符号整数,范围为0~4095,对应模拟输入电压为0~3.3V。因此,需要根据具体的应用场景进行量程的转换和精度的处理。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)