#include "DriverJeuLaser.h" extern int PeriodeSonMicroSec; extern void CallBackSon(void); extern int TableauIndex; extern int LongeurSon; 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(); int nbCycles = PeriodeSonMicroSec * 72; //PeriodeSonMicroSec * 0.000001 * 72 000 000 Timer_1234_Init_ff( TIM4, nbCycles); //avant de config le timer on va mettre la taille de l'index supérieur à la taille du fichier audio //comme ça, le logiciel ne va pas jouer le son de suite TableauIndex = LongeurSon; Active_IT_Debordement_Timer( TIM4, 2, CallBackSon ); PWM_Init_ff( TIM3, 3, 720); //initialisation de la PWM sur canal 3 timer 3 //on met période tick à 720 sur une clock à 72 Mhz //période de 720/72.10^6 = 72 / 72.10^5 = 1 / 10^5 = 10^-5 = 10 µs // donc fréquence de 10^5 Hz = 100 kHz GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL); //on l'appelle en assembleur //PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks); //============================================================================ while (1) { } } void jouerSon() { //on remet l'index du tableau à zéro, du coup ça va jouer une fois le son TableauIndex = 0; }