今天碰到一个奇怪的问题,开了
tiM17的100ms中断,预分频99,发现以前正常采样电位器值的AD数据错误,明明是12位的AD通过调试查看变量发现采样到了6000多的值,但把预分频改为8以下则立马一切正常,我就纳闷了,两个完全不相关的配置怎么会影响,AD为DMA模式
#include "
STM32f0xx.h"
uint16_t ADC_ConvertedValue; //ADC转换值
void ADC_Config(void)
{
}
int main(void)
{
TIM_TimeBaseInitTypeDef a; //定时器配置结构体
ADC_InitTypeDef ADC_InitStructure; //ADC配置结构体
a.TIM_Prescaler=0; //定时器预分频(定时器时钟频率=晶振频率/(TIM_Prescaler+1))
ADC_Config();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //开启ADC时钟
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //设置选择连续采样
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //采样数据右对齐
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //ADC外部边缘触发无效
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; // 配置ADC转换分辨率 12bit
ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward; //设置ADC扫描方向
ADC_Init(ADC1, ADC_InitStructure); //配置ADC
ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_239_5Cycles); //配置ADC通道与采样周期
ADC_Cmd(ADC1, ENABLE); //启动ADC1
ADC_StartOfConversion(ADC1); //软件触发ADC启动转换
while (1)
{
ADC_ConvertedValue=ADC_GetConversionValue(ADC1);
}