#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) { } }