BE-INTE/Objectif 3/Src/principal.c
2020-05-29 13:12:50 +02:00

44 lines
1.2 KiB
C

#include "etat.h"
#include "gassp72.h"
#define Periode_PWM_en_Tck 360 //Correspond à une fréquence de 20kHz
//on se retrouve sur l'oscillo à une fréquence d'environ 36Hz
extern short Son;
extern int LongueurSon;
extern int PeriodeSonMicroSec;
type_etat etat;
void timer(void);
int main(void)
{
etat.son=&Son;
etat.taille=LongueurSon;
int Periode_en_Tck;
Periode_en_Tck=PeriodeSonMicroSec*72;
etat.periode_ticks=Periode_en_Tck;
etat.position=2;
// activation de la PLL qui multiplie la fréquence du quartz par 9
CLOCK_Configure();
// config port PB0 pour être utilisé par TIM3-CH3
GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
// config TIM3-CH3 en mode PWM
etat.resolution = PWM_Init_ff( TIM3, 3, Periode_PWM_en_Tck );
// initialisation du timer 4
// Periode_en_Tck doit fournir la durée entre interruptions,
// exprimée en périodes Tck de l'horloge principale du STM32 (72 MHz)
Timer_1234_Init_ff( TIM4, Periode_en_Tck );
// enregistrement de la fonction de traitement de l'interruption timer
// ici le 2 est la priorité, timer_callback est l'adresse de cette fonction, a créér en asm,
// cette fonction doit être conforme à l'AAPCS
Active_IT_Debordement_Timer( TIM4, 2, timer );
// lancement du timer
Run_Timer( TIM4 );
Run_Timer( TIM3);
while (1)
{
}
}