打印

stm32DA-AD问题,在线等!!!!

[复制链接]
3921|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1、 DA2-PA5输出,AD1-PA9脚采集。(2.5V参考电压)CPU:stm32VET6-LQFP100
2、 DA触发机制tim4触发DA2,DMA2-4channl配合。
3、 AD触发机制tim1触发AD1,DMA1-1channel配合。
4、 DA和AD关联通过tim4触发tim1.
5、 问题描述:发送据此波700数据,正常采集,采集到的数据有一个不正常,步据不一致
6、 采集据此波形


7、 在接受到数据中step都正常,唯独280位置处有一个值不正常。



接受到的据此波与自身差分图形,明显见到突变  

,自己试验中排除了硬件干扰,在试验中DA更改发送电压范围,中间的突变会移动,一下图片是与理论直线做差看到的突变位置。
程序如下
* 文件名  :adc.c


#include "stm32f10x.h"
#include "usart1.h"//串口输出头文件
#include "adc.h"
#include "dac.h"
#include "SysTick.h"
//#include "hw_config.h"

#define ADC1_DR_Address    ((uint32_t)0x4001244C)
extern u8 jixianflag1;        //跑基线标志位
extern u8 bd1flag1;                 //0.5浓度气体标定
extern u8 bd2flag1;                 //1.5浓度气体标定
extern u8 bd3flag1;                 //2.0浓度气体标定
extern u8 bd4flag1;                 //3.5浓度气体标定

float A=SET_A;
float F=SET_F;
u32 aa1[ADC_Buffersize+20]={0};
u8 V_qianwei,V_baiwei,V_shiwei,V_gewei,V_wanwei;     //AD采样平均值的千位,百位,十位,个位个位
u16 ADC_ConvertedValue[ADC_Buffersize];                //一个周期的ADC转换数组
u32  Volt_sum;
u16 Volt;
u8 z=0;
u16 counter=0;
u16 Num1=0;                                //一个周期的平均电压值


u8 flag_ADC=0;


void ADC1_AFIO_Configuration(void)
{
  GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE); //TIM1 完全重映射
  GPIO_PinRemapConfig(GPIO_Remap_TIM4,ENABLE);     //TIM4 完全重映射
}




void ADC1_GPIO_Config(void)
{
          GPIO_InitTypeDef GPIO_InitStructure;
        //ADC  GPIO设置
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                                                  //GPIOE_9,TIM1_1
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                         //push-pull
          GPIO_Init(GPIOE, &GPIO_InitStructure);




}

/*******************************************************************************
* Function Name  : void NVIC_Config(void)
* Description    : Configures Vector Table base location.
* Input          : 无
* Output         : 无
* Return         : 无
*******************************************************************************/
void ADC1_NVIC_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
                
        NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;                                //DMA传输结束中断
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;                                //抢占优先1
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                                                //响应优先0

          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                        //允许中断
          NVIC_Init(&NVIC_InitStructure);
}





/*************************************************
函数: void DMA_Config(void)
功能: DMA配置
参数: 无
返回: 无
**************************************************/
void ADC1_DMA_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;                                                                                        //定义DMA初始化结构体
        DMA_DeInit(DMA1_Channel1);                                                                                                        //复位DMA通道1
        DMA_InitStructure.DMA_PeripheralBaseAddr =(u32)&(ADC1->DR);                                  //定义 DMA通道外围设备地址
        DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;                                 //定义DMA通道内部存储器地址
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                                                        //指定DMA单向传输
        DMA_InitStructure.DMA_BufferSize =ADC_Buffersize;                                                //定义DMA数据单元大小-一个锯齿波周期的样点数
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                        //当前外设寄存器地址不变
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                //当前存储器地址变化
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;        //定义外设数据宽度16位
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                 //定义存储器数据宽度16位
        DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                //DMA通道循环模式
        DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                        //DMA通道优先级高
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                                //禁止DMA通道存储器到存储器传输
        DMA_Init(DMA1_Channel1, &DMA_InitStructure);                                                                //初始化DMA通道1

        DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);                                                         //使能DMA传输完成中断
        DMA_Cmd(DMA1_Channel1, ENABLE);                                                                                         //使能DMA通道1
}


