72 lines
1.4 KiB
C
72 lines
1.4 KiB
C
|
|
|
|
#include "DriverJeuLaser.h"
|
|
|
|
//short int = 16 bit signé
|
|
//char = 8 bit non signé (0 à 255)
|
|
extern int DFT_ModuleAuCarre(short int*, char);
|
|
|
|
extern short int LeSignal;
|
|
|
|
short int dma_buff[64] ;
|
|
|
|
int res[64];
|
|
|
|
void faire_dft() {
|
|
|
|
//on fait la mesure
|
|
|
|
Start_DMA1(64);
|
|
Wait_On_End_Of_DMA1();
|
|
Stop_DMA1;
|
|
|
|
|
|
//on l'exploite
|
|
char k;
|
|
|
|
for(k=0;k<64;k++){
|
|
res[k] = DFT_ModuleAuCarre(dma_buff, k);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
int main(void)
|
|
{
|
|
|
|
// ===========================================================================
|
|
// ============= INIT PERIPH (faites qu'une seule fois) =====================
|
|
// ===========================================================================
|
|
|
|
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
|
CLOCK_Configure();
|
|
|
|
// 72Mhz pour 1s
|
|
// ? ticks pour 5*10^-3 s
|
|
// règle de trois.
|
|
|
|
//on décide de faire une DFT toutes les 5 ms
|
|
Systick_Period_ff(360000);
|
|
Systick_Prio_IT(1,faire_dft);
|
|
SysTick_On;
|
|
SysTick_Enable_IT; // activer l'interruption configurée
|
|
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
|
|
|
//il faut configurer la fréquence d'échantillonage de l'ADC
|
|
Init_TimingADC_ActiveADC_ff(ADC1,72);
|
|
Single_Channel_ADC(ADC1,2);
|
|
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
|
Init_ADC1_DMA1( 0, dma_buff );
|
|
|
|
|
|
//============================================================================
|
|
|
|
|
|
while (1)
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
|