chti23_Tom_Nathan/soft/PjtKEIL_StepFinal/Src/principal.c
2023-04-21 18:15:38 +02:00

64 lines
1.5 KiB
C

#include "DriverJeuLaser.h"
#include "module_carre.h"
#define NB_JOUEURS 6
#define SEUIL_ACCEPT_SIGNAL 0x1200
#define FREQ_TO_INT(f) (64 * f / 320)
short int dma_buff[64];
int module_dft[NB_JOUEURS];
int score_joueurs[NB_JOUEURS];
extern short LeSignal;
int freq_joueurs[NB_JOUEURS] = {FREQ_TO_INT(85), FREQ_TO_INT(90), FREQ_TO_INT(95), FREQ_TO_INT(100), FREQ_TO_INT(115), FREQ_TO_INT(120)};
void systick_func() {
int module;
Start_DMA1(64);
Wait_On_End_Of_DMA1();
Stop_DMA1;
for (int i = 0; i < NB_JOUEURS; ++i) {
module = DFT_ModuleAuCarre(dma_buff, freq_joueurs[i]);
module_dft[i] = module;
if (module > SEUIL_ACCEPT_SIGNAL) {
score_joueurs[i]++;
}
}
}
extern short LeSignal;
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();
// 5ms = n * 1/72MHz => n = 5ms * 72MHz = 360 * 10 ^ 6
Systick_Period_ff(360000000);
Systick_Prio_IT(0, systick_func);
SysTick_On;
SysTick_Enable_IT;
Init_TimingADC_ActiveADC_ff( ADC1, 72 );
Single_Channel_ADC( ADC1, 2 );
// 320 kHz = 72MHz / n => n = 72MHz / 320kHz = 225
Init_Conversion_On_Trig_Timer_ff(ADC1, TIM2_CC2, 225);
Init_ADC1_DMA1(0, dma_buff);
for (int i = 0; i < NB_JOUEURS; ++i) {
score_joueurs[i] = 0;
}
//============================================================================
while (1)
{
}
}