stm32 adc+dma传输 传输完成标志得不到
2个回答
展开全部
加上DMA中断啊!
每次传输完成进入DMA中断运行里面的程序。
void DMA_NVIC_Configuration()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void DMA1_Channel1_IRQHandler ()
{
int i,j=0;
int input[2]={0 ,0};
int sum = 0;
u8 count;
// vu16 value_buf[N];
/*ÏÞ·ùƽ¾ù*/
for (i=0;i<M;i++)
{
for ( count=0;count<N;count++)
{
input[1]=input[0];
input[0]= AD_Value[count][i];
if(abs(input[1]-input[0])>20)
AD_Value[count][i]=input[1];
sum += AD_Value[count][i];
}
After_filter[i]=sum/(N-1);
sum=0;
}
DMA_ClearFlag(DMA_ISR_TCIF1);
}
每次传输完成进入DMA中断运行里面的程序。
void DMA_NVIC_Configuration()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void DMA1_Channel1_IRQHandler ()
{
int i,j=0;
int input[2]={0 ,0};
int sum = 0;
u8 count;
// vu16 value_buf[N];
/*ÏÞ·ùƽ¾ù*/
for (i=0;i<M;i++)
{
for ( count=0;count<N;count++)
{
input[1]=input[0];
input[0]= AD_Value[count][i];
if(abs(input[1]-input[0])>20)
AD_Value[count][i]=input[1];
sum += AD_Value[count][i];
}
After_filter[i]=sum/(N-1);
sum=0;
}
DMA_ClearFlag(DMA_ISR_TCIF1);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以帮你写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询