安静ing 发表于 2019-7-1 11:25:21

mvvm 发表于 2019-7-1 11:24
你好,我没有查找到,是不是设置了权限

哦打错了18125875

mvvm 发表于 2019-7-1 11:25:55

安静ing 发表于 2019-7-1 11:20
你可以加我q 13456842834

你好,刚才加了你给的号,没找你,可能设置了权限。可以的话你加一下我的吧Q845825520

mvvm 发表于 2019-7-1 11:29:31

安静ing 发表于 2019-7-1 11:25
哦打错了18125875

好了,已经给你发送请求了,麻烦你通过一下了

mvvm 发表于 2019-7-1 13:29:39

安静ing 发表于 2019-7-1 11:18
输入接地时也有漂移吗?
是接运放后给AD的?

对接运放后给AD

mvvm 发表于 2019-7-1 13:49:41

/* 完整的ADC配置 */
void Adc_Config1(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
ADC_CommonInitTypeDef ADC_CommonInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);
/* PF4->IN14 */
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF, &GPIO_InitStructure);

ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div6;
ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&ADC_CommonInitStructure);
ADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_NbrOfConversion=1;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T8_TRGO;
ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_Rising;
ADC_Init(ADC3, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC3, ADC_Channel_14, 1, ADC_SampleTime_480Cycles);

ADC_EOCOnEachRegularChannelCmd(ADC3, ENABLE);
ADC_ITConfig(ADC3, ADC_IT_EOC, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel=ADC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_Init(&NVIC_InitStructure);
TIM_TimeBaseInitStructure.TIM_Period=999;
TIM_TimeBaseInitStructure.TIM_Prescaler=167; /* 1000k */
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseInitStructure);
TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update);

ADC_Cmd(ADC3, ENABLE);
TIM_Cmd(TIM8, ENABLE);
}
/* ADC中断 */
void ADC_IRQHandler(void)
{
static uint8_t Num=0;
if(ADC_GetITStatus(ADC3, ADC_IT_EOC) != RESET)
{
Test_Var.Databuf=ADC3->DR;
if(Test_Var.Sample_Buff_Num == 20)
{
   Test_Var.Sample_Buff_Num=0;
   Test_Var.Sample_Finish_Flag=SET;
      if(Test_Var.Sample_Buff_Node==0)
      {
      Test_Var.Sample_Buff_Node=1;
      }
      else
      {
      Test_Var.Sample_Buff_Node=0;
      }
}
}
}
现在就想证明ADC配置是否正确,正确的话,就说明是硬件的问题了

mvvm 发表于 2019-7-1 16:36:27

安静ing 发表于 2019-7-1 11:25
哦打错了18125875

不方便加好友的话,能不能把你的ADC部分代码发给我参考一下呢?

sdgx 发表于 2019-7-23 08:07:55

for(i=0; i<20; i++)
{
sum += ptr;
}
avg=sum/20;
注意: ptr为一个指针,有两处用的不对,应改为sum += *(pt++);

mvvm 发表于 2019-7-27 10:58:49

sdgx 发表于 2019-7-23 08:07
for(i=0; i

是的,谢谢指正:)

mvvm 发表于 2019-7-27 10:59:42

sdgx 发表于 2019-7-23 08:07
for(i=0; i

        for(i=0; i<20; i++)
        {
                sum += ptr;
        }
        avg=sum/20;       
直接这样使用了
页: 1 2 [3]
查看完整版本: STM32F4ADC采集的数据好坏和调用的某个函数有关