#include "DriverJeuLaser.h" extern short int LeSignal[]; extern int DFT_ModuleAuCarre( short int * Signal64ech, char k) ; int Dft_x[64]; int compteur[6]={0,0,0,0,0,0}; int score[6]={0,0,0,0,0,0}; short int dma_buf[64]; int seuil=65535; void callback_Systick(void){ //démarrage de la DMA sur 64 échantillons : Start_DMA1(64); //attente de la fin de DMA : Wait_On_End_Of_DMA1(); //arrêter la DMA Stop_DMA1; for(char k=0 ; k<64 ; k++){ Dft_x[k]=DFT_ModuleAuCarre(dma_buf,k); if (Dft_x[k]>seuil) {switch (k){ case 17: compteur[0]++; break; case 18: compteur[1]++; break; case 19: compteur[2]++; break; case 20: compteur[3]++; break; case 23: compteur[4]++; break; case 24: compteur[5]++; break; } for (int i=0;i<6;i++){ if(compteur[i]>10){ score[i]++; } } } } } 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(); /*initialisation du timer*/ /*GBio*/ /*DFT*/ //for (char k=0;k<64;k++){ // Dft_x[k]=DFT_ModuleAuCarre(&LeSignal[0],k); //} /*ADC*/ //'activer l'ADC1 en indiquant la durée de capture du signal Init_TimingADC_ActiveADC_ff( ADC1, 72 ); //choisir la pin d'entrée PA2 Single_Channel_ADC( ADC1, 2 ); // configurer le timer 2 Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 ); //configurer la DMA Init_ADC1_DMA1( 0, dma_buf ); /*configuration du timer*/ //régler la périodicité du timer //Periode_ticks = 5ms *72 périodes d'horloge à 72MHz donne 1µs=5ms*72Mhz Systick_Period_ff(36E4); //configurer le timer Systick_Prio_IT( 3,callback_Systick ); //lancer le systick SysTick_On ; //lancer le systick SysTick_Enable_IT ; //============================================================================ while (1) { } }