⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft_caculate.c

📁 基于430单片机的涡街流量计设计程序。可以使用
💻 C
字号:
float FFT_caculate(void)
{
  /*
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  
  DMA_ptr=(unsigned int *)DMA_ADDRESS;
  
  for(i=0;i<NNN+1;i++) dat[i]=0;            // 数组清零
  for(i=0;i<NNN/2+1;i++) Power_spectrum_dat[i]=0;
  
  DMA_ptr1=DMA_ptr;
  for(int i=1;i<NNN+1;i++) 
  {
    dat[i]=(float)*DMA_ptr1;
    DMA_ptr1++;
  }
        
  ADC12_init();
  ADC12CTL0 |= ENC;                         // Conversion enabled
  TACTL |= MC_1;
*/
///////////////////////////////////////
/*
  BCSCTL1=0x00;                         
  BCSCTL2=0x88;
  do				            //wait in loop until crystal is stable
  {
    IFG1&=~OFIFG;
    for (int i = 0xFF; i > 0; i--);         // Time for flag to set           
  }while(OFIFG&IFG1);
*/  
/////////////////////////////////////// 
 /*
  f_fft_caculate=FFT_power_spectrum(); 
  
  LPM1;                                     // Enter LPM1   
///////////////////////////////////////      
  
  ADC12CTL1 &= ~CONSEQ_2;                   // Stop conversion immediately
  ADC12CTL0 &= ~ENC;                        // Disable ADC12 conversion
  ADC12CTL0 &= ~ADC12ON;
  TACTL = MC_0;
  */
/*  
  BCSCTL1=0x84;                         
  BCSCTL2=0x00;
*/  
  /*
  return f_fft_caculate;  
} 
void ADC12_init(void)
{
  DMA_ptr1=DMA_ptr;
  for(i=1;i<NNN+1;i++) 
  {
    *DMA_ptr1=0;
    DMA_ptr1++;
  }
  
  P6SEL |= 0x01;                            // select A0(P6.0) as input
  P6DIR &=~BIT0;
  ADC12MCTL0 = 0x00;                        // choose A0 as input
  ADC12IFG = 0x00;
  ADC12CTL0= ADC12ON + SHT0_1;              // Setup ADC12
  ADC12CTL1 = SHP + CONSEQ_2+ SHS_1;        // Timer triggers sampling, ADC12OSC,单通道多次转换
   
  P2SEL |= BIT3;                            // Set for TimerA1
  P2DIR |= BIT3;

  TACCR0 = 64;                              // Init TACCR0 w/ sample prd=CCR0+1
  TACCR1 = 32;                              // Trig for ADC12 sample & convert
  TACCTL1 = OUTMOD_3;                       // Set/reset
  TACTL = TACLR + TASSEL_1;                 // ACLK, clear TAR

  DMA0SA = ADC12MEM0_;                      // Src address = ADC12 module
  DMA0DA = DMA_ADDRESS;                     // Dst address
  DMA0SZ = 0x400;                           // Size in BYTE
  DMACTL0 = DMA0TSEL_6;                     // ADC12IFGx triggers DMA0
  DMA0CTL = DMADSTINCR_3 + DMAIE + DMAEN;   // Config
}
// DMA interrupt service routine
#pragma vector=DACDMA_VECTOR
__interrupt void DACDMA_ISR (void)
{
  DMA0CTL &= ~DMAIFG;                       // Clear DMA0 interrupt flag
  LPM1_EXIT;
  */
}
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -