STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
你好,我也是采用的这种方式但是当信号为零的时候一直出现波动,我现在也不觉得ADC程序有问题,所以就在想是不是噪声的问题(因为布板水平有限),能加你好友向你请教一下这方面吗?
输入接地时也有漂移吗?
是接运放后给AD的?
你可以加我q 13456842834
好的,谢谢了
你好,我没有查找到,是不是设置了权限
哦打错了18125875
你好,刚才加了你给的号,没找你,可能设置了权限。可以的话你加一下我的吧Q845825520
好了,已经给你发送请求了,麻烦你通过一下了
对接运放后给AD
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[Test_Var.Sample_Buff_Node][Test_Var.Sample_Buff_Num++]=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配置是否正确,正确的话,就说明是硬件的问题了
不方便加好友的话,能不能把你的ADC部分代码发给我参考一下呢?
{
sum += ptr;
}
avg=sum/20;
注意: ptr为一个指针,有两处用的不对,应改为sum += *(pt++);
是的,谢谢指正
for(i=0; i<20; i++)
{
sum += ptr;
}
avg=sum/20;
直接这样使用了