/*************************************************
函数: void ADC_Config(void)
功能: ADC配置
参数: 无
返回: 无
**************************************************/
void ADC1_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure;                                                                                                        //定义ADC初始化结构体变量
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;                                                                        //ADC1和ADC2工作在独立模式
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;                                                                                 //禁止多通道扫描模式
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                                                                        //ADC转换工作在单次转换模式
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;                                //TIM1触发方式转换
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                                                                //转换数据右对齐
        ADC_InitStructure.ADC_NbrOfChannel = 1;                                                                                                //规则转换通道数量
        ADC_Init(ADC1, &ADC_InitStructure);                                                                                                 //初始化ADC
        ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_239Cycles5);                //ADC1选择信道1,音序器等级1,采样时间28.5
        /*  *   This parameter can be one of the following values:
  * @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles
  * @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles
  * @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles
  * @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles       
  * @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles       
  * @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles       
  * @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles       
  * @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles       
  * @retval : None
  */
        ADC_DMACmd(ADC1, ENABLE);                                                                                                                        //使能ADC1模块DMA                                               
          ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);                                                                                                //使能ADCx EOC中断
        ADC_ExternalTrigConvCmd( ADC1, ENABLE);                                                                                         //使能ADCx的经外部触发启动转换功能
        ADC_Cmd(ADC1, ENABLE);                                                                                                                                //使能ADC1
        ADC_ResetCalibration(ADC1);                                                                                                                 //重置ADC1校准寄存器
        while(ADC_GetResetCalibrationStatus(ADC1));                                                                                        //等待ADC1校准重置完成
        ADC_StartCalibration(ADC1);                                                                                                                        //开始ADC1校准
        while(ADC_GetCalibrationStatus(ADC1));       
                                       
}


/*************************************************
函数: void TIM1_Config(void)
功能: TIME1配置
参数: 无
返回: 无
**************************************************/
void ADC1_TIM1_Config(void)
{  u16 freq1=0;
        TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
        TIM_OCInitTypeDef         TIM_OCInitStructure;
        freq1 =((uint16_t) (100000/SET_F));
           TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
//  TIM_TimeBaseStructure.TIM_Period = 600;
        TIM_TimeBaseStructure.TIM_Period =freq1;                                                                      //ADC采样频率=120Khz=72M/(TIM_Period)      
          TIM_TimeBaseStructure.TIM_Prescaler = 0x0;      
          TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   
          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
          TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

        TIM_PrescalerConfig(TIM1,0x0,TIM_PSCReloadMode_Immediate);
    TIM_ARRPreloadConfig(TIM1, DISABLE);                                                                          //禁止ARR预装载缓冲器
          /* TIM1 channel1 configuration in PWM mode */
          TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                                                 //使能TIM1_CH1通道
//         TIM_OCInitStructure.TIM_Pulse = 600;         
        TIM_OCInitStructure.TIM_Pulse = (freq1)/2;                                                                  //ADC采样频率=120Khz=72M/(TIM_Period)  
          TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;         
          TIM_OC1Init(TIM1, &TIM_OCInitStructure);

        TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);                                                                    
        TIM_CtrlPWMOutputs(TIM1, ENABLE);

        TIM_ITRxExternalClockConfig(TIM1, TIM_TS_ITR3);                                                               //外部时钟模式1,触发源为TIMER4
    TIM_SelectSlaveMode(TIM1,TIM_SlaveMode_Trigger);                                                              //配置为触发模式,时钟自动切换为内部时钟

//        TIM_Cmd(TIM1,ENABLE);                //启动TIM1  

}

/*******************************************************************************
* Function Name  : DMA1_Channel1_IRQHandler
* Description    : DMA中断服务程序
*******************************************************************************/
void DMA1_Channel1_IRQHandler(void)
{
        DMA_ClearITPendingBit(DMA1_IT_TC1);                         //清除中断标志位
        DMA_Cmd(DMA1_Channel1, DISABLE);                                  //关闭DMA1通道1  for ADC
        DMA_Cmd(DMA2_Channel4, DISABLE);                                  //关闭DMA2的4通道 for DAC
        TIM4_DAC_CLOSE();
        TIM_Cmd(TIM1,DISABLE);                                                         //关闭TIM4 停止DAC和ADC转换
        AverageVolt();                                                              //求ADC采样值之和
//        USB_Send_ADCValue();                            //USB发送ADC采样值
        DAC_DMA2_Init();                                           //DAC_DMA2重新初始化 for DAC
}


