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

@ -15,6 +15,8 @@ FlagCligno dcd 0
EXPORT FlagCligno EXPORT FlagCligno
; =============================================================================================== ; ===============================================================================================
;Exportation de la fonction timer_callback()
EXPORT timer_callback
@ -24,32 +26,29 @@ FlagCligno dcd 0
timer_callback proc 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} 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 SI
cmp r1, #0 ; si r1 = 0 cmp r2, #0 ; si Flag = 0
bne SINON bne SINON
ALORS ; on passe r1 à 0 + on allume B1 ALORS ; on passe Flag à 1 + on allume B1
mov r1, #0
mov r2, #1 mov r2, #1
mov r0, #1 ; sert juste à passer 1 en argument à GPIOB_Set
bl GPIOB_Set bl GPIOB_Set
bl FINSI b FINSI
SINON ; sinon on passe r1 à 1 + on éteint B1 SINON ; sinon on passe Flag à 0 + on éteint B1
mov r1, #1 mov r2, #0
mov r2, #1 mov r0, #1 ; sert juste à passer 1 en argument à GPIOB_Set
bl GPIOB_Clear bl GPIOB_Clear
FINSI 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} pop {PC}
endp endp
END END

View file

@ -18,6 +18,9 @@ CLOCK_Configure();
Timer_1234_Init_ff(TIM4, 7200000); //7 200 000 équivalent à 100ms 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 // Activation des interruptions issues du Timer 4
@ -38,6 +41,7 @@ GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL);
while (1) while (1)
{ {
} }
} }

View file

@ -10,10 +10,20 @@
;Section RAM (read write): ;Section RAM (read write):
area maram,data,readwrite 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 ; é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 // Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure(); 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) while (1)
{ {
} }

View file

@ -10,7 +10,7 @@
<TargetName>Simu</TargetName> <TargetName>Simu</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <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> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
@ -410,6 +410,21 @@
</File> </File>
</Files> </Files>
</Group> </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> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
</Group> </Group>
@ -819,6 +834,21 @@
</File> </File>
</Files> </Files>
</Group> </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> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
<GroupOption> <GroupOption>
@ -897,7 +927,7 @@
<TargetName>CibleSondeST</TargetName> <TargetName>CibleSondeST</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <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> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
@ -1297,6 +1327,21 @@
</File> </File>
</Files> </Files>
</Group> </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> <Group>
<GroupName>::CMSIS</GroupName> <GroupName>::CMSIS</GroupName>
</Group> </Group>
@ -1322,12 +1367,7 @@
<LayerInfo> <LayerInfo>
<Layers> <Layers>
<Layer> <Layer>
<LayName>&lt;Project Info&gt;</LayName> <LayName>StepSon</LayName>
<LayDesc></LayDesc>
<LayUrl></LayUrl>
<LayKeys></LayKeys>
<LayCat></LayCat>
<LayLic></LayLic>
<LayTarg>0</LayTarg> <LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark> <LayPrjMark>1</LayPrjMark>
</Layer> </Layer>