初级会员

- 积分
- 104
- 金钱
- 104
- 注册时间
- 2014-5-8
- 在线时间
- 0 小时
|
5金钱
原子哥,双通道AD采集的主干程序如下:
void filter(void)
{
u16 i,j;
int sum = 0;
u8 count;
for(i=0;i<2;i++)
{
for( count=0;count<32;count++)
{
sum += ADC_ConvertedValue[count];//ADC_ConvertedValue为DMA的内存地址
}
AD_After_Filter=sum/N;
sum=0;
}
}
/*************************************************
函数: void DMA1_IRQHandler(void)
**************************************************/
void DMA1_Channel1_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET)
{
DMA_ClearITPendingBit(DMA1_IT_TC1 ); //清定时器更新中断标志位
gototime1 = 1;
}
}
/*************************************************
函数: int main(void)
功能: main主函数
参数: 无
返回: 无
**************************************************/
int main(void)
{
u8 ah,al1,al2= 0;
u16 temp0,temp1;
RCC_Configuration();
ADC_Configuration(); //配置PA1 为ADC1_IN1
NVIC_Configuration();
USART_Configuration();
Timer2_Configuration();
DMA_1_Configuration();
LED_Init();
delay_init();
/*************************************************
DMA+DAC的初始化
**************************************************/
///////////////////////////////////////////////////////////////////////////////////
RCC1_Configuration();
GPIO_Configuration();
Timer8_Configuration();
DAC_Configuration() ;
DMA_2_Configuration();
for (Idx= 0; Idx<32; Idx++)
{
DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
}
/////////////////////////////////////////////////////////////////////////////////////
while(1)
{
LED1=0;
if ((gototime ==1))
{
gototime = 0;
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //读取ADC值
}
while(!(gototime1==1));
filter();
temp0=AD_After_Filter[0]*(330/4096);
硬件仿真结果如下图所示:
为什么AD_After_Filter[0]有值,而temp0没值?谢谢!
|
|