/*************************************************
函数: void AverageVolt(void)
功能: 求ADC采样值之平均值
参数: 无
返回: 无
**************************************************/
        void AverageVolt(void)
         {
            u16 i;
       
                counter++;

          
           for(i=0;i<ADC_Value;i++)
             {        aa1=aa1+ADC_ConvertedValue;         //将ADC转换值除以10累加
          }  
            
           //        TIM_Cmd(TIM1,ENABLE);
           // if(jixianflag1==1||bd1flag1==1||bd2flag1==1||bd3flag1==1||bd4flag1==1)
               
                if(counter==Num1)                                                                                //判断是否累加10次
        {               
                   flag_ADC=1;
                   counter=0;
         TIM_Cmd(TIM5, DISABLE);
             }

}



1.JPG (11.76 KB )

1.JPG

相关帖子

沙发
snailsnail|  楼主 | 2013-4-22 15:02 | 只看该作者
          
/*************************************************
函数: ADC1_Init
功能: ADC1初始化
参数: 无
返回: 无
**************************************************/
        void ADC1_Init(void)
        {         Num1=Num11;
        //        ADC1_RCC_Config();                  //初始化时钟                                       
                  ADC1_NVIC_Config();                  //初始化中断
                  ADC1_GPIO_Config();                  //初始化引脚
        //        ADC1_AFIO_Configuration();//ADC中TIM重映射
                ADC1_DMA_Config();                  //初始化DMA

        }







* 文件名  :DAC.c

#include "dac.h"

extern float A;               //用户定义锯齿波幅值,在adc.h中通过宏定义SET_A定义
extern float F;                   //用户定义锯齿波频率,在adc.h中通过宏定义SET_F定义

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/

#define DAC_DHR12R2_Address      0x40007414                //12bit-DAC单通道寄存器地址
#define DAD 720

    /* Init Structure definition */
   DAC_InitTypeDef            DAC_InitStructure;
   DMA_InitTypeDef            DMA_InitStructure;
   TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
   TIM_ICInitTypeDef                   TIM_ICInitStructure;

   
   uint32_t SawtoothWave12bit[DAD];                //存放DAC锯齿波数据的数组
   uint32_t i = 0;
   uint16_t  freq=0;                           // ferq: 频率的转换参数
   float     Amp=0.0;                                    // 幅值的转换参数

/*
* 函数名:DAC2_RCC_Configuration
* 描述  :DAC的RCC配置
* 输入  : 无
* 输出  :无
* 调用  :内部调用
*/
static void DAC2_RCC_Configuration(void)
{   

/* Enable peripheral clocks --------------------------------------------------*/
  /* DMA clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
  /* GPIOA Periph clock enable */
  //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  /* DAC Periph clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC|RCC_APB1Periph_TIM4, ENABLE);

}

/*
* 函数名:DAC2_GPIO_Configuration
* 描述  :DAC通道2的GPIO模式配置
* 输入  : 无
* 输出  :无
* 调用  :内部调用
*/
static void DAC2_GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* Once the DAC channel is enabled, the corresponding GPIO pin is automatically
     connected to the DAC converter. In order to avoid parasitic consumption,
     the GPIO pin should be configured in analog */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;
                            //PA5  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  //GPIO_ResetBits(GPIOA,GPIO_Pin_5);
}

