📄 fft_caculate.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 + -