;AFONSO Perrine LARTIGUE Auriane thumb area madata, data, readwrite flag dcd 0 TIM3_CCR3 equ 0x4000043C ; adresse registre PWM E_POS equ 0 E_TAI equ 4 E_SON equ 8 E_RES equ 12 E_PER equ 16 area moncode, code, readonly export timer_callback import etat import Son import LongueurSon import PeriodeSonMicroSec ;GPIOB_BSRR equ 0x40010C10 ; Bit Set/Reset registe timer_callback proc push{r4} ldr r2, =etat ;r2= @etat ldr r0, [r2 , #E_POS] ; r0 = position ldr r1, [r2 , #E_TAI] ; r1 = taille cmp r0, r1; on compare taille et position beq fin ; taille = position different ldr r3 , [r2,#E_SON] ; r3 = @son ldrsh r4 , [r3, r0, lsl #0x1] ; r4 = son ; ajout composante continue: 2^15 add r4, #0x8000 ldr r12 , [r2 ,#E_RES] ; r12 = resolution mul r4 , r12 ; on multiplie par le facteur d'échelle mov r12,#0xFFFF cmp r4, r12 ; la valeur échatillon doit etre compris entre 0 et 2^16 - 1 blo registre udiv r4, r12 registre ; échantillon copié dans le registre TIM3_CCR3 ldr r12 , =TIM3_CCR3 str r4 , [r12] ; on incremente la position add r0 , #0x1 ; str r0 , [r2 , #E_POS] fin pop{r4} bx lr endp end