Fin Tp ASM Partie 2, début Partie Son

This commit is contained in:
Damien Caseau 2023-04-07 15:15:33 +02:00
parent 0a548933bc
commit 4550b7bcf7
5 changed files with 112 additions and 29 deletions

View file

@ -14,9 +14,11 @@
FlagCligno dcd 0
EXPORT FlagCligno
; ===============================================================================================
;Exportation de la fonction timer_callback()
EXPORT timer_callback
;Section ROM code (read only) :
area moncode,code,readonly
@ -24,32 +26,29 @@ FlagCligno dcd 0
timer_callback proc
ldr r0, =FlagCligno ; on affecte à r0 l'adresse de FlagCligno
ldr r1, [r0] ; on affecte à r1 la valeur contenu dans r0 (pointeur)
push{r0}
push{lr}
ldr r1, =FlagCligno ; on affecte à r1 l'adresse de FlagCligno (r1 = pointeur sur FlagCligno)
ldr r2, [r1] ; on affecte à r2 la valeur contenu dans r1
SI
cmp r1, #0 ; si r1 = 0
cmp r2, #0 ; si Flag = 0
bne SINON
ALORS ; on passe r1 à 0 + on allume B1
mov r1, #0
ALORS ; on passe Flag à 1 + on allume B1
mov r2, #1
mov r0, #1 ; sert juste à passer 1 en argument à GPIOB_Set
bl GPIOB_Set
bl FINSI
b FINSI
SINON ; sinon on passe r1 à 1 + on éteint B1
mov r1, #1
mov r2, #1
SINON ; sinon on passe Flag à 0 + on éteint B1
mov r2, #0
mov r0, #1 ; sert juste à passer 1 en argument à GPIOB_Set
bl GPIOB_Clear
FINSI
str r1, [r0] ; on stocke la nouvelle valeur de r1 dans r0 (on met à jour FlagCligno)
ldr r1, =FlagCligno
str r2, [r1] ; on stocke la nouvelle valeur de r2 dans r1 (on met à jour FlagCligno)
pop {PC}
endp
END

View file

@ -18,6 +18,9 @@ CLOCK_Configure();
Timer_1234_Init_ff(TIM4, 7200000); //7 200 000 équivalent à 100ms
//Récupération de la fonction timer_callback() codée en ASM
extern void timer_callback();
// Activation des interruptions issues du Timer 4
@ -38,6 +41,7 @@ GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL);
while (1)
{
}
}

View file

@ -10,10 +10,20 @@
;Section RAM (read write):
area maram,data,readwrite
FlagSon dcb 0
EXPORT FlagSon
SortieSon dcw 0
EXPORT SortieSon
Index dcw 0
EXPORT Index
;LDRD{cond} Rt, Rt2, [Rn, ±Rm] ; register offset, doubleword ; ARM only <-- INSTRUCTION A UTILISER
; ===============================================================================================
;Exportation de la fonction callbackson()
EXPORT callbackson
@ -22,8 +32,29 @@
; écrire le code ici
callbackson proc
push{lr}
ldr r1, =FlagSon ; on affecte à r1 l'adresse de FlagSon (r1 = pointeur sur FlagSon)
ldr r2, [r1] ; on affecte à r2 la valeur contenu dans r1
SI
cmp r2, #0 ; si Flag = 0
bne SINON
ALORS ; on passe Flag à 1 + on allume B1
mov r2, #1
b FINSI
SINON ; sinon on passe Flag à 0 + on éteint B1
mov r2, #0
FINSI
ldr r1, =FlagSon
str r2, [r1] ; on stocke la nouvelle valeur de r2 dans r1 (on met à jour FlagSon)
pop {PC}
endp

View file

@ -14,13 +14,22 @@ int main(void)
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
// configuration du Timer 4 en débordement 91µs
Timer_1234_Init_ff(TIM4, 6552); //6552 équivalent à 91µs
//Récupération de la fonction timer_callback() codée en ASM
extern void callbackson();
// Activation des interruptions issues du Timer 4
// Association de la fonction à exécuter lors de l'interruption : timer_callback
// cette fonction (si écrite en ASM) doit être conforme à l'AAPCS
Active_IT_Debordement_Timer(TIM4, 2, callbackson);
//============================================================================
while (1)
{
}

View file

@ -10,7 +10,7 @@
<TargetName>Simu</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
@ -410,6 +410,21 @@
</File>
</Files>
</Group>
<Group>
<GroupName>Son</GroupName>
<Files>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
</Group>
@ -819,6 +834,21 @@
</File>
</Files>
</Group>
<Group>
<GroupName>Son</GroupName>
<Files>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
<GroupOption>
@ -897,7 +927,7 @@
<TargetName>CibleSondeST</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
@ -1297,6 +1327,21 @@
</File>
</Files>
</Group>
<Group>
<GroupName>Son</GroupName>
<Files>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
</Group>
@ -1322,12 +1367,7 @@
<LayerInfo>
<Layers>
<Layer>
<LayName>&lt;Project Info&gt;</LayName>
<LayDesc></LayDesc>
<LayUrl></LayUrl>
<LayKeys></LayKeys>
<LayCat></LayCat>
<LayLic></LayLic>
<LayName>StepSon</LayName>
<LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark>
</Layer>