/*
* 函数名:DAC2_Mode_Config
* 描述  :TIM4主/从模式配置,DAC通道2模式配置
* 输入  : 无
* 输出  :无
* 调用  :内部调用
*/
static void DAC2_Mode_Config(void)
{
  
           /* 转换F频率值 */
           //freq =((uint16_t) (17578.125/F));       
         freq =((uint16_t) (100000/F));                                                                         //        17578.125=72000000/720

           /* 转换A频率值 */
            Amp =(A*4095)/2.5;                                                                                                //3.16为示波器检测到的DAC电压满量程,可根据实际情况调整

         //配置TIMER4为主模式,OC1作为触发输出
         TIM_DeInit(TIM4);
         TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
         TIM_TimeBaseStructure.TIM_Period= freq;                                                       //set freq         
         TIM_TimeBaseStructure.TIM_Prescaler = 0x0;      
         TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;                                 //向上计数模式
         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
         TIM_PrescalerConfig(TIM4, 0x0,TIM_PSCReloadMode_Immediate);                        //时钟分频系数0,所以定时器时钟为72000000/freq;
         TIM_ARRPreloadConfig(TIM4, DISABLE);                                                      //禁止ARR预装载缓冲器
        /* TIM4 TRGO selection */
  
         //配置TIMER4的输入通道1的参数
         TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;
         TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
         TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
         TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
         TIM_ICInitStructure.TIM_ICFilter=8;                                      //Fsampling=Fdts/4 N=8  滤除32ms的抖动
         TIM_ICInit(TIM4, &TIM_ICInitStructure);
       
         
         TIM_TIxExternalClockConfig(TIM4,TIM_TS_TI1FP1,TIM_ICPolarity_Rising,0);  //配置外部触发信号为TI1FP1
         TIM_SelectSlaveMode(TIM4,TIM_SlaveMode_Trigger);                         //配置TIMER4从模式为触发模式
         TIM_SelectOutputTrigger(TIM4,TIM_TRGOSource_Update);                     //选择触发输出为使能
        // TIM_SelectMasterSlaveMode(TIM4,TIM_MasterSlaveMode_Enable);              //选择主/从模式(既是主模式也是从模式,触发信号延迟一段时间等待从定时器以达到同步的目的)
          

          /* DAC channel2 Configuration */
          DAC_StructInit(&DAC_InitStructure);
          DAC_InitStructure.DAC_Trigger = DAC_Trigger_T4_TRGO;
          DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
          DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
          DAC_Init(DAC_Channel_2, &DAC_InitStructure);

          /* Fill SawtoothWave12bit table */
          /*锯齿波数据产生函数*/
          for (i=0; i<DAD; i++)        
          {         
           // SawtoothWave12bit[i]=SawtoothWave12bit[0]+(uint32_t)((Amp/4096)*i);
                SawtoothWave12bit[i]=700+(uint32_t)((Amp/DAD)*i);
          }
          
          SawtoothWave12bit[718]=700;//918;
          SawtoothWave12bit[719]=700;
          //SawtoothWave12bit[720]=0;          
          DAC_DMA2_Init();                                                                                                                  // DMA2初始化

          /* Enable DAC Channel2: Once the DAC channel2 is enabled, PA.05 is
             automatically connected to the DAC converter. */
          DAC_Cmd(DAC_Channel_2, ENABLE);

          /* Enable DMA for DAC Channel2 */
          DAC_DMACmd(DAC_Channel_2, ENABLE);
        }
        /*-------------------
         * 函数名:DAC2_Init
         * 描述  :DAC初始化
         *-------------------*/
   void DAC2_Init(void)
        {
          /* DAC2 RCC Configuration */
          DAC2_RCC_Configuration();   
       
          /* Once the DAC channel is enabled, the corresponding GPIO pin is automatically
             connected to the DAC converter. In order to avoid parasitic consumption,
             the GPIO pin should be configured in analog */
          DAC2_GPIO_Configuration();       
          DAC2_Mode_Config();
        }
        /*-------------------
         * 函数名:TIM4_DAC_OPEN
         * 描述  :通过使能TIM4启动DAC模块
         *-------------------*/
        void TIM4_DAC_OPEN(void)
        {
           /* TIM4 enable counter */
          TIM_Cmd(TIM4, ENABLE);
        }
        /*-------------------
         * 函数名:TIM4_DAC_CLOSE
         * 描述  :通过失能TIM4停止DAC模块
         *-------------------*/
       
        void TIM4_DAC_CLOSE(void)
        {
          TIM_Cmd(TIM4, DISABLE);
        }
        /*-------------------
         * 函数名:DAC_DMA2_Init
         * 描述  :DMA通道2初始化
         *-------------------*/
        void DAC_DMA2_Init(void)
        {
          /* DMA2 channel4 configuration */
          DMA_DeInit(DMA2_Channel4);
          DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2_Address;   //双通道 DAC_DHR12RD_Address
          DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&SawtoothWave12bit;
          DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
          DMA_InitStructure.DMA_BufferSize = DAD;                             
          DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
          DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
          DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
          DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
          DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
          DMA_InitStructure.DMA_Priority = DMA_Priority_High;
          DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
          DMA_Init(DMA2_Channel4, &DMA_InitStructure);
       
          /* Enable DMA2 Channel4 */
          DMA_Cmd(DMA2_Channel4, ENABLE);
        }

        void opencaiji(void)
        {
           DMA_Cmd(DMA1_Channel1, ENABLE);                       //打开DMA1通道1  for ADC
     TIM4_DAC_OPEN();                       //开启TIM4,触发DAC和TIM1
}
   void closecaiji(void)
   {

    DMA_Cmd(DMA1_Channel1, DISABLE);               
    TIM4_DAC_CLOSE();                       //开启TIM4,触发DAC和TIM1
        }




