be_chti/projet_keil/Src/principal.c
2020-05-18 17:51:07 +02:00

52 lines
1.5 KiB
C

#include "gassp72.h"
typedef struct {
int position; // index courant dans le tableau d'echantillons
int taille; // nombre d'echantillons de l'enregistrement
short int *son; // adresse de base du tableau d'echantillons en ROM
int resolution; // pleine echelle du modulateur PWM
int Tech_en_Tck; // periode d'ech. audio en periodes d'horloge CPU
} type_etat;
// Variables définies en asm
extern short Son;
extern int LongueurSon;
extern int PeriodeSonMicroSec;
type_etat etat;
int Periode_PWM_en_Tck = 1633;
int Periode_ech_en_Tck = 6532;
void timer_callback(void);
int main(void) {
// 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);
etat.taille = LongueurSon;
etat.son = &Son;
etat.position = 0;
// 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_ech_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_callback);
// lancement du timer
Run_Timer(TIM4);
while (1) {}
}