chti23/soft/PjtKEIL_Stepdernier/Src/principal.c
2023-05-16 18:16:36 +02:00

100 lines
2 KiB
C

#include "GestionSon.h"
#include "DriverJeuLaser.h"
extern short int LeSignal[];
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k) ;
int Dft_x[64];
short int dma_buf[64];
int score[4]={0,0,0,0};
int compteur[4]={0,0,0,0};
int seuil =65535;//2**16-1
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[0],k);
}
if (Dft_x[17]>seuil){
compteur[0]++;
if (compteur[0]==20){
score[0]++;
compteur[0]=0;
}
}
if (Dft_x[18]>seuil){
compteur[1]++;
if (compteur[1]==20){
score[1]++;
compteur[1]=0;
}
}
if (Dft_x[19]>seuil){
compteur[2]++;
if (compteur[2]==20){
score[2]++;
compteur[2]=0;
}
}
if (Dft_x[20]>seuil){
compteur[3]++;
if (compteur[3]==20){
score[3]++;
compteur[3]=0;
}
}
}
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();
//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 ;
/*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 );
PWM_Init_ff(TIM3,3,720);
GPIO_Configure(GPIOB,0,OUTPUT,ALT_PPULL);
//============================================================================
while (1)
{
}
}