void Time5_RCC_Configuration(void)
{   
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
}

/*
* 函数名:Time5_Configuration
* 描述  :TIME5配置 ,定时2s
* 输入  :无
* 输出  :无
*/
void Time5_Configuration(void)
{
TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;

TIM_DeInit(TIM5);
TIM_TimeBaseStructure.TIM_Period=490;
//TIM_TimeBaseStructure.TIM_Period=999;       
// TIM_TimeBaseStructure.TIM_Period=19999;                                                                          
TIM_TimeBaseStructure.TIM_Prescaler=0;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                                
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;                        
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
//TIM_PrescalerConfig(TIM5,719,TIM_PSCReloadMode_Immediate);               
TIM_PrescalerConfig(TIM5,359,TIM_PSCReloadMode_Immediate);               
TIM_ARRPreloadConfig(TIM5, DISABLE);                                                               
TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);

TIM_Cmd(TIM5, ENABLE);                                                                        //使能TIME5

}

/*
* 函数名:Time5_NVIC_Configuration
* 描述  :配置嵌套向量中断控制器NVIC
* 输入  :无
* 输出  :无
* 调用  :内部调用
*/
void Time5_NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

}
/*
* 函数名:Time5_Init
* 描述  :触发DAC&ADC的定时器Tim5的初始化
* 输入  :无
* 输出  :无
*/
void Time5_Init(void)
{
        Time5_RCC_Configuration();                                                                            //触发DAC&ADC的定时器Tim5的RCC时钟使能
        Time5_NVIC_Configuration();                                                                          //触发DAC&ADC的定时器Tim5中断向量寄存器初始化
        Time5_Configuration();                                                                                     //触发DAC&ADC的定时器Tim5初始化
}

void TIM5_IRQHandler(void)
{
if(TIM_GetITStatus(TIM5,TIM_IT_Update)!=RESET)
{
  TIM_ClearITPendingBit(TIM5,TIM_IT_Update);
  DMA_Cmd(DMA1_Channel1, ENABLE);                       //打开DMA1通道1  for ADC
  //DAC_DMA2_Init();
  TIM4_DAC_OPEN();                       //开启TIM4,触发DAC和TIM1

}  

}

使用特权

评论回复
板凳
snailsnail|  楼主 | 2013-4-22 15:03 | 只看该作者
在线等!!

使用特权

评论回复
地板
gehgrewh| | 2013-4-22 15:15 | 只看该作者
:(

使用特权

评论回复
5
gehgrewh| | 2013-4-22 15:15 | 只看该作者

使用特权

评论回复
6
jlass| | 2013-4-22 15:33 | 只看该作者
不好查,软硬件都有可能

使用特权

评论回复
7
snailsnail|  楼主 | 2013-4-22 15:58 | 只看该作者
希望帮助解决问题,硬件应该问题不大,主要是那个突变,并不是干扰,就好像两个值是一样的,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