diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b7caa80 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +1.1/Project.uvoptx +1.1/Project.uvprojx +1.1/Src/startup-rvds.s \ No newline at end of file diff --git a/1.1/Src/gen_signal.s b/1.1/Src/gen_signal.s new file mode 100644 index 0000000..e7b2674 --- /dev/null +++ b/1.1/Src/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/1.1/Src/principal.c b/1.1/Src/principal.c new file mode 100644 index 0000000..62cbd53 --- /dev/null +++ b/1.1/Src/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) { + + } +} + +