chti_esposito_elouali/soft/PjtKEIL_StepFinal/Src/principal.c
2023-05-17 00:55:50 +03:00

76 lines
2 KiB
C

#include <stdio.h>
#include "DriverJeuLaser.h"
//#include "GestionSon.h"
extern short LeSignal ;
extern int DFT_ModuleAuCarre(short int * Signal64ech, char k); //à changer quand la fonction moduleaaucarré sera créée
short tabValeurs[64];//signal capté par l'ADC
int tabResultat[64];
int score[4]={0,0,0,0};
int compteTouche[4] = {0,0,0,0};
void callback_systick(void){
Start_DMA1(64); //Démarrage sur 64 échantillons
Wait_On_End_Of_DMA1();
Stop_DMA1;
for(int i=0 ;i<64; i++){
tabResultat[i]=DFT_ModuleAuCarre(tabValeurs,i);
}
for(int j=0;j<4;j++){ //gestion du tableau de score
if (tabResultat[j+17]>5 && compteTouche[j]<3){
compteTouche[j]++;
if (compteTouche[j] == 3)
score[j]++;
// StartSon();
}else if (tabResultat[j+17]<100 && compteTouche[j]>=3){
compteTouche[j] =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();
//Configuration du Systick
Systick_Period_ff(360000); // x/(72*10^6)=5ms car fréquence horloge = 72MHz
Systick_Prio_IT(2,callback_systick);
SysTick_On;
SysTick_Enable_IT;
//Configuration de l'ADC et DMA
Init_TimingADC_ActiveADC_ff(ADC1, 72); //On veut une periode d'1us donc 72 ticks d'horloge dont fréquence = 72Mhz
Single_Channel_ADC(ADC1, 2); //2 correpond à la pin d'entrée PA2
Init_Conversion_On_Trig_Timer_ff(ADC1,TIM2_CC2, 225); //ligne CC2 du timer 2, fréquence 320 kHz donc 255 ticks d'horloge
Init_ADC1_DMA1(0,tabValeurs); //valeur 0 = remplissage linéaire de la RAM alors que 1 est un remplissage circulaire
//============================================================================
//int vf = DFT_ModuleAuCarre(&LeSignal,1);
while (1)
{
}
}