From 76b768670aef22df57e6da420b345e7c414e96ac Mon Sep 17 00:00:00 2001 From: Yohan Simard Date: Mon, 16 Mar 2020 12:31:01 +0100 Subject: [PATCH] =?UTF-8?q?Transf=C3=A9rer=20les=20fichiers=20vers=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit première séance --- gen_signal.s | 30 ++++++++++++++++++++++++++++++ principal.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 gen_signal.s create mode 100644 principal.c diff --git a/gen_signal.s b/gen_signal.s new file mode 100644 index 0000000..edf641d --- /dev/null +++ b/gen_signal.s @@ -0,0 +1,30 @@ + thumb + area moncode, code, readonly + +GPIOB_BSRR equ 0x40010C10 ; Bit Set/Reset register + extern current_value + export timer_callback + +timer_callback proc + ldr r2, =current_value + ldr r0, [r2] + ldr r3, =GPIOB_BSRR + cbnz r0, zero + +; mise a 1 de PB1 + mov r1, #0x00000002 + str r1, [r3] + mov r1, #1 + str r1, [r2] + bx lr + +; mise a 0 de PB1 +zero mov r1, #0x00020000 + str r1, [r3] + mov r1, #0 + str r1, [r2] + bx lr + + endp + end +; N.B. le registre BSRR est write-only, on ne peut pas le relire \ No newline at end of file diff --git a/principal.c b/principal.c new file mode 100644 index 0000000..17003c5 --- /dev/null +++ b/principal.c @@ -0,0 +1,32 @@ +#include + +int periode_en_tck = 100; + +int current_value = 0; + +void timer_callback(void); + + +int main(void) { + // activation de la PLL qui multiplie la fréquence du quartz par 9 + CLOCK_Configure(); + // config port PB1 pour être utilisé en sortie + GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL); + // 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_callback ); + // lancement du timer + Run_Timer( TIM4 ); + + + while (1) { + + } +} + +