Compare commits

..

7 commits

Author SHA1 Message Date
Bensebaa
0e53a0df15 derniereSeance 2023-05-24 15:20:35 +02:00
Bensebaa
b3d1ca002b dft finie+ copie reperetoire dft reel 2023-05-22 09:58:47 +02:00
Bensebaa
0377860585 dft v1 2023-04-19 12:15:29 +02:00
Bensebaa
39515121e3 stepson final 2023-04-19 09:42:18 +02:00
Bensebaa
5443712b1c StepSon fin 2023-04-14 16:55:49 +02:00
Bensebaa
0fc477a68d Pwm wip 2023-04-12 15:25:52 +02:00
Bensebaa
1f9ac64237 commit stepson 2023-04-07 15:26:26 +02:00
65 changed files with 22777 additions and 133 deletions

1
.gitignore vendored
View file

@ -108,4 +108,3 @@ RTE
# To explicitly override the above, define any exceptions here; e.g.:
# !my_customized_scatter_file.sct
*.slprj

View file

@ -1,40 +1,31 @@
clear all;
close all;
%% Paramêtres utilisatrice
%
T = 0.25; % Fenêtre d'observation [s]
M=32; % Nombre d'échantillons dans la fenêtre
Fsin = 4 ; % Fréquence d'un sinus [Hz]
%% Paramêtres déduits
%% Paramètres
T = 0.25; % Fenêtre d'observation
M=32; % Nombre d'échantillons dans la fenêtre
%% Paramètres déduits
Te = T/M; % Période d'échantillonnage
Tsim = T-Te; % Instant final de simulation
Fsin = 4 ;
%% Calculs préliminaires
Te = T/M; % Période d'échantillonnage [s]
Tsim = T-Te; % Instant final de simulation avec M points [s]
fprintf("Fréquence = %f Hz", 1/Te)
%% Calculs préliminaires
%% Lancement de simulink
out=sim("simDFT")
tic
out=sim("simDFT");
toc
%% Visualisations temporelle
plot(out.sin_continu,'.-');
hold on;
t = out.sin_echanti.Time;
sig = out.sin_echanti.Data;
stem(t, sig , 'o');
plot(out.sin_echanti,'o');
grid on;
%% Calcul DFT
Tfd = fft(sig);
abscisses=1:length(Tfd);
%% visualisation DFT
figure();
figure()
plot(abscisses,abs(Tfd),'o-');
ylabel("Module Transformée de Fourier")
xlabel("??? indices de tableau Matlab de 1 à 32 ???")

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,345 @@
/**
* Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
*
* GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
* Modifs :
* enlèvement de tout ce qui est inutile dans le .h
* ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
* - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
* - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
*
* ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
* PWM_Set_Value_On_TIM3_C3( int Val)
* permet en ASM ou en C de fixer la valeur de PWM
* Ajout de commentaires
*/
#ifndef DRIVERJEULASER_H__
#define DRIVERJEULASER_H__
#include "stm32f10x.h"
//**********************************************************************************************************
//--------------------- CONFIGURATION CLOCK DU STM32 --------------------------------------
//**********************************************************************************************************
/**
* @brief Configure l'ensemble des horloges du uC
* @note horloge systeme (config statique a 72 MHz pour le STM32F103)
* @param None
* @retval None
*/
void CLOCK_Configure(void);
//**********************************************************************************************************
//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------
//**********************************************************************************************************
/**
* @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée
* @note L' horloge des 4 timers a une fréquence de 72MHz
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
/**
* Macros de base pour utiliser les timers
*/
// bloque le timer
#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
// Lance timer
#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
/**
* @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer
* @note
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
* @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
* @retval None
*/
void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
//*********************************************************************************************************
//--------------------- PWM TIM1 to TIM 4 ------------------------------
//*********************************************************************************************************
/**
* @brief Configure un timer en PWM
* @note
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param voie : un des 4 canaux possibles 1 à 4.
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé
*/
unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
/**
* @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
* est donc : rcy = Thaut_ticks / Periode_ticks
* @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
* @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
* @retval None
*/
void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
//**********************************************************************************************************
//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
//**********************************************************************************************************
/**
* @brief Configure le timer Systick avec une périodicité donnée
* @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
* ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
* Ce timer est un 24 bits
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
void Systick_Period_ff( unsigned int Periode_ticks );
/**
* @brief Associe une fonction d'interruption (callback) lors du débordement du Systick
* @note
* @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
* @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
* @retval None
*/
void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
/**
* Macros de base pour utiliser le Systick
*/
#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
//**********************************************************************************************************
//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
//**********************************************************************************************************
/**
* @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
* de fermeture du switch d'acquisition
* @note
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
* exemple pour 1µs on choisira 72.
* @retval Nombre de Tick réellement pris en compte
*/
unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
/**
* @brief Sélectionne la voie à convertir
* @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Voie_ADC : 1 à 15
* @retval None
*/
void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
/**
* @brief Permet lier le déclenchement au débordement d'un timer, spécifie également
* la période de débordement du timer
* @note pas besoin de régler le timer avec une autre fonction dédiée timer
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
// param pour Source :
#define TIM1_CC1 0
#define TIM1_CC2 1
#define TIM1_CC3 2
#define TIM2_CC2 3
#define TIM4_CC4 5
void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
//**********************************************************************************************************
//--------------------- ANALOG INPUT ADC & DMA ------------------------------
//**********************************************************************************************************
/**
* @brief Permer de lier l'ADC à un tableau en RAM pour une DMA
* @note
* @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
* si '1' le ptr d'@ se recale à celle du début.
* @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
* @retval None
*/
void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
/**
* @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
* dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1
* @note
* @param NbEchDMA est le nombre d'échantillons à stocker.
* @retval None
*/
void Start_DMA1( u16 NbEchDMA );
// arret DMA
#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
/**
* @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition
* et du nombre d'echantillons
* @note fonction d'attente (bloquante)
* @param None
* @retval None
*/
void Wait_On_End_Of_DMA1(void);
//**********************************************************************************************************
//--------------------- GPIO ------------------------------
//**********************************************************************************************************
/**
* @brief Initialisation d'un GPIO (A à C), pin x.
* peut être configuré :
* -> Input ou output
* -> architecture technologique (push-pull, open drain...)
* @note
* @param Port : GPIOA, GPIOB, GPIOC
* @param Broche : 0 à 15
* @param Sens : INPUT ou OUTPUT
* @param Techno : voir define ci dessous
* @retval 1 erreur, 0 si OK
*/
// Sens
#define INPUT 'i'
#define OUTPUT 'o'
// Techno pour pin en entrée (INPUT)
#define ANALOG 0
#define INPUT_FLOATING 1
#define INPUT_PULL_DOWN_UP 2
// Techno pour pin en sortie (OUTPUT)
#define OUTPUT_PPULL 0
#define OUTPUT_OPDRAIN 1
#define ALT_PPULL 2
#define ALT_OPDRAIN 3
// Exemple :
// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
// Place le bit 8 du port B en sortie Push-pull
char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
/**
* @brief Mise à 1 d'une broche GPIO
* @note Une fonction par GPIO
* @param Broche : 0 à 15
* @retval None
*/
void GPIOA_Set(char Broche);
void GPIOB_Set(char Broche);
void GPIOC_Set(char Broche);
/**
* @brief Mise à 0 d'une broche GPIO
* @note Une fonction par GPIO
* @param Broche : 0 à 15
* @retval None
*/
void GPIOA_Clear(char Broche);
void GPIOB_Clear(char Broche);
void GPIOC_Clear(char Broche);
#endif

View file

@ -0,0 +1,56 @@
; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
; Accès en aux fonctions suivantes :
; GPIO :
; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
; PWM :
;/**
; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
; * est donc : rcy = Thaut_ticks / Periode_ticks
; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
; * @retval None
; */
;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
import PWM_Set_Value_TIM3_Ch3
;/**
; * @brief Mise à 1 d'une broche GPIO
; * @note Une fonction par GPIO
; * @param Broche : 0 à 15
; * @retval None
; */
;void GPIOA_Set(char Broche);
import GPIOA_Set
;void GPIOB_Set(char Broche);
import GPIOB_Set
;void GPIOC_Set(char Broche);
import GPIOC_Set
;/**
; * @brief Mise à 0 d'une broche GPIO
; * @note Une fonction par GPIO
; * @param Broche : 0 à 15
; * @retval None
; */
;void GPIOA_Clear(char Broche);
import GPIOA_Clear
;void GPIOB_Clear(char Broche);
import GPIOB_Clear
;void GPIOC_Clear(char Broche);
import GPIOC_Clear
end

View file

@ -0,0 +1,215 @@
PRESERVE8
THUMB
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
IMPORT LeSignal
export DFT_ModuleAuCarre
;Section RAM (read write):
area maram,data,readwrite
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
DFT_ModuleAuCarre proc
push{r4,r7,r5,r6}
;r0 = @signal
;r1 = k
;ldr r2,=TabCos;@tabcos
mov r3,#0 ; r3 val indice signal
mov r5,#0 ; somme tabCos
mov r6,#0 ; somme tabSin
boucle
; partie reelle
ldrh r7,[r0,r3, lsl #1];val signal format 1.12
mul r4,r3,r1 ; p=k*n (indice tabCos)
and r4,r4,#63
ldr r2,=TabCos
ldrsh r4,[r2,r4, lsl #1];val tabCos format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==>format 2.27
add r5,r7
; partie imaginaire
ldrh r7,[r0,r3, lsl #1];val signal format 1.12
mul r4,r3,r1 ;p=k*n (indice tabSin)
and r4,r4,#63 ;modulo 63
ldr r2,=TabSin
ldrsh r4,[r2,r4, lsl #1];val tabSin format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==> format 2.27 ou 5.27
add r6,r7
add r3,#1
cmp r3,#63
ble boucle
;fin boucle
;mul r0,r5,r5 ; ==> 2.27 * 2.27 = 4.54 ==>10.54 (64bits)
asr r5,#16 ; r5 : 5.11
mul r5,r5 ; 10.22
asr r6,#16 ; r6 : 5.11
mul r0,r6,r6 ; 10.22
add r0,r5
pop{r4,r7,r5,r6}
bx lr
endp
;Section ROM code (read only) :
AREA Trigo, DATA, READONLY
; codage fractionnaire 1.15
TabCos
DCW 32767 ; 0 0x7fff 0.99997
DCW 32610 ; 1 0x7f62 0.99518
DCW 32138 ; 2 0x7d8a 0.98077
DCW 31357 ; 3 0x7a7d 0.95694
DCW 30274 ; 4 0x7642 0.92389
DCW 28899 ; 5 0x70e3 0.88193
DCW 27246 ; 6 0x6a6e 0.83148
DCW 25330 ; 7 0x62f2 0.77301
DCW 23170 ; 8 0x5a82 0.70709
DCW 20788 ; 9 0x5134 0.63440
DCW 18205 ; 10 0x471d 0.55557
DCW 15447 ; 11 0x3c57 0.47141
DCW 12540 ; 12 0x30fc 0.38269
DCW 9512 ; 13 0x2528 0.29028
DCW 6393 ; 14 0x18f9 0.19510
DCW 3212 ; 15 0x0c8c 0.09802
DCW 0 ; 16 0x0000 0.00000
DCW -3212 ; 17 0xf374 -0.09802
DCW -6393 ; 18 0xe707 -0.19510
DCW -9512 ; 19 0xdad8 -0.29028
DCW -12540 ; 20 0xcf04 -0.38269
DCW -15447 ; 21 0xc3a9 -0.47141
DCW -18205 ; 22 0xb8e3 -0.55557
DCW -20788 ; 23 0xaecc -0.63440
DCW -23170 ; 24 0xa57e -0.70709
DCW -25330 ; 25 0x9d0e -0.77301
DCW -27246 ; 26 0x9592 -0.83148
DCW -28899 ; 27 0x8f1d -0.88193
DCW -30274 ; 28 0x89be -0.92389
DCW -31357 ; 29 0x8583 -0.95694
DCW -32138 ; 30 0x8276 -0.98077
DCW -32610 ; 31 0x809e -0.99518
DCW -32768 ; 32 0x8000 -1.00000
DCW -32610 ; 33 0x809e -0.99518
DCW -32138 ; 34 0x8276 -0.98077
DCW -31357 ; 35 0x8583 -0.95694
DCW -30274 ; 36 0x89be -0.92389
DCW -28899 ; 37 0x8f1d -0.88193
DCW -27246 ; 38 0x9592 -0.83148
DCW -25330 ; 39 0x9d0e -0.77301
DCW -23170 ; 40 0xa57e -0.70709
DCW -20788 ; 41 0xaecc -0.63440
DCW -18205 ; 42 0xb8e3 -0.55557
DCW -15447 ; 43 0xc3a9 -0.47141
DCW -12540 ; 44 0xcf04 -0.38269
DCW -9512 ; 45 0xdad8 -0.29028
DCW -6393 ; 46 0xe707 -0.19510
DCW -3212 ; 47 0xf374 -0.09802
DCW 0 ; 48 0x0000 0.00000
DCW 3212 ; 49 0x0c8c 0.09802
DCW 6393 ; 50 0x18f9 0.19510
DCW 9512 ; 51 0x2528 0.29028
DCW 12540 ; 52 0x30fc 0.38269
DCW 15447 ; 53 0x3c57 0.47141
DCW 18205 ; 54 0x471d 0.55557
DCW 20788 ; 55 0x5134 0.63440
DCW 23170 ; 56 0x5a82 0.70709
DCW 25330 ; 57 0x62f2 0.77301
DCW 27246 ; 58 0x6a6e 0.83148
DCW 28899 ; 59 0x70e3 0.88193
DCW 30274 ; 60 0x7642 0.92389
DCW 31357 ; 61 0x7a7d 0.95694
DCW 32138 ; 62 0x7d8a 0.98077
DCW 32610 ; 63 0x7f62 0.99518
TabSin
DCW 0 ; 0 0x0000 0.00000
DCW 3212 ; 1 0x0c8c 0.09802
DCW 6393 ; 2 0x18f9 0.19510
DCW 9512 ; 3 0x2528 0.29028
DCW 12540 ; 4 0x30fc 0.38269
DCW 15447 ; 5 0x3c57 0.47141
DCW 18205 ; 6 0x471d 0.55557
DCW 20788 ; 7 0x5134 0.63440
DCW 23170 ; 8 0x5a82 0.70709
DCW 25330 ; 9 0x62f2 0.77301
DCW 27246 ; 10 0x6a6e 0.83148
DCW 28899 ; 11 0x70e3 0.88193
DCW 30274 ; 12 0x7642 0.92389
DCW 31357 ; 13 0x7a7d 0.95694
DCW 32138 ; 14 0x7d8a 0.98077
DCW 32610 ; 15 0x7f62 0.99518
DCW 32767 ; 16 0x7fff 0.99997
DCW 32610 ; 17 0x7f62 0.99518
DCW 32138 ; 18 0x7d8a 0.98077
DCW 31357 ; 19 0x7a7d 0.95694
DCW 30274 ; 20 0x7642 0.92389
DCW 28899 ; 21 0x70e3 0.88193
DCW 27246 ; 22 0x6a6e 0.83148
DCW 25330 ; 23 0x62f2 0.77301
DCW 23170 ; 24 0x5a82 0.70709
DCW 20788 ; 25 0x5134 0.63440
DCW 18205 ; 26 0x471d 0.55557
DCW 15447 ; 27 0x3c57 0.47141
DCW 12540 ; 28 0x30fc 0.38269
DCW 9512 ; 29 0x2528 0.29028
DCW 6393 ; 30 0x18f9 0.19510
DCW 3212 ; 31 0x0c8c 0.09802
DCW 0 ; 32 0x0000 0.00000
DCW -3212 ; 33 0xf374 -0.09802
DCW -6393 ; 34 0xe707 -0.19510
DCW -9512 ; 35 0xdad8 -0.29028
DCW -12540 ; 36 0xcf04 -0.38269
DCW -15447 ; 37 0xc3a9 -0.47141
DCW -18205 ; 38 0xb8e3 -0.55557
DCW -20788 ; 39 0xaecc -0.63440
DCW -23170 ; 40 0xa57e -0.70709
DCW -25330 ; 41 0x9d0e -0.77301
DCW -27246 ; 42 0x9592 -0.83148
DCW -28899 ; 43 0x8f1d -0.88193
DCW -30274 ; 44 0x89be -0.92389
DCW -31357 ; 45 0x8583 -0.95694
DCW -32138 ; 46 0x8276 -0.98077
DCW -32610 ; 47 0x809e -0.99518
DCW -32768 ; 48 0x8000 -1.00000
DCW -32610 ; 49 0x809e -0.99518
DCW -32138 ; 50 0x8276 -0.98077
DCW -31357 ; 51 0x8583 -0.95694
DCW -30274 ; 52 0x89be -0.92389
DCW -28899 ; 53 0x8f1d -0.88193
DCW -27246 ; 54 0x9592 -0.83148
DCW -25330 ; 55 0x9d0e -0.77301
DCW -23170 ; 56 0xa57e -0.70709
DCW -20788 ; 57 0xaecc -0.63440
DCW -18205 ; 58 0xb8e3 -0.55557
DCW -15447 ; 59 0xc3a9 -0.47141
DCW -12540 ; 60 0xcf04 -0.38269
DCW -9512 ; 61 0xdad8 -0.29028
DCW -6393 ; 62 0xe707 -0.19510
DCW -3212 ; 63 0xf374 -0.09802
END

View file

@ -0,0 +1,68 @@
AREA Signal, DATA, READONLY
export LeSignal
LeSignal
DCW 0x0fff ; 0 4095 0.99976
DCW 0x0ff6 ; 1 4086 0.99756
DCW 0x0fd9 ; 2 4057 0.99048
DCW 0x0fa8 ; 3 4008 0.97852
DCW 0x0f64 ; 4 3940 0.96191
DCW 0x0f0e ; 5 3854 0.94092
DCW 0x0ea7 ; 6 3751 0.91577
DCW 0x0e2f ; 7 3631 0.88647
DCW 0x0da8 ; 8 3496 0.85352
DCW 0x0d13 ; 9 3347 0.81714
DCW 0x0c72 ; 10 3186 0.77783
DCW 0x0bc5 ; 11 3013 0.73560
DCW 0x0b10 ; 12 2832 0.69141
DCW 0x0a53 ; 13 2643 0.64526
DCW 0x0990 ; 14 2448 0.59766
DCW 0x08c9 ; 15 2249 0.54907
DCW 0x0800 ; 16 2048 0.50000
DCW 0x0737 ; 17 1847 0.45093
DCW 0x0670 ; 18 1648 0.40234
DCW 0x05ad ; 19 1453 0.35474
DCW 0x04f0 ; 20 1264 0.30859
DCW 0x043b ; 21 1083 0.26440
DCW 0x038e ; 22 910 0.22217
DCW 0x02ed ; 23 749 0.18286
DCW 0x0258 ; 24 600 0.14648
DCW 0x01d1 ; 25 465 0.11353
DCW 0x0159 ; 26 345 0.08423
DCW 0x00f2 ; 27 242 0.05908
DCW 0x009c ; 28 156 0.03809
DCW 0x0058 ; 29 88 0.02148
DCW 0x0027 ; 30 39 0.00952
DCW 0x000a ; 31 10 0.00244
DCW 0x0000 ; 32 0 0.00000
DCW 0x000a ; 33 10 0.00244
DCW 0x0027 ; 34 39 0.00952
DCW 0x0058 ; 35 88 0.02148
DCW 0x009c ; 36 156 0.03809
DCW 0x00f2 ; 37 242 0.05908
DCW 0x0159 ; 38 345 0.08423
DCW 0x01d1 ; 39 465 0.11353
DCW 0x0258 ; 40 600 0.14648
DCW 0x02ed ; 41 749 0.18286
DCW 0x038e ; 42 910 0.22217
DCW 0x043b ; 43 1083 0.26440
DCW 0x04f0 ; 44 1264 0.30859
DCW 0x05ad ; 45 1453 0.35474
DCW 0x0670 ; 46 1648 0.40234
DCW 0x0737 ; 47 1847 0.45093
DCW 0x0800 ; 48 2048 0.50000
DCW 0x08c9 ; 49 2249 0.54907
DCW 0x0990 ; 50 2448 0.59766
DCW 0x0a53 ; 51 2643 0.64526
DCW 0x0b10 ; 52 2832 0.69141
DCW 0x0bc5 ; 53 3013 0.73560
DCW 0x0c72 ; 54 3186 0.77783
DCW 0x0d13 ; 55 3347 0.81714
DCW 0x0da8 ; 56 3496 0.85352
DCW 0x0e2f ; 57 3631 0.88647
DCW 0x0ea7 ; 58 3751 0.91577
DCW 0x0f0e ; 59 3854 0.94092
DCW 0x0f64 ; 60 3940 0.96191
DCW 0x0fa8 ; 61 4008 0.97852
DCW 0x0fd9 ; 62 4057 0.99048
DCW 0x0ff6 ; 63 4086 0.99756
END

View file

@ -0,0 +1,60 @@
#include "DriverJeuLaser.h"
#define M 64
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k);
short int dma_buf[64];
int ReDFT[64];
void ItSystick(void) {
Start_DMA1(64);
Wait_On_End_Of_DMA1();
Stop_DMA1;
for(int k=0;k<M;k++){
ReDFT[k]=DFT_ModuleAuCarre(dma_buf,k);
}
}
int main(void)
{
// ===========================================================================
// ============= INIT PERIPH (faites qu'une seule fois) =====================
// ===========================================================================
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
Systick_Period_ff( 5000*72 );
Systick_Prio_IT( 1, ItSystick );
SysTick_On;
SysTick_Enable_IT;
Init_TimingADC_ActiveADC_ff( ADC1, 72 );
Single_Channel_ADC( ADC1, 2 );
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
Init_ADC1_DMA1( 0, dma_buf );
//============================================================================
while (1)
{
}
}

View file

@ -0,0 +1,335 @@
;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
;* File Name : startup_stm32f10x_md.s
;* Author : MCD Application Team
;* Version : V3.5.0
;* Date : 11-March-2011
;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM
;* toolchain.
;* This module performs:
;* - Set the initial SP
;* - Set the initial PC == Reset_Handler
;* - Set the vector table entries with the exceptions ISR address
;* - Configure the clock system
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* After Reset the CortexM3 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;*******************************************************************************
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window Watchdog
DCD PVD_IRQHandler ; PVD through EXTI Line detect
DCD TAMPER_IRQHandler ; Tamper
DCD RTC_IRQHandler ; RTC
DCD FLASH_IRQHandler ; Flash
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line 0
DCD EXTI1_IRQHandler ; EXTI Line 1
DCD EXTI2_IRQHandler ; EXTI Line 2
DCD EXTI3_IRQHandler ; EXTI Line 3
DCD EXTI4_IRQHandler ; EXTI Line 4
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
DCD ADC1_2_IRQHandler ; ADC1_2
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
DCD TIM1_BRK_IRQHandler ; TIM1 Break
DCD TIM1_UP_IRQHandler ; TIM1 Update
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
DCD I2C1_EV_IRQHandler ; I2C1 Event
DCD I2C1_ER_IRQHandler ; I2C1 Error
DCD I2C2_EV_IRQHandler ; I2C2 Event
DCD I2C2_ER_IRQHandler ; I2C2 Error
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, =SystemInit
BLX R0
;
; Enable UsageFault, MemFault and Busfault interrupts
;
_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24
LDR.W R0, =_SHCSR
LDR R1, [R0] ; Read CPACR
ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
STR R1, [R0] ; Write back the modified value to the CPACR
DSB ; Wait for store to complete
;
; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
;
_AIRCR EQU 0xE000ED0C
_AIRCR_VAL EQU 0x05FA0300
LDR.W R0, =_AIRCR
LDR.W R1, =_AIRCR_VAL
STR R1,[R0]
;
; Finaly, jump to main function (void main (void))
;
LDR R0, =__main
BX R0
ENDP
SystemInit PROC
EXPORT SystemInit [WEAK]
BX LR
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
MemManage_Handler\
PROC
EXPORT MemManage_Handler [WEAK]
B .
ENDP
BusFault_Handler\
PROC
EXPORT BusFault_Handler [WEAK]
B .
ENDP
UsageFault_Handler\
PROC
EXPORT UsageFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
DebugMon_Handler\
PROC
EXPORT DebugMon_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT WWDG_IRQHandler [WEAK]
EXPORT PVD_IRQHandler [WEAK]
EXPORT TAMPER_IRQHandler [WEAK]
EXPORT RTC_IRQHandler [WEAK]
EXPORT FLASH_IRQHandler [WEAK]
EXPORT RCC_IRQHandler [WEAK]
EXPORT EXTI0_IRQHandler [WEAK]
EXPORT EXTI1_IRQHandler [WEAK]
EXPORT EXTI2_IRQHandler [WEAK]
EXPORT EXTI3_IRQHandler [WEAK]
EXPORT EXTI4_IRQHandler [WEAK]
EXPORT DMA1_Channel1_IRQHandler [WEAK]
EXPORT DMA1_Channel2_IRQHandler [WEAK]
EXPORT DMA1_Channel3_IRQHandler [WEAK]
EXPORT DMA1_Channel4_IRQHandler [WEAK]
EXPORT DMA1_Channel5_IRQHandler [WEAK]
EXPORT DMA1_Channel6_IRQHandler [WEAK]
EXPORT DMA1_Channel7_IRQHandler [WEAK]
EXPORT ADC1_2_IRQHandler [WEAK]
EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK]
EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK]
EXPORT CAN1_RX1_IRQHandler [WEAK]
EXPORT CAN1_SCE_IRQHandler [WEAK]
EXPORT EXTI9_5_IRQHandler [WEAK]
EXPORT TIM1_BRK_IRQHandler [WEAK]
EXPORT TIM1_UP_IRQHandler [WEAK]
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
EXPORT TIM1_CC_IRQHandler [WEAK]
EXPORT TIM2_IRQHandler [WEAK]
EXPORT TIM3_IRQHandler [WEAK]
EXPORT TIM4_IRQHandler [WEAK]
EXPORT I2C1_EV_IRQHandler [WEAK]
EXPORT I2C1_ER_IRQHandler [WEAK]
EXPORT I2C2_EV_IRQHandler [WEAK]
EXPORT I2C2_ER_IRQHandler [WEAK]
EXPORT SPI1_IRQHandler [WEAK]
EXPORT SPI2_IRQHandler [WEAK]
EXPORT USART1_IRQHandler [WEAK]
EXPORT USART2_IRQHandler [WEAK]
EXPORT USART3_IRQHandler [WEAK]
EXPORT EXTI15_10_IRQHandler [WEAK]
EXPORT RTCAlarm_IRQHandler [WEAK]
EXPORT USBWakeUp_IRQHandler [WEAK]
WWDG_IRQHandler
PVD_IRQHandler
TAMPER_IRQHandler
RTC_IRQHandler
FLASH_IRQHandler
RCC_IRQHandler
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
DMA1_Channel1_IRQHandler
DMA1_Channel2_IRQHandler
DMA1_Channel3_IRQHandler
DMA1_Channel4_IRQHandler
DMA1_Channel5_IRQHandler
DMA1_Channel6_IRQHandler
DMA1_Channel7_IRQHandler
ADC1_2_IRQHandler
USB_HP_CAN1_TX_IRQHandler
USB_LP_CAN1_RX0_IRQHandler
CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler
EXTI9_5_IRQHandler
TIM1_BRK_IRQHandler
TIM1_UP_IRQHandler
TIM1_TRG_COM_IRQHandler
TIM1_CC_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM4_IRQHandler
I2C1_EV_IRQHandler
I2C1_ER_IRQHandler
I2C2_EV_IRQHandler
I2C2_ER_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
RTCAlarm_IRQHandler
USBWakeUp_IRQHandler
B .
ENDP
ALIGN
;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
IF :DEF:__MICROLIB
EXPORT __initial_sp
EXPORT __heap_base
EXPORT __heap_limit
ELSE
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ALIGN
ENDIF
END
;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

File diff suppressed because it is too large Load diff

View file

@ -5,6 +5,8 @@
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
IMPORT LeSignal
export DFT_ModuleAuCarre
;Section RAM (read write):
@ -22,7 +24,54 @@
; écrire le code ici
DFT_ModuleAuCarre proc
push{r4,r7,r5,r6}
;r0 = @signal
;r1 = k
;ldr r2,=TabCos;@tabcos
mov r3,#0 ; r3 val indice signal
mov r5,#0 ; somme tabCos
mov r6,#0 ; somme tabSin
boucle
; partie reelle
ldrh r7,[r0,r3, lsl 1];val signal format 1.12
mul r4,r3,r1 ; p=k*n (indice tabCos)
and r4,r4,#63
ldr r2,=TabCos
ldrsh r4,[r2,r4, lsl 1];val tabCos format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==>format 2.27
add r5,r7
; partie imaginaire
ldrh r7,[r0,r3, lsl 1];val signal format 1.12
mul r4,r3,r1 ;p=k*n (indice tabSin)
and r4,r4,#63 ;modulo 63
ldr r2,=TabSin
ldrsh r4,[r2,r4, lsl 1];val tabSin format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==> format 2.27 ou 5.27
add r6,r7
add r3,#1
cmp r3,#63
ble boucle
;fin boucle
;mul r0,r5,r5 ; ==> 2.27 * 2.27 = 4.54 ==>10.54 (64bits)
asr r5,#16 ; r5 : 5.11
mul r5,r5 ; 10.22
asr r6,#16 ; r6 : 5.11
mul r0,r6,r6 ; 10.22
add r0,r5
pop{r4,r7,r5,r6}
bx lr
endp
;Section ROM code (read only) :

View file

@ -1,8 +1,8 @@
#include "DriverJeuLaser.h"
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k);
extern short int LeSignal[];
int main(void)
{
@ -15,6 +15,7 @@ int main(void)
CLOCK_Configure();
DFT_ModuleAuCarre(&(LeSignal[0]),50);
@ -23,6 +24,7 @@ CLOCK_Configure();
while (1)
{
}
}

View file

@ -75,7 +75,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@ -154,6 +154,14 @@
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>9</SubType>
<ItemText>0x07FF7001</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -267,7 +275,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@ -624,6 +632,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\DFT.s</PathWithFileName>
<FilenameWithoutPath>DFT.s</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\Signal.asm</PathWithFileName>
<FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -634,7 +666,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>2</FileNumber>
<FileNumber>4</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -654,7 +686,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>3</FileNumber>
<FileNumber>5</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

View file

@ -388,6 +388,16 @@
<FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath>
</File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files>
</Group>
<Group>
@ -797,6 +807,16 @@
<FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath>
</File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files>
</Group>
<Group>
@ -1275,6 +1295,16 @@
<FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath>
</File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files>
</Group>
<Group>
@ -1322,7 +1352,7 @@
<LayerInfo>
<Layers>
<Layer>
<LayName>&lt;Project Info&gt;</LayName>
<LayName>StepDFT</LayName>
<LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark>
</Layer>

View file

@ -10,7 +10,7 @@
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
@ -154,6 +154,13 @@
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>VarTime</ItemText>
</Ww>
</WatchWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -174,7 +181,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -196,6 +203,13 @@
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
<LogicAnalyzers>
<Wi>
<IntNumber>0</IntNumber>
<FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
<SecondString>00800000000000000000000000000000000030400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F1000000000000000000000000000000000000000AA030008</SecondString>
</Wi>
</LogicAnalyzers>
<DebugDescription>
<Enable>1</Enable>
<EnableFlashSeq>0</EnableFlashSeq>
@ -342,8 +356,8 @@
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>257</SubType>
<ItemText>r0</ItemText>
<SubType>1</SubType>
<ItemText>0x20000000</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
@ -367,7 +381,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -609,7 +623,7 @@
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\principal.c</PathWithFileName>

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>
@ -424,7 +424,7 @@
<TargetName>CibleSondeKEIL</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>
@ -907,7 +907,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>
@ -1337,12 +1337,7 @@
<LayerInfo>
<Layers>
<Layer>
<LayName>&lt;Project Info&gt;</LayName>
<LayDesc></LayDesc>
<LayUrl></LayUrl>
<LayKeys></LayKeys>
<LayCat></LayCat>
<LayLic></LayLic>
<LayName>BacASable</LayName>
<LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark>
</Layer>

View file

@ -1,6 +1,13 @@
PRESERVE8
THUMB
;constantes (équivalent au #define en C)
TimeValue equ 900000
EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules.
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
@ -10,16 +17,11 @@
;Section RAM (read write):
area maram,data,readwrite
VarTime dcd 0
VarTime dcd 0; int varTime=0
EXPORT VarTime
; ===============================================================================================
;constantes (équivalent du #define en C)
TimeValue equ 900000
EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules.
;Section ROM code (read only) :
@ -41,19 +43,19 @@ TimeValue equ 900000
Delay_100ms proc
ldr r0,=VarTime
ldr r0,=VarTime ; r0=@varTime
ldr r1,=TimeValue
str r1,[r0]
ldr r1,=TimeValue ;r1=TimeValue=900000 superieur a 65000 c pq on utilise ldr
str r1,[r0] ;varTime=TimeValue
BoucleTempo
ldr r1,[r0]
ldr r1,[r0] ;r1=900000
subs r1,#1
str r1,[r0]
subs r1,#1 ;r1 = r1 - 1
str r1,[r0] ;VarTime = VarTime - 1;
bne BoucleTempo
bx lr
bx lr;revenir dans fonction appelante
endp

View file

@ -10,7 +10,7 @@
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
@ -153,7 +153,48 @@
<Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>56</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134220352</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\Src\Cligno.s</Filename>
<ExecCommand></ExecCommand>
<Expression>\\BacASable\Src/Cligno.s\56</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>76</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>.\Src\Cligno.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>4</SubType>
<ItemText>0x200000a0 </ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -174,7 +215,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -200,7 +241,7 @@
<Wi>
<IntNumber>0</IntNumber>
<FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F150000000000000000000000000000000000000096020008</SecondString>
</Wi>
</LogicAnalyzers>
<DebugDescription>
@ -345,7 +386,24 @@
<Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>75</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134220372</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\Src\Cligno.s</Filename>
<ExecCommand></ExecCommand>
<Expression>\\BacASable\Src/Cligno.s\75</Expression>
</Bp>
</Breakpoint>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
@ -374,7 +432,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -628,7 +686,7 @@
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\Cligno.s</PathWithFileName>

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>
@ -357,7 +357,7 @@
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
<IncludePath>.\Driver</IncludePath>
</VariousControls>
</Aads>
<LDads>
@ -424,7 +424,7 @@
<TargetName>CibleSondeKEIL</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>
@ -771,7 +771,7 @@
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
<IncludePath>.\Driver</IncludePath>
</VariousControls>
</Aads>
<LDads>
@ -1338,11 +1338,6 @@
<Layers>
<Layer>
<LayName>&lt;Project Info&gt;</LayName>
<LayDesc></LayDesc>
<LayUrl></LayUrl>
<LayKeys></LayKeys>
<LayCat></LayCat>
<LayLic></LayLic>
<LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark>
</Layer>

View file

@ -1,30 +1,105 @@
PRESERVE8
THUMB
export timer_callback
include DriverJeuLaser.inc
;char FlagCligno;
;void timer_callback(void)
;{
; if (FlagCligno==1)
; {
; FlagCligno=0;
; GPIOB_Set(1);
; }
; else
; {
; FlagCligno=1;
; GPIOB_Clear(1);
; }
;
;}
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
;char FlagCligno;
FlagCligno dcd 0;
EXPORT FlagCligno
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
;void timer_callback proc(void)
;{
timer_callback proc
push{lr}
; if (FlagCligno==1)
; {
ldr r0, =FlagCligno
ldr r1, [r0]
cmp r1,#1
bne non
; FlagCligno=0;
mov r1,#0
str r1,[r0]
; GPIOB_Set(1);
mov r0,#1
bl GPIOB_Set
b ret
; }
; else
; {
non
; FlagCligno=1;
mov r1,#1
str r1,[r0]
mov r0,#1
bl GPIOB_Clear
; GPIOB_Clear(1);
; }
;
ret
pop{pc}
;}
endp
END

View file

@ -1,8 +1,6 @@
#include "DriverJeuLaser.h"
void timer_callback(void);
extern void timer_callback(void);
int main(void)
{
@ -17,8 +15,9 @@ CLOCK_Configure();
// configuration du Timer 4 en débordement 100ms
//** Placez votre code là ** //
Timer_1234_Init_ff(TIM4,7200000);
// Activation des interruptions issues du Timer 4
// Association de la fonction à exécuter lors de l'interruption : timer_callback
@ -26,7 +25,7 @@ CLOCK_Configure();
//** Placez votre code là ** //
Active_IT_Debordement_Timer( TIM4, 2, timer_callback );
// configuration de PortB.1 (PB1) en sortie push-pull
GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL);
@ -42,20 +41,3 @@ while (1)
}
}
char FlagCligno;
void timer_callback(void)
{
if (FlagCligno==1)
{
FlagCligno=0;
GPIOB_Set(1);
}
else
{
FlagCligno=1;
GPIOB_Clear(1);
}
}

View file

@ -0,0 +1,345 @@
/**
* Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
*
* GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
* Modifs :
* enlèvement de tout ce qui est inutile dans le .h
* ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
* - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
* - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
*
* ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
* PWM_Set_Value_On_TIM3_C3( int Val)
* permet en ASM ou en C de fixer la valeur de PWM
* Ajout de commentaires
*/
#ifndef DRIVERJEULASER_H__
#define DRIVERJEULASER_H__
#include "stm32f10x.h"
//**********************************************************************************************************
//--------------------- CONFIGURATION CLOCK DU STM32 --------------------------------------
//**********************************************************************************************************
/**
* @brief Configure l'ensemble des horloges du uC
* @note horloge systeme (config statique a 72 MHz pour le STM32F103)
* @param None
* @retval None
*/
void CLOCK_Configure(void);
//**********************************************************************************************************
//--------------------- LES TIMERS GENERAL PURPOSE TIM1 à TIM 4 ------------------------------
//**********************************************************************************************************
/**
* @brief Configure un Timer TIM1 à TIM4 avec une périodicité donnée
* @note L' horloge des 4 timers a une fréquence de 72MHz
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
/**
* Macros de base pour utiliser les timers
*/
// bloque le timer
#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
// Lance timer
#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
/**
* @brief Associe une fonction d'interruption (callback) lors du débordement d'un timer
* @note
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
* @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
* @retval None
*/
void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
//*********************************************************************************************************
//--------------------- PWM TIM1 to TIM 4 ------------------------------
//*********************************************************************************************************
/**
* @brief Configure un timer en PWM
* @note
* @param *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
* @param voie : un des 4 canaux possibles 1 à 4.
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval Retourne la période en tick (normalement la même que le param d'entrée sauf si PSC utilisé
*/
unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
/**
* @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
* est donc : rcy = Thaut_ticks / Periode_ticks
* @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
* @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
* @retval None
*/
void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
//**********************************************************************************************************
//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
//**********************************************************************************************************
/**
* @brief Configure le timer Systick avec une périodicité donnée
* @note Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
* ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
* Ce timer est un 24 bits
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
void Systick_Period_ff( unsigned int Periode_ticks );
/**
* @brief Associe une fonction d'interruption (callback) lors du débordement du Systick
* @note
* @param Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 -> priorité min)
* @param IT_function : le nom de la fonction Callback à appeler lors de l'interruption
* @retval None
*/
void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
/**
* Macros de base pour utiliser le Systick
*/
#define SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
#define SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
#define SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
#define SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
//**********************************************************************************************************
//--------------------- LE SYSTICK TIMER, Part of Cortex M3 ------------------------------
//**********************************************************************************************************
/**
* @brief Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
* de fermeture du switch d'acquisition
* @note
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
* exemple pour 1µs on choisira 72.
* @retval Nombre de Tick réellement pris en compte
*/
unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
/**
* @brief Sélectionne la voie à convertir
* @note Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Voie_ADC : 1 à 15
* @retval None
*/
void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
/**
* @brief Permet lier le déclenchement au débordement d'un timer, spécifie également
* la période de débordement du timer
* @note pas besoin de régler le timer avec une autre fonction dédiée timer
* @param ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
* @param Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
* @param Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer
* La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
* @retval None
*/
// param pour Source :
#define TIM1_CC1 0
#define TIM1_CC2 1
#define TIM1_CC3 2
#define TIM2_CC2 3
#define TIM4_CC4 5
void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
//**********************************************************************************************************
//--------------------- ANALOG INPUT ADC & DMA ------------------------------
//**********************************************************************************************************
/**
* @brief Permer de lier l'ADC à un tableau en RAM pour une DMA
* @note
* @param Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
* si '1' le ptr d'@ se recale à celle du début.
* @param Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
* @retval None
*/
void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
/**
* @brief Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
* dans la zone de RAM écrite est indiquée lors de l'appel de la fonction Init_ADC1_DMA1
* @note
* @param NbEchDMA est le nombre d'échantillons à stocker.
* @retval None
*/
void Start_DMA1( u16 NbEchDMA );
// arret DMA
#define Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
/**
* @brief Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition
* et du nombre d'echantillons
* @note fonction d'attente (bloquante)
* @param None
* @retval None
*/
void Wait_On_End_Of_DMA1(void);
//**********************************************************************************************************
//--------------------- GPIO ------------------------------
//**********************************************************************************************************
/**
* @brief Initialisation d'un GPIO (A à C), pin x.
* peut être configuré :
* -> Input ou output
* -> architecture technologique (push-pull, open drain...)
* @note
* @param Port : GPIOA, GPIOB, GPIOC
* @param Broche : 0 à 15
* @param Sens : INPUT ou OUTPUT
* @param Techno : voir define ci dessous
* @retval 1 erreur, 0 si OK
*/
// Sens
#define INPUT 'i'
#define OUTPUT 'o'
// Techno pour pin en entrée (INPUT)
#define ANALOG 0
#define INPUT_FLOATING 1
#define INPUT_PULL_DOWN_UP 2
// Techno pour pin en sortie (OUTPUT)
#define OUTPUT_PPULL 0
#define OUTPUT_OPDRAIN 1
#define ALT_PPULL 2
#define ALT_OPDRAIN 3
// Exemple :
// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
// Place le bit 8 du port B en sortie Push-pull
char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
/**
* @brief Mise à 1 d'une broche GPIO
* @note Une fonction par GPIO
* @param Broche : 0 à 15
* @retval None
*/
void GPIOA_Set(char Broche);
void GPIOB_Set(char Broche);
void GPIOC_Set(char Broche);
/**
* @brief Mise à 0 d'une broche GPIO
* @note Une fonction par GPIO
* @param Broche : 0 à 15
* @retval None
*/
void GPIOA_Clear(char Broche);
void GPIOB_Clear(char Broche);
void GPIOC_Clear(char Broche);
#endif

View file

@ -0,0 +1,56 @@
; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
; Accès en aux fonctions suivantes :
; GPIO :
; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
; PWM :
;/**
; * @brief Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
; * est donc : rcy = Thaut_ticks / Periode_ticks
; * @note spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
; * @param Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
; * @retval None
; */
;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
import PWM_Set_Value_TIM3_Ch3
;/**
; * @brief Mise à 1 d'une broche GPIO
; * @note Une fonction par GPIO
; * @param Broche : 0 à 15
; * @retval None
; */
;void GPIOA_Set(char Broche);
import GPIOA_Set
;void GPIOB_Set(char Broche);
import GPIOB_Set
;void GPIOC_Set(char Broche);
import GPIOC_Set
;/**
; * @brief Mise à 0 d'une broche GPIO
; * @note Une fonction par GPIO
; * @param Broche : 0 à 15
; * @retval None
; */
;void GPIOA_Clear(char Broche);
import GPIOA_Clear
;void GPIOB_Clear(char Broche);
import GPIOB_Clear
;void GPIOC_Clear(char Broche);
import GPIOC_Clear
end

View file

@ -0,0 +1,215 @@
PRESERVE8
THUMB
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
IMPORT LeSignal
export DFT_ModuleAuCarre
;Section RAM (read write):
area maram,data,readwrite
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
DFT_ModuleAuCarre proc
push{r4,r7,r5,r6}
;r0 = @signal
;r1 = k
;ldr r2,=TabCos;@tabcos
mov r3,#0 ; r3 val indice signal
mov r5,#0 ; somme tabCos
mov r6,#0 ; somme tabSin
boucle
; partie reelle
ldrh r7,[r0,r3, lsl #1];val signal format 1.12
mul r4,r3,r1 ; p=k*n (indice tabCos)
and r4,r4,#63
ldr r2,=TabCos
ldrsh r4,[r2,r4, lsl #1];val tabCos format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==>format 2.27
add r5,r7
; partie imaginaire
ldrh r7,[r0,r3, lsl #1];val signal format 1.12
mul r4,r3,r1 ;p=k*n (indice tabSin)
and r4,r4,#63 ;modulo 63
ldr r2,=TabSin
ldrsh r4,[r2,r4, lsl #1];val tabSin format 1.15(signed)
mul r7,r4; X(k) à l'indice n ==> format 2.27 ou 5.27
add r6,r7
add r3,#1
cmp r3,#63
ble boucle
;fin boucle
;mul r0,r5,r5 ; ==> 2.27 * 2.27 = 4.54 ==>10.54 (64bits)
asr r5,#16 ; r5 : 5.11
mul r5,r5 ; 10.22
asr r6,#16 ; r6 : 5.11
mul r0,r6,r6 ; 10.22
add r0,r5
pop{r4,r7,r5,r6}
bx lr
endp
;Section ROM code (read only) :
AREA Trigo, DATA, READONLY
; codage fractionnaire 1.15
TabCos
DCW 32767 ; 0 0x7fff 0.99997
DCW 32610 ; 1 0x7f62 0.99518
DCW 32138 ; 2 0x7d8a 0.98077
DCW 31357 ; 3 0x7a7d 0.95694
DCW 30274 ; 4 0x7642 0.92389
DCW 28899 ; 5 0x70e3 0.88193
DCW 27246 ; 6 0x6a6e 0.83148
DCW 25330 ; 7 0x62f2 0.77301
DCW 23170 ; 8 0x5a82 0.70709
DCW 20788 ; 9 0x5134 0.63440
DCW 18205 ; 10 0x471d 0.55557
DCW 15447 ; 11 0x3c57 0.47141
DCW 12540 ; 12 0x30fc 0.38269
DCW 9512 ; 13 0x2528 0.29028
DCW 6393 ; 14 0x18f9 0.19510
DCW 3212 ; 15 0x0c8c 0.09802
DCW 0 ; 16 0x0000 0.00000
DCW -3212 ; 17 0xf374 -0.09802
DCW -6393 ; 18 0xe707 -0.19510
DCW -9512 ; 19 0xdad8 -0.29028
DCW -12540 ; 20 0xcf04 -0.38269
DCW -15447 ; 21 0xc3a9 -0.47141
DCW -18205 ; 22 0xb8e3 -0.55557
DCW -20788 ; 23 0xaecc -0.63440
DCW -23170 ; 24 0xa57e -0.70709
DCW -25330 ; 25 0x9d0e -0.77301
DCW -27246 ; 26 0x9592 -0.83148
DCW -28899 ; 27 0x8f1d -0.88193
DCW -30274 ; 28 0x89be -0.92389
DCW -31357 ; 29 0x8583 -0.95694
DCW -32138 ; 30 0x8276 -0.98077
DCW -32610 ; 31 0x809e -0.99518
DCW -32768 ; 32 0x8000 -1.00000
DCW -32610 ; 33 0x809e -0.99518
DCW -32138 ; 34 0x8276 -0.98077
DCW -31357 ; 35 0x8583 -0.95694
DCW -30274 ; 36 0x89be -0.92389
DCW -28899 ; 37 0x8f1d -0.88193
DCW -27246 ; 38 0x9592 -0.83148
DCW -25330 ; 39 0x9d0e -0.77301
DCW -23170 ; 40 0xa57e -0.70709
DCW -20788 ; 41 0xaecc -0.63440
DCW -18205 ; 42 0xb8e3 -0.55557
DCW -15447 ; 43 0xc3a9 -0.47141
DCW -12540 ; 44 0xcf04 -0.38269
DCW -9512 ; 45 0xdad8 -0.29028
DCW -6393 ; 46 0xe707 -0.19510
DCW -3212 ; 47 0xf374 -0.09802
DCW 0 ; 48 0x0000 0.00000
DCW 3212 ; 49 0x0c8c 0.09802
DCW 6393 ; 50 0x18f9 0.19510
DCW 9512 ; 51 0x2528 0.29028
DCW 12540 ; 52 0x30fc 0.38269
DCW 15447 ; 53 0x3c57 0.47141
DCW 18205 ; 54 0x471d 0.55557
DCW 20788 ; 55 0x5134 0.63440
DCW 23170 ; 56 0x5a82 0.70709
DCW 25330 ; 57 0x62f2 0.77301
DCW 27246 ; 58 0x6a6e 0.83148
DCW 28899 ; 59 0x70e3 0.88193
DCW 30274 ; 60 0x7642 0.92389
DCW 31357 ; 61 0x7a7d 0.95694
DCW 32138 ; 62 0x7d8a 0.98077
DCW 32610 ; 63 0x7f62 0.99518
TabSin
DCW 0 ; 0 0x0000 0.00000
DCW 3212 ; 1 0x0c8c 0.09802
DCW 6393 ; 2 0x18f9 0.19510
DCW 9512 ; 3 0x2528 0.29028
DCW 12540 ; 4 0x30fc 0.38269
DCW 15447 ; 5 0x3c57 0.47141
DCW 18205 ; 6 0x471d 0.55557
DCW 20788 ; 7 0x5134 0.63440
DCW 23170 ; 8 0x5a82 0.70709
DCW 25330 ; 9 0x62f2 0.77301
DCW 27246 ; 10 0x6a6e 0.83148
DCW 28899 ; 11 0x70e3 0.88193
DCW 30274 ; 12 0x7642 0.92389
DCW 31357 ; 13 0x7a7d 0.95694
DCW 32138 ; 14 0x7d8a 0.98077
DCW 32610 ; 15 0x7f62 0.99518
DCW 32767 ; 16 0x7fff 0.99997
DCW 32610 ; 17 0x7f62 0.99518
DCW 32138 ; 18 0x7d8a 0.98077
DCW 31357 ; 19 0x7a7d 0.95694
DCW 30274 ; 20 0x7642 0.92389
DCW 28899 ; 21 0x70e3 0.88193
DCW 27246 ; 22 0x6a6e 0.83148
DCW 25330 ; 23 0x62f2 0.77301
DCW 23170 ; 24 0x5a82 0.70709
DCW 20788 ; 25 0x5134 0.63440
DCW 18205 ; 26 0x471d 0.55557
DCW 15447 ; 27 0x3c57 0.47141
DCW 12540 ; 28 0x30fc 0.38269
DCW 9512 ; 29 0x2528 0.29028
DCW 6393 ; 30 0x18f9 0.19510
DCW 3212 ; 31 0x0c8c 0.09802
DCW 0 ; 32 0x0000 0.00000
DCW -3212 ; 33 0xf374 -0.09802
DCW -6393 ; 34 0xe707 -0.19510
DCW -9512 ; 35 0xdad8 -0.29028
DCW -12540 ; 36 0xcf04 -0.38269
DCW -15447 ; 37 0xc3a9 -0.47141
DCW -18205 ; 38 0xb8e3 -0.55557
DCW -20788 ; 39 0xaecc -0.63440
DCW -23170 ; 40 0xa57e -0.70709
DCW -25330 ; 41 0x9d0e -0.77301
DCW -27246 ; 42 0x9592 -0.83148
DCW -28899 ; 43 0x8f1d -0.88193
DCW -30274 ; 44 0x89be -0.92389
DCW -31357 ; 45 0x8583 -0.95694
DCW -32138 ; 46 0x8276 -0.98077
DCW -32610 ; 47 0x809e -0.99518
DCW -32768 ; 48 0x8000 -1.00000
DCW -32610 ; 49 0x809e -0.99518
DCW -32138 ; 50 0x8276 -0.98077
DCW -31357 ; 51 0x8583 -0.95694
DCW -30274 ; 52 0x89be -0.92389
DCW -28899 ; 53 0x8f1d -0.88193
DCW -27246 ; 54 0x9592 -0.83148
DCW -25330 ; 55 0x9d0e -0.77301
DCW -23170 ; 56 0xa57e -0.70709
DCW -20788 ; 57 0xaecc -0.63440
DCW -18205 ; 58 0xb8e3 -0.55557
DCW -15447 ; 59 0xc3a9 -0.47141
DCW -12540 ; 60 0xcf04 -0.38269
DCW -9512 ; 61 0xdad8 -0.29028
DCW -6393 ; 62 0xe707 -0.19510
DCW -3212 ; 63 0xf374 -0.09802
END

View file

@ -0,0 +1,68 @@
AREA Signal, DATA, READONLY
export LeSignal
LeSignal
DCW 0x0fff ; 0 4095 0.99976
DCW 0x0ff6 ; 1 4086 0.99756
DCW 0x0fd9 ; 2 4057 0.99048
DCW 0x0fa8 ; 3 4008 0.97852
DCW 0x0f64 ; 4 3940 0.96191
DCW 0x0f0e ; 5 3854 0.94092
DCW 0x0ea7 ; 6 3751 0.91577
DCW 0x0e2f ; 7 3631 0.88647
DCW 0x0da8 ; 8 3496 0.85352
DCW 0x0d13 ; 9 3347 0.81714
DCW 0x0c72 ; 10 3186 0.77783
DCW 0x0bc5 ; 11 3013 0.73560
DCW 0x0b10 ; 12 2832 0.69141
DCW 0x0a53 ; 13 2643 0.64526
DCW 0x0990 ; 14 2448 0.59766
DCW 0x08c9 ; 15 2249 0.54907
DCW 0x0800 ; 16 2048 0.50000
DCW 0x0737 ; 17 1847 0.45093
DCW 0x0670 ; 18 1648 0.40234
DCW 0x05ad ; 19 1453 0.35474
DCW 0x04f0 ; 20 1264 0.30859
DCW 0x043b ; 21 1083 0.26440
DCW 0x038e ; 22 910 0.22217
DCW 0x02ed ; 23 749 0.18286
DCW 0x0258 ; 24 600 0.14648
DCW 0x01d1 ; 25 465 0.11353
DCW 0x0159 ; 26 345 0.08423
DCW 0x00f2 ; 27 242 0.05908
DCW 0x009c ; 28 156 0.03809
DCW 0x0058 ; 29 88 0.02148
DCW 0x0027 ; 30 39 0.00952
DCW 0x000a ; 31 10 0.00244
DCW 0x0000 ; 32 0 0.00000
DCW 0x000a ; 33 10 0.00244
DCW 0x0027 ; 34 39 0.00952
DCW 0x0058 ; 35 88 0.02148
DCW 0x009c ; 36 156 0.03809
DCW 0x00f2 ; 37 242 0.05908
DCW 0x0159 ; 38 345 0.08423
DCW 0x01d1 ; 39 465 0.11353
DCW 0x0258 ; 40 600 0.14648
DCW 0x02ed ; 41 749 0.18286
DCW 0x038e ; 42 910 0.22217
DCW 0x043b ; 43 1083 0.26440
DCW 0x04f0 ; 44 1264 0.30859
DCW 0x05ad ; 45 1453 0.35474
DCW 0x0670 ; 46 1648 0.40234
DCW 0x0737 ; 47 1847 0.45093
DCW 0x0800 ; 48 2048 0.50000
DCW 0x08c9 ; 49 2249 0.54907
DCW 0x0990 ; 50 2448 0.59766
DCW 0x0a53 ; 51 2643 0.64526
DCW 0x0b10 ; 52 2832 0.69141
DCW 0x0bc5 ; 53 3013 0.73560
DCW 0x0c72 ; 54 3186 0.77783
DCW 0x0d13 ; 55 3347 0.81714
DCW 0x0da8 ; 56 3496 0.85352
DCW 0x0e2f ; 57 3631 0.88647
DCW 0x0ea7 ; 58 3751 0.91577
DCW 0x0f0e ; 59 3854 0.94092
DCW 0x0f64 ; 60 3940 0.96191
DCW 0x0fa8 ; 61 4008 0.97852
DCW 0x0fd9 ; 62 4057 0.99048
DCW 0x0ff6 ; 63 4086 0.99756
END

View file

@ -0,0 +1,91 @@
#include "DriverJeuLaser.h"
#define M 64
#define SIZETABK 4
#define SEUIL 0x3c2e1
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k);
short int dma_buf[64];
int ReDFT[SIZETABK];
int score[SIZETABK];
int count[SIZETABK]={0};
void init_score(){
for(int i=0;i<SIZETABK;i++) score[i]=0;
}
void ItSystick(void) {
Start_DMA1(64);
Wait_On_End_Of_DMA1();
Stop_DMA1;
int tabK[]={17,18,19,20};
for(int k=0;k<SIZETABK;k++){
ReDFT[k]=DFT_ModuleAuCarre(dma_buf,tabK[k]);
if(ReDFT[k]>=SEUIL){
count[k]=(count[k]+1);
if(count[k]==15){
score[k]++;
count[k]=0;
}
}
else {
count[k]=0;
}
}
}
int main(void)
{
// ===========================================================================
// ============= INIT PERIPH (faites qu'une seule fois) =====================
// ===========================================================================
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
//Partie Son
unsigned int tick=91*72;
init_score();
Systick_Period_ff( 5000*72 );
Systick_Prio_IT( 1, ItSystick );
SysTick_On;
SysTick_Enable_IT;
//timer tous les 100ms pour score
Init_TimingADC_ActiveADC_ff( ADC1, 72 );
Single_Channel_ADC( ADC1, 2 );
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
Init_ADC1_DMA1( 0, dma_buf );
//============================================================================
while (1)
{
}
}

View file

@ -0,0 +1,335 @@
;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
;* File Name : startup_stm32f10x_md.s
;* Author : MCD Application Team
;* Version : V3.5.0
;* Date : 11-March-2011
;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM
;* toolchain.
;* This module performs:
;* - Set the initial SP
;* - Set the initial PC == Reset_Handler
;* - Set the vector table entries with the exceptions ISR address
;* - Configure the clock system
;* - Branches to __main in the C library (which eventually
;* calls main()).
;* After Reset the CortexM3 processor is in Thread mode,
;* priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>
;*******************************************************************************
; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;*******************************************************************************
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD WWDG_IRQHandler ; Window Watchdog
DCD PVD_IRQHandler ; PVD through EXTI Line detect
DCD TAMPER_IRQHandler ; Tamper
DCD RTC_IRQHandler ; RTC
DCD FLASH_IRQHandler ; Flash
DCD RCC_IRQHandler ; RCC
DCD EXTI0_IRQHandler ; EXTI Line 0
DCD EXTI1_IRQHandler ; EXTI Line 1
DCD EXTI2_IRQHandler ; EXTI Line 2
DCD EXTI3_IRQHandler ; EXTI Line 3
DCD EXTI4_IRQHandler ; EXTI Line 4
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
DCD ADC1_2_IRQHandler ; ADC1_2
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
DCD TIM1_BRK_IRQHandler ; TIM1 Break
DCD TIM1_UP_IRQHandler ; TIM1 Update
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
DCD TIM2_IRQHandler ; TIM2
DCD TIM3_IRQHandler ; TIM3
DCD TIM4_IRQHandler ; TIM4
DCD I2C1_EV_IRQHandler ; I2C1 Event
DCD I2C1_ER_IRQHandler ; I2C1 Error
DCD I2C2_EV_IRQHandler ; I2C2 Event
DCD I2C2_ER_IRQHandler ; I2C2 Error
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, =SystemInit
BLX R0
;
; Enable UsageFault, MemFault and Busfault interrupts
;
_SHCSR EQU 0xE000ED24 ; SHCSR is located at address 0xE000ED24
LDR.W R0, =_SHCSR
LDR R1, [R0] ; Read CPACR
ORR R1, R1, #(0x7 << 16) ; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
STR R1, [R0] ; Write back the modified value to the CPACR
DSB ; Wait for store to complete
;
; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
;
_AIRCR EQU 0xE000ED0C
_AIRCR_VAL EQU 0x05FA0300
LDR.W R0, =_AIRCR
LDR.W R1, =_AIRCR_VAL
STR R1,[R0]
;
; Finaly, jump to main function (void main (void))
;
LDR R0, =__main
BX R0
ENDP
SystemInit PROC
EXPORT SystemInit [WEAK]
BX LR
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
MemManage_Handler\
PROC
EXPORT MemManage_Handler [WEAK]
B .
ENDP
BusFault_Handler\
PROC
EXPORT BusFault_Handler [WEAK]
B .
ENDP
UsageFault_Handler\
PROC
EXPORT UsageFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
DebugMon_Handler\
PROC
EXPORT DebugMon_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT WWDG_IRQHandler [WEAK]
EXPORT PVD_IRQHandler [WEAK]
EXPORT TAMPER_IRQHandler [WEAK]
EXPORT RTC_IRQHandler [WEAK]
EXPORT FLASH_IRQHandler [WEAK]
EXPORT RCC_IRQHandler [WEAK]
EXPORT EXTI0_IRQHandler [WEAK]
EXPORT EXTI1_IRQHandler [WEAK]
EXPORT EXTI2_IRQHandler [WEAK]
EXPORT EXTI3_IRQHandler [WEAK]
EXPORT EXTI4_IRQHandler [WEAK]
EXPORT DMA1_Channel1_IRQHandler [WEAK]
EXPORT DMA1_Channel2_IRQHandler [WEAK]
EXPORT DMA1_Channel3_IRQHandler [WEAK]
EXPORT DMA1_Channel4_IRQHandler [WEAK]
EXPORT DMA1_Channel5_IRQHandler [WEAK]
EXPORT DMA1_Channel6_IRQHandler [WEAK]
EXPORT DMA1_Channel7_IRQHandler [WEAK]
EXPORT ADC1_2_IRQHandler [WEAK]
EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK]
EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK]
EXPORT CAN1_RX1_IRQHandler [WEAK]
EXPORT CAN1_SCE_IRQHandler [WEAK]
EXPORT EXTI9_5_IRQHandler [WEAK]
EXPORT TIM1_BRK_IRQHandler [WEAK]
EXPORT TIM1_UP_IRQHandler [WEAK]
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
EXPORT TIM1_CC_IRQHandler [WEAK]
EXPORT TIM2_IRQHandler [WEAK]
EXPORT TIM3_IRQHandler [WEAK]
EXPORT TIM4_IRQHandler [WEAK]
EXPORT I2C1_EV_IRQHandler [WEAK]
EXPORT I2C1_ER_IRQHandler [WEAK]
EXPORT I2C2_EV_IRQHandler [WEAK]
EXPORT I2C2_ER_IRQHandler [WEAK]
EXPORT SPI1_IRQHandler [WEAK]
EXPORT SPI2_IRQHandler [WEAK]
EXPORT USART1_IRQHandler [WEAK]
EXPORT USART2_IRQHandler [WEAK]
EXPORT USART3_IRQHandler [WEAK]
EXPORT EXTI15_10_IRQHandler [WEAK]
EXPORT RTCAlarm_IRQHandler [WEAK]
EXPORT USBWakeUp_IRQHandler [WEAK]
WWDG_IRQHandler
PVD_IRQHandler
TAMPER_IRQHandler
RTC_IRQHandler
FLASH_IRQHandler
RCC_IRQHandler
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
DMA1_Channel1_IRQHandler
DMA1_Channel2_IRQHandler
DMA1_Channel3_IRQHandler
DMA1_Channel4_IRQHandler
DMA1_Channel5_IRQHandler
DMA1_Channel6_IRQHandler
DMA1_Channel7_IRQHandler
ADC1_2_IRQHandler
USB_HP_CAN1_TX_IRQHandler
USB_LP_CAN1_RX0_IRQHandler
CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler
EXTI9_5_IRQHandler
TIM1_BRK_IRQHandler
TIM1_UP_IRQHandler
TIM1_TRG_COM_IRQHandler
TIM1_CC_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM4_IRQHandler
I2C1_EV_IRQHandler
I2C1_ER_IRQHandler
I2C2_EV_IRQHandler
I2C2_ER_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
EXTI15_10_IRQHandler
RTCAlarm_IRQHandler
USBWakeUp_IRQHandler
B .
ENDP
ALIGN
;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
IF :DEF:__MICROLIB
EXPORT __initial_sp
EXPORT __heap_base
EXPORT __heap_limit
ELSE
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ALIGN
ENDIF
END
;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
<component name="EventRecorderStub" version="1.0.0"/> <!--name and version of the component-->
<events>
</events>
</component_viewer>

View file

@ -0,0 +1,2 @@
[EXTDLL]
Count=0

Binary file not shown.

View file

@ -0,0 +1,60 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: µVision V5.34.0.0
Copyright (C) 2021 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: CSN CSN, INSA de Toulouse, LIC=----
Tool Versions:
Toolchain: MDK-Lite Version: 5.34.0.0
Toolchain Path: C:\Keil_v5\ARM\ARMCC\Bin
C Compiler: Armcc.exe V5.06 update 7 (build 960)
Assembler: Armasm.exe V5.06 update 7 (build 960)
Linker/Locator: ArmLink.exe V5.06 update 7 (build 960)
Library Manager: ArmAr.exe V5.06 update 7 (build 960)
Hex Converter: FromElf.exe V5.06 update 7 (build 960)
CPU DLL: SARMCM3.DLL V5.34.0.0
Dialog DLL: DARMSTM.DLL V1.68.0.0
Target DLL: UL2CM3.DLL V1.163.9.0
Dialog DLL: TCM.DLL V1.48.0.0
<h2>Project:</h2>
U:\chti_assembleur\grpE_BENSEBAA_GROSS\soft\PjtKEIL_StepSon\StepSon.uvprojx
Project File Date: 04/14/2023
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'CibleSondeKEIL'
compiling principal.c...
linking...
Program Size: Code=2752 RO-data=11300 RW-data=172 ZI-data=1028
FromELF: creating hex file...
".\Obj\StepSon.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: ARM
http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
ARM.CMSIS.5.7.0
CMSIS (Cortex Microcontroller Software Interface Standard)
* Component: CORE Version: 5.4.0
Package Vendor: Keil
http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
Keil.STM32F1xx_DFP.2.3.0
STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
<h2>Collection of Component include folders:</h2>
.\RTE\_CibleSondeKEIL
C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include
C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.4.0
Build Time Elapsed: 00:00:08
</pre>
</body>
</html>

View file

@ -0,0 +1,892 @@
:020000040800F2
:10000000B004002005010008290100082B010008A8
:100010002D0100082F010008310100080000000038
:100020000000000000000000000000003301000894
:100030003501000800000000370100088D050008A8
:100040003B0100083B0100083B0100083B010008A0
:100050003B0100083B0100083B0100083B01000890
:100060003B0100083B0100083B0100083B01000880
:100070003B0100083B0100083B0100083B01000870
:100080003B0100083B0100083B0100083B01000860
:100090003B0100083B0100083B0100083B01000850
:1000A0003B010008C90600083B010008BD05000827
:1000B000E1060008F10700081D0900083B010008DF
:1000C0003B0100083B0100083B0100083B01000820
:1000D0003B0100083B0100083B0100083B01000810
:1000E0003B0100083B0100083B010008DFF810D08D
:1000F00000F02EF800480047E50A0008AFF3008042
:10010000B00400200D488047DFF83400016841F456
:10011000E0210160BFF34F8FDFF82800DFF82810DF
:1001200001600A4800477047FEE7FEE7FEE7FEE78A
:10013000FEE7FEE7FEE7FEE7FEE7FEE72701000831
:1001400024ED00E00CED00E00003FA05ED000008EE
:10015000064C074D06E0E06840F0010394E8070014
:1001600098471034AC42F6D3FFF7C4FFAC0B00083D
:10017000CC0B00082DE9F041DFF8C4C0314B6045DD
:1001800003D19C6944F400649C614FF08046B04206
:1001900003D1DC6944F00104DC612B4DA84203D19A
:1001A000DC6944F00204DC61284FB84203D1DC6909
:1001B00044F00404DC61838943F0010383810F2947
:1001C00000D90F21224C4FF0E02360450CD1226171
:1001D000DFF880804FEA011C88F800C0D3F800C126
:1001E0004CF0007CC3F800C1B0420DD16261DFF871
:1001F00064C00E010CF1030C8CF80060D3F80061B0
:1002000046F08056C3F80061A8420AD1A261114E9F
:100210000D01361D3570D3F8005145F00055C3F877
:100220000051B8420AD1E26108010A49491D08702B
:10023000D3F8000140F08040C3F80001BDE8F08130
:10024000002C014000100240000400400008004063
:100250000000002019E400E070B5194C83202060F4
:1002600000256560A56017486060012000F044F833
:1002700061680843606014490D60086840F002003E
:100280000860206840F48030206020688003FCD53E
:10029000206840F08070206020688001FCD5606894
:1002A00020F003006060606840F0020060606068F9
:1002B00040F480006060086840F01000086070BD85
:1002C0000010024000841D000020024000487047DA
:1002D00000A24A040549064A884202D005498842DC
:1002E00001D110467047104670470000002C0140B5
:1002F00000A24A0400340140012804D0B0F5807FF8
:1003000003DD012102E000202CE00021802801DD36
:10031000012200E000220A44402801DD012100E022
:1003200000210A44102801DD012100E000210A44D7
:10033000082801DD012100E000210A44042801DD34
:10034000012100E000210A44022801DD012100E032
:1003500000211144012801DD012000E000200844B3
:10036000C01D0001702800D100207047012181408C
:1003700001480160704700001408014001218140DC
:1003800001480160704700001008014001218140D0
:100390000148016070470000140C014001218140B8
:1003A0000148016070470000100C014001218140AC
:1003B0000148416170470000001001400121814067
:1003C000014801617047000000100140F0B53B4E4C
:1003D0003B4CB04203D1A66946F00406A661394EF3
:1003E000B04203D1A66946F00806A661364EB04277
:1003F00003D1A66946F01006A661344EB04203D17F
:10040000A66946F02006A661314EB04203D1A66926
:1004100046F04006A66100240F2900DD0124692A68
:1004200001D0492A02D1032B00D10124032B00DD86
:100430000124692A06D0492A04D06F2A02D04F2A03
:1004400000D00124692A01D0492A00D100256F2A51
:1004500001D04F2A00D1012503260222082915DAEE
:10046000076802EB810206FA02FC27EA0C07076024
:10047000076893401F430760026889008E40B243BB
:10048000026002688D402A43026015E0083947681F
:1004900002EB810206FA02FC27EA0C074760476874
:1004A00093401F434760426889008E40B2434260D8
:1004B00042688D402A4342602046F0BD000801405A
:1004C00000100240000C01400010014000140140E7
:1004D000001801402DE9F0410D4604461146204622
:1004E00000F0B2FA032707230626681E4FF0040C1B
:1004F000012D01D0022D12D1218BC20007FA02F288
:1005000091432183228B0CEBC00103FA01F822EA0C
:1005100008022283228B06FA01F10A432283032D6B
:1005200001D0042D0FD1A18BED1EEA009740B943F5
:10053000A183A28B0CEBC5018B409A43A283A28BB3
:100540008E403243A283228C012101EB800301FA09
:1005500003F39A432284228C800081400A43228440
:100560000648844205D1B4F8440040F40040A4F8A1
:100570004400A08D401C80B2BDE8F081002C0140F9
:1005800001490880704700003C04004001480068B1
:1005900000470000A00000204FF0E0210A6942F06F
:1005A00004020A616FF07F42904204D30A6922F08C
:1005B00004020A61C00848617047000070B53B49F9
:1005C00008883B4C82073B4DA4F12006A4F1800033
:1005D00018D50A8822F002020A800178012901D187
:1005E000006A804728888107334802D40088208029
:1005F00003E000882188401A3080288880F00200BB
:10060000288070BD0A88520718D50A8822F0040293
:100610000A804178012901D1406A804728888106F3
:10062000264802D40088608003E000886188401A70
:100630007080288880F02000288070BD0A8812070A
:1006400018D50A8822F008020A808178032901D18E
:10065000806A804728888105194802D40088A080D4
:1006600003E00088A188401AB080288880F40070D8
:10067000288070BD0A88D206FBD50A8822F01002B5
:100680000A80C178012901D1C06A80472888810485
:100690000C4802D40088E08003E00088E188401A1A
:1006A000F080288880F40050288070BD102C014014
:1006B00080000020202C0140342C0140382C0140C7
:1006C0003C2C0140402C01400348018821F00101ED
:1006D0000180024800690047102C01400000002002
:1006E00070B54FF08045288AC10740480AD0A989D3
:1006F000C90707D0298A21F0010129824069BDE894
:1007000070400047298A394C8A07384904F1880427
:10071000A4F12006497916D52A8A22F002022A82FB
:10072000012901D1006B8047288C800702D4A88E54
:10073000208003E0A88E2188401A3080288C80F029
:100740000200288470BD2A8A520716D52A8A22F010
:1007500004022A82012901D1406B8047288C80063F
:1007600002D4288F608003E0288F6188401A70804F
:10077000288C80F02000288470BD298A090717D5AD
:10078000298A21F0080129828179012901D1806B10
:100790008047288C800502D4A88FA08003E0A88F12
:1007A000A188401AB080288C80F40070288470BD25
:1007B000298AC906FBD5298A21F010012982C1792D
:1007C000012901D1C06B8047288C800403D4B5F87F
:1007D0004000E08004E0B5F84000E188401AF08075
:1007E000288C80F40050288470BD00000000002098
:1007F00070B543490888C20742480BD00A1F1288C7
:10080000D20707D00A8822F001020A808069BDE879
:10081000704000470A883B4C3B4D04F1900492071E
:10082000A4F1200618D50A8822F002020A80017A73
:10083000012901D1006C804728888107334802D400
:100840000088208003E000882188401A30802888B2
:1008500080F00200288070BD0A88520718D50A88E7
:1008600022F004020A80417A012901D1406C8047BC
:1008700028888106264802D40088608003E000882A
:100880006188401A7080288880F02000288070BD20
:100890000A88120718D50A8822F008020A80817A8D
:1008A000012901D1806C804728888105194802D42C
:1008B0000088A08003E00088A188401AB0802888C2
:1008C00080F40070288070BD0A88D206FBD50A88A3
:1008D00022F010020A80C17A012901D1C06C804740
:1008E000288881040C4802D40088E08003E0008856
:1008F000E188401AF080288880F40050288070BD7C
:100900001004004000000020200400403404004097
:10091000380400403C0400404004004070B54349A6
:100920000888C20742480BD00A1F1288D20707D096
:100930000A8822F001020A80C069BDE870400047C1
:100940000A883B4C3B4D04F198049207A4F1200621
:1009500018D50A8822F002020A80017B012901D100
:10096000006D804728888107334802D400882080A2
:1009700003E000882188401A3080288880F0020037
:10098000288070BD0A88520718D50A8822F0040210
:100990000A80417B012901D1406D8047288881066A
:1009A000264802D40088608003E000886188401AED
:1009B0007080288880F02000288070BD0A88120787
:1009C00018D50A8822F008020A80817B012901D10A
:1009D000806D804728888105194802D40088A0804E
:1009E00003E00088A188401AB080288880F4007055
:1009F000288070BD0A88D206FBD50A8822F0100232
:100A00000A80C17B012901D1C06D804728888104FB
:100A10000C4802D40088E08003E00088E188401A96
:100A2000F080288880F40050288070BD10080040B5
:100A30000000002020080040340800403808004032
:100A40003C0800404008004070B504460D46194976
:100A500019488C4203D1816941F400618161B4F18C
:100A6000804F03D1C16941F00101C16113498C423A
:100A700003D1C16941F00201C16111498C4203D126
:100A8000C16941F00401C161FFF720FC0646204620
:100A9000FFF720FCB6FBF0F0B5FBF0F0010C4A1CB0
:100AA000B0FBF2F02185401EA085A084112020809B
:100AB00070BD0000002C0140001002400004004006
:100AC0000008004002E008C8121F08C1002AFAD13D
:100AD00070477047002001E001C1121F002AFBD1BE
:100AE00070470000FFF7B8FB41F698142146134801
:100AF000FFF7AAFF124A02211048FFF73BFB4FF411
:100B0000347203210F48FFF7E5FC02236F22002116
:100B10000D48FFF75BFC0D48FFF73EFD4FF0E0206E
:100B2000006940F001004FF0E021086108460069CB
:100B300040F00200086100BFFEE70000000800402E
:100B4000510B000800040040000C014000A24A04C0
:100B500000B5124812490A6803689A4217D0114832
:100B600052001044B0F900200F4802F5004240F254
:100B7000CF2302FB03F24FEA2242026002B4104686
:100B8000FFF7FEFC02BC086800F10100086000BD30
:100B9000704703484FF0000101607047CC0B00081C
:100BA000A4000020D40B0008A8000020E4360008B0
:100BB00000000020AC000000C40A000890370008C4
:100BC000AC00002004040000D40A000888150000CE
:100BD0005B00000001E5BA50C6FAF32A40A4D8B57C
:100BE00063747EAA6430B03F0080F233D15892B073
:100BF000EC1197146594AA4B68EF38E32C6064AC51
:100C00006A3861132BE42A53B0A933E6791A24C851
:100C1000452051F7C6E53F3EF9CCC0F1774CFBC308
:100C2000FE1ED95953D861EA4DE46E0F3D1ED4DE45
:100C300096067FE5F9E5AC1568C2BEF795496FCC1D
:100C4000A50DBD546FF40F2084CD60D79B3FDFA965
:100C500020081154F9CFE5F2B60E38F9F300FAF393
:100C60004C15C336E5DE82016AD0CCCA0D517FF83F
:100C7000EC10972BA9BC81DB1E26D2D2DAFE3420E1
:100C800041CBAE493F137AA7B5FA72E8C2F8F537FF
:100C90006BF57FF9B71D93E86F378FFEC0C7A24A87
:100CA00067DDBFF42615BECFB53FE4FAABDA3C25CD
:100CB000230C59FAA1E3FFC2E92115ED6FCBCF7ADE
:100CC000D4CA14EE4D0D4DA2FF7FDFFE19D87B78FC
:100CD00009BF24DF56F36BF3CC346DBF3FD6FA3334
:100CE00036C493D53A2C62CE8640701BE4CE516652
:100CF000689C6500C446B3AFF44FEDC84DD0B3480F
:100D00005306841F75D56FE38B27C6FDC2109E1D49
:100D100001D065FCD61348E57D4441E167C924084C
:100D20007CDCDE2DC5ED93FEB0157CDE8E0447180D
:100D3000F011FCE9D5F140BA6F1FB3317CA1FF1867
:100D4000CD404CD22AE8465B61D29CD0CD5767B6E5
:100D5000F609402759E54E1D72FB1224D8C9D1DB94
:100D6000902200EABC03130BCF0D27FB44137DF147
:100D700045F74318FBDAA3EE5DD08726013D0BC98A
:100D80001D15A025430141CC72FD623AFDCDD90568
:100D9000060A3E068B25CCC7A9FAA939F9FA799833
:100DA0002848E5490B9C223F56B5C9ECE84EB6B839
:100DB0003F2C88F86F0DC5AD181AFF7F4BAEAE36CD
:100DC000F5CE3602D904B3DBE35476BC492356E0B2
:100DD000D7FB0A21FBB0563478F342F2501548FB9A
:100DE00069D4192C9F1896AFF87B6ABC4BD9366C26
:100DF000C5C3070908EFB1FB76D0542CF50C1EBB18
:100E0000454D5FF120F012F9820098E6F10C9D0A41
:100E100051E27B3870F0F1F863061BF6BF09F0E48D
:100E20002D085F07C7F49A2FC7CB800B023575C01A
:100E300098FC0EFA85F271EE583F9109E2036128A1
:100E400087BD6401C5FE77F7C1ECD80AD7F982ECFB
:100E5000462FABDCCF0F381062A3A411C224D7CF2A
:100E6000AE0D1D2B78DD34F79C3B03B3F90C473FE7
:100E700047AE9D0EC72338F657F1822967F4E3E9A0
:100E80001A1361D3AC2B871155D11E13940D8BE629
:100E900011285C1678C81E2828F7ABC53948DE0330
:100EA0001FCC2A13501402F57BF90016FEF657F1F9
:100EB00031DE2808630A17F66830DAEAD50362F6ED
:100EC0002DF24208F5F6AA2198BCC2F9D51C5C00A7
:100ED0005F06BEE5B02DB6CD82E9642FCCF0E10807
:100EE000C4193FFD8CE0BE3B43D4A1E0A2480BC730
:100EF000B7091AFB54132A2C7FE37D0688F8931454
:100F0000DDDB380EE51E10C605124609A2DF9C1176
:100F1000741ED9C57612F31565C0403ABFF48BFF35
:100F2000E3114EC7B53A11E8BE0E9E307BCDD30F0C
:100F300059E4E6048C0F5FF3292DB403A6C9D61536
:100F4000571D1BCA373CE7EA70C63A304BEBAE1E62
:100F500041F54DF848FE62E1302076E8AC15FA091B
:100F6000B20A0E108EC17E14A21CA3C5D200E727C0
:100F7000D1C2BC2FAE1F26D6A63596C56F0C9010D9
:100F800030E0E241AFD91DEFF63347ED8AEC94260D
:100F9000D1EED1EC0A0D6DFE2A14C4DA350AA50E85
:100FA000C6E67C0A84F8C8060001911DB1FBC2B9EF
:100FB0003824141814C5513AA10C78B5052985F2C6
:100FC00099F55A1F59D3C41C3EF01DEBBD3FD0E02C
:100FD0000DFF620B72D39CFB280917209109E5F1E4
:100FE000822D98E6F4D26A4F7AE98DDF1320FADF7A
:100FF0003A1939092918380E8AC1F90D41F6BDEAA6
:10100000972996F2A3EF16105BF3CF0D21EC3FFF6B
:10101000FC2A82AAC101CF0E7EC0E546E5079DDF0E
:1010200019FFCCDF391C1E11D7FC921930E360EE9A
:101030008616E6EFE7FE0B068E0388F53CE4932761
:10104000660C58D7472A15EA1DD7CA3E44FC4A0702
:1010500035064BEDA4FE49F5D73C1F0B34E4512572
:1010600069EC81EFD229A0E5B30587FEE6C47832AA
:10107000B3092E00163BA1CE32D7A10CAEF69607CF
:10108000D7258B10ECCE77F79A3010EE26FDD30FD4
:10109000D8C84E09181996F0241D02F530F523F929
:1010A0008AEDDF14EFEBD3F869FEEAF16F209FEBD6
:1010B000DC0D982629AF8507A025CBCE8531F0120F
:1010C0001BCABC190B082BE5B4182808B2F9E602B4
:1010D000B2F6721047002EFF730DCAFBA2F0F6F1B4
:1010E000451FC1FE8BEA021E96DCE7E70128AFF040
:1010F0005CFF331481038BFECDED97008A0253F120
:101100008726FE1D09E92614AFEE65EBF8FEB8ED63
:10111000880A44F98D1C3A1743E949F88E031EFEEC
:1011200073F9FE0BCD0247EDD006CF0EB6F80A0BD1
:10113000C40439F1F8FC71EE11FD390B52F5E822C7
:1011400090F7DDDA512415ED47EE681850FF53F1A2
:10115000300B37144FF01404BEFBA2F371FF2006CE
:1011600092040800511080F4C3F32CF4431450147B
:1011700007DEFB1672FB73E4B402950AB71CD0E0DD
:101180005800340E65FC11153D09CBE16CEF9B173F
:1011900085DD730EB015C2F94BEC91F33D2037E9B4
:1011A000D601B8186A0D4ADCDA02470259FAFB2E5A
:1011B00037E9FA06EBD49DF7E51EC3DF2323DBFCFA
:1011C0009AF3020CC9FFB5FA51F8340E45F6191519
:1011D000ECF9C0F08E1931F39D0C61E88CF6121019
:1011E0009F03BC057BF7F50D4FDA56080D1244FC42
:1011F000570649E33C0F3601BB07D80A85F1700456
:10120000CAFD200802F6D3112E03AEE2BE1080F50F
:1012100079053A048C0CC4087BF8D2FCDCF67A130E
:101220006FE10F1CCC0759E8021F72E5C502AB0540
:10123000A9F8E4FA61FFEA030AF6EB12F608B70828
:10124000C3E036ECDB125EF63E1925EF61FDEBFEE6
:101250008A04D227F6DB520C0AE335F01F200F0A6E
:10126000CD182CE20C018FFF91F541F7DA187500CB
:10127000EFEB4E20F2DD1E138A041DEDF61BFBDAA8
:101280002E027AFF2D06BB1D94FC43EC7AEBEF1780
:10129000FEF5BE103E05F4FB860259E87D1768F0A6
:1012A0003E1AD0F5A7EDD61350E96A260EF7FCFEDC
:1012B000D2006FCA83119120670837FEF4FEF3ED68
:1012C000BC044703E5F38519B9D53B163D0AB7F4CD
:1012D000602DDBCFBC032BFA76FF9B02A4FE2420FB
:1012E0005CFF71019FEA4E08C5ED96078009B6F5CF
:1012F000BF0C66E3DC22ED0862F74D0C36C4951E88
:1013000098F9F8FF842228E1662506CAE315B5FEA0
:10131000AB18510D2CB6DE4098CEB4410AF8AEF3AE
:10132000322E809F751643FED020941133FE05E9BE
:10133000F1DF7E13B0002F3BF9F90AE14BEC0CF022
:10134000BE0D5B1A0E2220F0A8FEABC73CFA741D3E
:10135000200A543DF7D547EA95F4AE09F9257A14E9
:10136000EBFE37D4A0FB03DB8E17BD16990BA90D3E
:1013700064D861FF11EA5D127C1F5B08210116D160
:10138000D8F4A1F9181C741EBBF4CB0C6ECF3F022D
:1013900016117406BF1D0AFAD7F8FBD90511B9E674
:1013A0006419DC3715D5FF0549E178F5B415B81A8D
:1013B000EF146EE865FD24E0D40B5D134A0A601754
:1013C000CFE31D04DCE0F6050B1D0A0BFB16B7DBB3
:1013D000DDF147EBC113FB1AEC11B9FE33D23F012B
:1013E00064EF8A150D272FFE0EF9D3E443EC09FCB8
:1013F000F61DE314570484F472CF43028310AE1F2A
:10140000541550E9FEE0A9E20D148C0F652A640220
:101410005AE1EBECB6E3FF1B0A0D7C1EFDFA78DE09
:101420002DF180F4BA23340D3A1712E2EBD58E0574
:101430002600C432990D2FFDC7DF05E5C6126C04E6
:10144000B527DBFD5EF726E96DEDAC158104C224FE
:101450003CF811EA19EDD1F0421BF90DFB1AEAEF45
:1014600025EDC4EEE0F8152A54FEDC0CEDF3FCEBA0
:10147000A5F896048F12A800AF1C77E10FF4EA04D8
:10148000A2F2891BE00EDBFD0DEB02F5D3FBAD10E4
:10149000E714D7F80403B4EA01FAC0076000921910
:1014A0008DF371FF35F32CF5630A5C02BD148DF2E8
:1014B000BBF5BFF59D0D59FC71013311F0FB180709
:1014C00011EB2D0423FBE00DB30883E4BA0E8CF678
:1014D000D8F3FA1B970285F261FFC6FA16FBB51026
:1014E0007901DBFD5A0971EDF204A8FFD30EED0975
:1014F000DEFFF8FEF3EA800969FE2E1775002CF86E
:10150000D4F6F3ECF50D680483104B0497EAD6EBA0
:10151000FB01800CDF117F0E4CEAB8EE9A0423FA2F
:10152000F317790530F5A8FDC4F2E2009B034717D5
:101530002CF8890630F458E9CA10A4FE831153042C
:1015400013F4BBF33CFAD4097F0E4F01B6F595F3C3
:10155000E4F8D907EF13D6007EFD11004EF4AB037B
:1015600040FC170D9E07B804FEF43DF467082AFE00
:10157000200A7E0190FAD0F5E3FD05FD6F0D6708A6
:10158000B5FC48FC49F8B00104FF31056C043E038A
:1015900006F9F0FC23F974069D0B15021AFEA5FB53
:1015A00063F5FCFF340CD3FBBF088CFA61FC27FC0D
:1015B0008A049F003202350AB7F20800E0F7DA0029
:1015C000E00D3105FC0065FC46F17EFE7409DD0787
:1015D0005707B9FC55F8BDFD1AFB9300381044FDC0
:1015E000BD01DBF902F84205380C07073BFF74F434
:1015F00053ED2D07CC07620F81045FF27CF55B058C
:1016000011FEB3081B0E9EF3970087FAA5F7780921
:101610003D0C7A00C90089F39EF1AB04120D730AE8
:10162000DE0252F401FAC003D6FE280B09FC65FE67
:10163000A5FB69FF420569018E047101D1021CF10D
:101640003CF9B0024A0A1E10A4FE03F3A0FB66FA9E
:10165000C904FD0C16FD06F9E3FB87FD1D033D08DB
:10166000BD004A0622FEE8FA27FBC5FE8E02FE09EF
:101670005705B6F6CBF977F6060E280BA4FFDCF774
:10168000DBFB9F01F303B0010EF771FF10EE4BED92
:101690007EFF1006441080379230351EC00664D796
:1016A0005DE7A5E30BDFBCEE88F53E07800AFF1A75
:1016B000BB1D18F3C8F3000056F6E7FF541403F1FE
:1016C0003CE68F1159F9D007380D12F9DD082310C7
:1016D000BFF57AE89A0413F3E908AD0F1BF5EE03A2
:1016E0002A01A2077103B9FCBEF70CED6BF52504C6
:1016F000F207010E8E164DF80400CAFB00FED8F565
:1017000012FCCBF564EF0A215EE4A13AB9FEDFD109
:10171000A61E03DC8600D3FAEA06B9FC4A1D42196C
:1017200049F77AFD9DDF5207C2254CD147EC1F0CCB
:1017300093E78D4961FEA9F90B0725EFC2E4FAF1A1
:10174000B5FD94F86C30F3EE78201C09A7F062F731
:1017500074F188F751FA33FD8AEE5635E80FB0FF81
:101760004B02CBE1AAF32B12EEF2B8021C096BF785
:1017700044103A0206F85306000079F0FA094CE8E2
:10178000300BE314BF08410CD4F65DE573F64F1738
:101790000FF6B81626FEECF84D0F1002CCF43A0402
:1017A0006AFC23FAB70696EE85053A05A207F0FB18
:1017B000C30903F2E200670737FC740966F7E70024
:1017C000DFFB6804D8F6EE035EF9E711930045F8F5
:1017D0007C07F3EE5E0C0304F5F67CF2200A0110A0
:1017E000FD0CC3F641F4AEF376FE3B0184F61A100D
:1017F000390AB309630847ED0CEEAE0CF9F79C0FFC
:101800004CFF9AEF2D0831076B0B6002CFFAEAED1F
:101810000BF3B9FBA90D7407900C1C059F0292F104
:1018200049F841F551FB701C0EF99B0376FCA801A9
:10183000170B3A06E1F336EB82FE7904D907EB1376
:10184000E1072CF8A80092EE4DF724F500012102E3
:101850002F0F890654FD670958FFAF043AEC34F6A0
:1018600033FB69015D141C0866F9BE0E4AF2F0FCF8
:101870003604D3E431078009AA0851FB8F0040FCED
:10188000E00DDFFD78F16C0483FC3605D30E6306B2
:1018900015EB060A5FF3D2FC9D0B9EF293FD7008D8
:1018A00043FEC101BC044AF29C126FF6C00448100A
:1018B000C1ECCAFD2F10D3F9AEF8611227E4D2FEB5
:1018C000BC1A17F8C6FABC060B08B5FBB5E7F3005F
:1018D000F90F24F4020A501469EC4AF3C81B49F5C5
:1018E000F0F95706FBED3202380D371400FE81EF98
:1018F00081F11914F3EDAFEFF9250DEB1005561E2C
:10190000B7F4B4EEFC0015FE170ACCF3FDFBE313AD
:10191000B0EB8B10071AF2F163E0E107A30481F04A
:10192000E108A4FFB31B7EFEE6EF1612BAE1A6079C
:101930007B0E53F165FD59FB7119F1F86F0B92EFB6
:1019400074F43BFDBD01391FE2D9BE109607C102F8
:10195000D80880F394FBEDF7660C4AF3100617F8ED
:101960009B036419DEEE6BF773F7DB12E50723FBCD
:10197000660D9ADBD10453051B0C8FFC77E2FB1834
:101980001004A50F7CF5F0F92CF35207B51459E8B3
:101990002BFBCDEFFF1AA20A0DFEBB083DDFEE05C3
:1019A00033131FF99EF2260074083D0B59107CDF9B
:1019B0004607E8F800FE0622C7E1821546F17614D4
:1019C00090F7CAE79C138FEBE61737D2A5370EFACC
:1019D000B8ECAB317BCC0B1E8BD232014B1AF4FD31
:1019E0005C00E5F3E83AF8E903086DC08D09C62408
:1019F00090CFE04EB2CABC18CFFA8EED29193FC085
:101A00009C3EF5CB513AB0FF29DB4D2312D0A53ACD
:101A100022D25F1CA6DE4011C70B2DDCC63D78B478
:101A2000EC50DAEAA7EE3BFCC7DFB73451CDCC1D52
:101A30000ACD2918781FA524174C669062F988CD25
:101A40009206613D130B53306EBA990DE5C92A1306
:101A5000402498E339348CB969282FFBDA01290630
:101A6000E2EE02F4FEDFB24BC2BC9C2541F434F836
:101A7000594FDFA8332832D9B4EB1F367C0B1E1226
:101A8000E7C0840B85F36A3CAF06B2E05D14DFA8C3
:101A9000B42DECFBB819B6F92EECC52BAFEE7323C1
:101AA000DAC03A189BEA5303B6247BB88824460868
:101AB0000235060A6DD5E5DDAACAD12EE40B8710E2
:101AC0001D04D0F2DD30E7E8BC0643EA4ADE9F039E
:101AD000AB06E909A9F85539F302AD105ACABFDFC0
:101AE000C21027E54F2E2DEEEF00F1F66B21C81B3B
:101AF000FBD9EFFF13DE8710E1F282019C2528F568
:101B0000222AA1F7F7EE45DFB1E683244EF5201C2B
:101B1000D9EE4A088A1799F4DDEF5DE6F00EB8EBCE
:101B2000851AF8EA911CD506FCE8BF4AC1BD7AEADD
:101B3000FE0897E9792CDBF98CF71D198DF527FC48
:101B4000A910E9E07EE86A2384E065291B0DFAB25A
:101B5000AB4591F5BC021F0F21DAC9EEEFFF680318
:101B60005815662537BEE8234B00B3DBFE2113F77B
:101B70004BEB241D12FA3ED9F93AF8E80AF7262A67
:101B800016D026FEAE1FD4DD313096F1A2C76331E8
:101B900043EB48FCF93813DEDFE83326F3C24F1B72
:101BA000EF16DCE05A1F5C009BEB060EDE029DE3A5
:101BB0002F28C2D1A2F5673584E1CB0EF538FBC2E0
:101BC00054EC622224C72627E311ADE5A21EE6EC01
:101BD00046EFAA35B3DC90F94E1C9AC416103A2E83
:101BE00055E3D615B4190BB48820D1EE9CFB3C23E9
:101BF000A9CFCD18340EA1F79E098B27C4C61804AF
:101C0000631C0EB8472EB20B14F29534B1E4B1E761
:101C1000240BBAE5EA1A8310C6D08908882132D885
:101C2000082CA20A00BE8B2665FC1404440F3CE677
:101C300048FD7A1475EB0B08501554D3222A540131
:101C4000B1CFC92B76FC44E4A429D6EC0FE02C20BC
:101C50005EF5A415170A60C2AA1FB309D0F16B3450
:101C60004DE299DFA412ADFDDCF43A1BE5F2A7EDDD
:101C7000CB21E2D9B3082D1AF5E1C625CEE9CAD3A6
:101C80009A3214EEA6082A2A0ACBE3E6F7154E0686
:101C9000A3040B1DBBDE9DF92F1128DEB528D8F457
:101CA00081F1152C85D901E65924F0FA0707CC1BE0
:101CB000C3CA01FAD51C06F9E11BEFEBBBE0C72054
:101CC0000AF642069D20D2D2F6F2A21D6CF2C101A4
:101CD0004C13D6D79717BC1934CC9312F2F15EF996
:101CE000A61D29EFAAF5461A712C340B9EF397D640
:101CF0009B02B7F11DEB8D346AE675EFD00994FCB9
:101D00004B1921052DF2C9FFC70A05CF351C120F4B
:101D100013DED049BBDE8AD89F2C2BE4C2F8B9264B
:101D2000B8D97CF2A92643EB3D1FEA0367C97626A2
:101D30003E048DC7CC1FAB04F3EC5C2D8FE733FF63
:101D40006732E8CCB3F3E7166DD7CE13E00F35F466
:101D5000862C4EF48CB86332CF100ACFC02D6FE0C2
:101D6000C5FF1C31C0DA9C0F941125D87408AC0152
:101D700074DC5E243B1412E5FE1F6DEB9ADDC52C6E
:101D800022EAA0FDA719E6DBE00D0B1B5BF33C0D7F
:101D90008AEB45E23A1B07F446083A1B81F198FBAF
:101DA0009E078AEE5DFAB51190F74302A0FFC4EEDC
:101DB0008D078D1EE1057CF512E577F8800817F494
:101DC0009A1B58006AE5BC1830F7AEF5BF1FC2E792
:101DD0002BF95E0D3DF32FFC0F0A76FDEA03520C42
:101DE000B3DDF315520A49E4251924F15CEBB01870
:101DF00076FE47021805B2F6DE026EFD12FA3F01CA
:101E00004E06F7EDAC17EFFEC1EA531B8EEEEA0269
:101E1000B110C0DC7EFF0926ACEB7E00E80EA9E421
:101E20009713EB126FE1F41073F546DDC12AB5FE8E
:101E3000B803AA0CE3E764027406D5ED25051F0D6F
:101E4000EAF0840A09FEF701A0132BF94AF3F4FD26
:101E50002BE407055524F8FBCD0037FFC6E59F03AB
:101E60004413A7EC7610F4FB32EC4B17F8FBA0FC04
:101E7000410C03F32FFC6EFCE6F0B81618072FFA9E
:101E8000C1FE1101B7F4D103D506A0FF29051AE45C
:101E9000DC0B5B05E8F9B1129F0030F98E0405E90F
:101EA0007DEE9825420681F1F10ABFF6FDF7B111EA
:101EB000A9F8FCFF0EFAD0F13D0AA90D50FDE3FE92
:101EC000A0FD91F2170B99F46806730D14F1D1047B
:101ED000E4F83DF6F3175DFE8DF2F41325EF24F1DF
:101EE000BF1EB9FC47EC3F13C7E300FE41221DEDC6
:101EF0005F08E202F2F0D007C404D9EE0707DD075D
:101F000051F8680527FC58FFA50E76FDF6F4AF04DE
:101F1000EAF12C094F05BEF8910A34F99F02300C02
:101F2000B4ED7CF3BE10D4F43506481470F14204CD
:101F3000FB0566E56709D40BABF0BB0B21057CF410
:101F40002EFF93003D0C980EABEEE1F491F58FFD62
:101F5000FF04730C030594FB1501F9FA7A12CBF513
:101F60005802AF04F6F34AF1D1EE6A11641AB111C6
:101F7000C6FB3B001EE6FEDF590F9C1180F32A02D0
:101F800057059204340FDE0312F9CAE83AF0F9F863
:101F90005C15F8119D0C4B0527FC4CFC7FE4D8F731
:101FA0005C0346F1AF08AC15CEFCFB1911FE09E647
:101FB0000C0208EBA1F671167A0026FF9F18A70203
:101FC000E3FF61FBF4E7DDF10304A8FDF10A3D0B3B
:101FD000C903031927FC81EFC8F082EBEB01400F26
:101FE000C5014B04240BEA02F60537FF76E9A1F799
:101FF0006EFA23FBAF1DD8F566F9751978F5280838
:10200000FA0907DD840AD10196DA181AAC1644FBE6
:102010004608E50990E40AF90E0D70F158FF5EF6E6
:102020007903B4041B0B741C5DFA3FEBA0FDDDF0DB
:1020300091F408179604E3FC1B0AD7F9BEF8D00602
:10204000B306E204E5F27AEACEFC3D098505E11C1F
:10205000FF0403D9EA035302EAED910ABA0C94FB98
:10206000B1123B120EF852F6AAF6F9FAD2E911E7CC
:102070001113AC13CD020F20E3FE22E80EF90EF788
:102080001EFD8FFED103AB03F8FDBC05BB1C22FC7B
:1020900053F03BFFD3E4B2F548104E0AA400660C9F
:1020A0005A0A56F565FF9CFE2BFC1CF3C8F37C0B0B
:1020B000A6F5410C5A20C0044EF492EE20F3B1FB79
:1020C0002A023700230C63F5FB01060BBB087B0DCE
:1020D00085F32CF59EF49B018FFF570761FC38F6C2
:1020E000B514A607B7F377F8A2F20AFA900F97FE95
:1020F000E6022D05D6FFF8FFC80523F941F3AA082B
:1021000093FDE2038D07A6F215FFC30C74F2930052
:1021100076FF000187FCAFF2D51AFBEF4AF3301FC0
:10212000DCF4B900AA0C78F359F973F8A10DB9FFE2
:10213000B5FBDC0D29048EED01FAEB1277F88CFA71
:102140007BFB1EFCB2F77118C70CA6F3F30166FA0D
:102150004DF9DAFF0B0946F3EA03F0FC880A3BFE6F
:102160000FF6A10E2FFDD3FAE9F4C7F502F8D21647
:102170003F1433FD24F42A02F4FAC4065B0563F429
:102180001FF817F8811B61FE82FFC5FF9B016AFAE9
:102190004AF368047BF742068C0C2D06A6F31C0953
:1021A00000FE6401BEFA72E982016709F3171407A1
:1021B000790202F428F53EF1CAFA33FD9B014C1175
:1021C00097FE2F0F11FD02F7E0F990F85AF8A4FCE2
:1021D000F61CAC141AFE5DFDB7F1E7E916F97EFFB7
:1021E000130CC6FA9108FB1998FBD4F64EF133FE96
:1021F000ECFBC3F63909410B680335096C038CF914
:10220000A4FD0EE302F7C6125A0BE6016D01091098
:10221000A0FE0EF853F017F7D7F950FE6511180716
:10222000D80A27FA05FCC100D1EE08014302F8FEE6
:10223000ED0A1AFD18065E0B6EFA87FEEEF11BF72B
:102240008A00E7FF5207C0078FFC0802F205FDF97C
:10225000E3FC53EF670A3E06D5EF8FFF340B2C0DDE
:10226000A1F94205C4F15BF2DD07BB0B8DF454E923
:10227000042ABB1E42D9B9D1292DDE2E92DBDFE51F
:10228000AEF7B511EF1363F251F853063E06B3F102
:1022900003F1CC1DBB0A18F36EFB5BF092062A1506
:1022A000790265EA5DFDA3011D02170AEDF3A90D90
:1022B000520844FA14EECDEB841FE9092CF8EA0425
:1022C00018F2C4EFE109681837FF3F02FFEDCEFEB8
:1022D0007FD102B8FF7FF8500080FBB0FF7FFF7F07
:1022E000008000806B61FF7F340B00801C09006D53
:1022F0001CF3C807A58FD2FCFF7F99E106CA29DA33
:10230000C9155D527140CA910080FF7F9534FD90E0
:1023100048128FD3B93D7F25B6E2A2B2B621A25FA3
:102320000080F0282032E8B94D3680F616F906DF35
:10233000E932C3F68EB0FF7F02CA3BC08A2E92D725
:102340000C30ACFE000095CC4E1DE729E1B2E15DFA
:102350000DD426BFD54678F533FB77E3E91F0A0B8A
:10236000F4FC1C057BB77A284E1DD8F3BF09BFE0EB
:1023700065FC1C09C03120F069D305258DDF4300C1
:10238000FA1CF1F5570472FDED08F0D1AD25EA1AFB
:102390003FBE4C3F8CE4A4D5A32C06F76E0EADFCDB
:1023A0004D0FF8D271FF3B41F9BA59268D06FDCF8A
:1023B0008B2646F3510D6FF4A90EEAF1CAE95F1DB1
:1023C00025DB252F1F0CF7D7D904020BFB017AEB75
:1023D000851CB3DAE2003F28A9E35815F8FD91F611
:1023E0002EFFE203ACE945F5503F56DF03F0BC3069
:1023F00010DA43ECCA1334F66F0C070796F08DF32E
:10240000DC1F1A13B5D0951DFADEC7F4373FE0E1A3
:10241000CF0C9DE3800CA50D71EDC128F9BA510DCB
:102420002B23EFED211608EBDD08BFF2FE094B0070
:10243000C2E47721EFEB4302A31631F015FEB60B91
:102440006BF3FAF1251A71EC85F0CC1F200847EAEE
:10245000A608DA020EE51222A40022EA4B17F6F3D0
:1024600008ED510D410B7BF8BDFE27FABEF8EB00DD
:10247000AD110801F1F4890751E5EB16E80CFAF407
:10248000CF0DDCE35A0CF0F90C02640492EF062144
:1024900010EFB5FA61FFF1F48C0F9F0189062EEB66
:1024A000AA08630713F33618EEEF1FF7490C7FE60F
:1024B0004811922F90CC0CEC4D36C2E49CFD3FFFAE
:1024C0006AE3F9254A067CE0BD01C320A2F498E343
:1024D000DE19C2F958FEF10BBAE2B8045A1FE0F94E
:1024E000AAF2450B75EF8DF27518D50310EF940E17
:1024F000651140E4A400660D46F11210980FF2DE5B
:102500002BFAF00EC5E9A718D504F7D7490CDB1252
:102510001B0C51F7E00CAF04D3E648100DE997020D
:10252000B71CF4E7CD00FD0E2DEF0AE3031C230DCD
:1025300040E55014BEF738F6A717AEF702F87C0B4B
:102540004B02EAF1CC051002FCFDAE0933FC27FB7F
:102550001BF56AFC09FFE7139A0638E2BC03AD0FCE
:102560001FF7B000300E17F696072FFBEEF0C211E2
:1025700097FE51FA00FF960439F588F7C917E20370
:10258000FDF8B9FC28F2CAFB19180C0442EFE9095E
:1025900000FFD6016B0CB2F4E6F0B0026C0365FCF0
:1025A000950CB1FE8BFB35070DFF99F641F3FB024D
:1025B000D6016F0D9509F7ED910A9E0813F5930169
:1025C000C0F0A8003E047008460833E8230C16FC4F
:1025D00065FF331493E89EF4C309DF110D00ED0885
:1025E0004FECB4EB7F270BF490F9ECFA7F0F6A0EF7
:1025F00042DB140519010F1DF7EFD1EE5F07E1F281
:102600005319CEE7841FD8F729EFE40F3AD80A25EB
:10261000C2FC16F9B709000270F3DA01A61D17E132
:102620001114D5EF04ED3F14DD072BFC0EFA331423
:102630006BE22213F3FF5EF637FC09FBFF1A05E994
:102640006515D5EEAB079CFE01F97AFFF9E1453738
:102650008DDD5A1FA4FE9EDE891DB6E47A117BE44F
:10266000112921ED95F493297FCD1127B9E911FDA9
:10267000CA1075EBE10722E83E2DB3F15400D40CEB
:1026800034E1160FE8E4D32328F65703A50EA9E298
:10269000FC1404EA2F11EDF5BF0C9DF864F07613DD
:1026A00094E4881F1FF76FF7F303CD01140356F46A
:1026B0003616FEF5A4001CF1B402081832EECB0F5A
:1026C0001BF5D4F5A1F8DD07F50C75EFD02055E723
:1026D00067F3CD00B5108A1540E78E161DD8BC02F1
:1026E0006913BBF3D7110400B60B2CE04B05C500F2
:1026F0004CFC0C17FFEE4E0BA3EE26FE3B0197178A
:10270000BEF886D67F3B6DD80AF7B92652F2AC01E7
:1027100014F2871303EFEBFE3C0D6EFC9B004301AC
:102720003B01A0E860177100C2F9E00FCFE1C102E0
:10273000A10EBBF52409A50CF8E8A1F9181AADE320
:10274000DC0B2325E3FCDAD5DBE7B2372FD1900F82
:10275000663B3EC5750276FE41F4D229F8FB76E968
:102760005B1E33D0F300222666E3B331FCD568EF5D
:102770005A1F7FE35E2453F112F8A8120DE630F4DD
:102780007D2E55FCABDAE11E23E1DE17C40677E2AD
:10279000772125DB0A0EF413E5F28908D9F2C8F394
:1027A0008F15690028F2AB1AABD9840BFA1D68D8D3
:1027B000BF1E54019ADC780A340F40FC390B8F009D
:1027C000CDEB310904ED1A0F840DA6F4140767DF71
:1027D0005C19780AA1F9A90E5EE3CAFBD6157BF74E
:1027E000A7EE631DC9EC6000211835F1AF08C1E800
:1027F0003D0BF60735F1900F38F66001E907B0ECB4
:10280000990BF00EFAE0BF0B9300FBEE1A26D2FFF5
:10281000B0EAB70807F048FE8C22E6EE98F912FB02
:10282000F6F05028C5EA94FA11152ED4791A6C1DC9
:1028300057DB410BB70A7FE6ED0C700750FD150220
:1028400031F0F208A1F65A0DD90381EE662272D258
:10285000CFFA9B2A9BE99B00BC06D3FB36EFF11F06
:1028600001FD38E45A1F03EFCEFD1B0B9CFB72FDEC
:1028700049F70D1116FDF0FA290747EB40111E101C
:1028800045E2E7119F01EFE9A10F76FF01F9D40BB3
:10289000B2F940F9800C26FF710361FDFDFB33FCAA
:1028A0006FF682139CFE60EF441339F5A9F95511B8
:1028B00011EC410A2C0C7DEDFF056A0FBCEC8CF786
:1028C000AC147BFBBF0841F762F6910828F49D0D1C
:1028D00024F46F0A280853DA0525A4FF68ED97173A
:1028E00008EDC3F648115302B3F0B01830F8B2E166
:1028F000E11DA0FB67F5D40B00012BF9F5F7450BA3
:10290000CEFBB1FBC20E38F7E602C101E9F2170BAC
:10291000530430F5CEFCF50BE9F201FCD31102F7BC
:10292000C90126FFDFFAAB039A04BC02F1F4B70A2F
:1029300050FED1ED421A7AFCD0F12B10D8F6F9F9FD
:1029400081054B01BDFCF20877F61BF586155DFB92
:1029500061FC3202B803EF010FF33313B6F638F619
:10296000900E1DED4F174CFEEBE9620E51FA00017F
:1029700087FE780A26FDFAF1C70A2A02110026010D
:10298000DFFD30F9FF045401ECFA5911E9F3DAECF8
:10299000FC1172FE61FD5B0602F8E3FF6002B5FD0B
:1029A0001B0B3105CFF6C901C101B70718F07AEA50
:1029B000120E83FD670A4D0EFBEF1A0F5000FCE963
:1029C000BF0BB6F9CCF292034206560C0C048200FF
:1029D00045F50AF9730B02F767F33B14EE0419ECA3
:1029E000001783FD91F30D123DDFA316240814D9BF
:1029F000D51BF70205FC4703A301A0FEAAF5ADFC19
:102A0000B5FF9826DDF261D0FB18C72080F58AEB70
:102A1000C70A34FA01FCE7000DEB262BF20675D647
:102A20009F174F03E1F1FA0784F5C9032B0F3CE32D
:102A30004204AC2ACCDF09FC96197CE1A50EFCFF10
:102A400026EA4922A9FBB5E62A16F303B1E70A0CE8
:102A50007007BBF1A608ECF8EDF6251909FEC9EDE3
:102A60001C1BB2F907DE631DD90496F0401160EF1C
:102A70008F006111D6ECE40DAF070EE2A3044F0501
:102A80000402D80DC4F08F00C20F9BED83FAE21848
:102A9000E8FB8FEBFE08580209FD2AFEFEF4CF0F7B
:102AA000890897EB780651104CEAB803C11602F575
:102AB000A20A01FA8BEA501499F625EE25189CFC1F
:102AC00057EE980E0305C1012D076DEC16F9270F7F
:102AD00078F44B02291AFEF213F6410C5AF88BFDDA
:102AE0006803FDF8AF079E09AEF3EA035F071DEE2A
:102AF000D2FD14057E007D039CFB2506FD0E66FAC3
:102B000077F8310853EEAEF3300E93FE5A0EB00054
:102B1000B8EC4D106D020CECE2020C0580F6BF0B18
:102B20008C0CB9FB3604E9F2E9F3FA0A09FF35F433
:102B3000A6090F09C2FB6F0ADFFDD4F4EBFD8DF48B
:102B4000AE09F81089F1BC028D094EF5B7070001F6
:102B5000A6F63605A2F205FDDD1C33FCB8EEFE0834
:102B60002AFE2BFD180430F9F2052D050BF3100396
:102B7000340E20F3E3FC940F23F733FB150209FF17
:102B8000C407EF0033FB6C04CAFD20F47406810413
:102B9000CEFD21036AFAEFFF2D04D3F9EE053108CB
:102BA000F3EC6D015A0EE1F078098D0A9AEF3E05BB
:102BB00093FEB9FCCF0FC5FE9EF447032E011FFA0A
:102BC000100544FC4704BC030BF2830EAB07CDECAD
:102BD0003700F60997FEFF03150134F5180443008A
:102BE0001BF70F0AB0015AF7A70336044F02A303DD
:102BF000FDF70FF6CC067AFFC1FF390787FCCEFF41
:102C0000C4048A0159FC99F6A0FE300B9CFC7FFAA3
:102C1000D80869FD83FA3A044B030D0016FC2CF723
:102C20006C03730D3CF810034D0DC6E711009C11A9
:102C30007FFCFDF932EBEC100A206EE66EE62820F0
:102C4000A20A53DCDA00311A660D2BE468ED0E237C
:102C5000C006CCDD2A01E52078F559E7EE04062010
:102C6000EA0524C996066D2D2EEAF3EB2E17E90826
:102C700032EE2FFD2E039010DCF55BDD6224A10CFB
:102C80004BEB880E4AF424F6A81434F801E74A1EE8
:102C9000380FCAD46DFFA9239B0152DF3CF92F25C1
:102CA00031052ED69E085029B1E823E19715412021
:102CB0000DE9E3D3851C0636C5E967CA4C269B1887
:102CC0001BCC7903F025F10BBCD8A6DEE037B81792
:102CD000C0C47006CE2875EBDCE1FB04033137FD80
:102CE000E1C5340F82298DF38CE4840B141B1AE5A3
:102CF0008CE09424BF1ED0DFD3E61C1AB514B1E8D3
:102D00003EEFA21CF30280DDB305301F560841E1FF
:102D10008DF401250AF81FE45414A2095FF21BF593
:102D20006003CF2159FAB5D281186D1774DE7E0188
:102D3000C5150DFD2AEAD3FB6B1E9E057BE522FC23
:102D40004715AF043BE897FEB819A5F79FED2B0F89
:102D5000F609DDF3B3F2D105E2195FF061EA3E1A3C
:102D600014066BF36AF8E10898126EE868EDBB2070
:102D70006405B5E5170A700844FAECFA48FC4413F8
:102D800011FD4DE3A2084A1DE8FBA9E6B000E216DA
:102D9000E4F814F0840D89082DF053EF0418471758
:102DA00072E90CEFBA10920318F36402E604740996
:102DB00047EAB1FBCC1ED7F807F4BDFC5704250445
:102DC000CFF93FFF8F110FF6ACEC7115890788F62C
:102DD0003CF8EF000A0CD2FCD0F59010C6FBCDEE0B
:102DE000240A6707B4033DF249F966101100DFFABF
:102DF000D505690177FA4FF0E10897145FF3AFF05A
:102E00007807B7095DFC8CF74E06450B9BEA22FD5F
:102E10001D1733FC03F12A025F06D00745F78CF833
:102E2000A41249F7E1F4A3035E0C1D0270F0A7039E
:102E3000730C30F5ECF9410AAF0477F824F4900DE7
:102E40003203B7F043FF312FC903E1C96CF0281FEB
:102E5000C22424DD9FEDD30F940D2D04EADA8D0AF0
:102E6000552574DE45F70B1F11EB6002F2070EF7D4
:102E70004D0DB4ECEF02141BB0ED74F0E6016A11D5
:102E8000F30339F24B03820099F4F606A90F44FCD0
:102E90008200A3ED0306F812DDF35B0802F8D0F41C
:102EA000D90583FCE617C2F9ECE4B01604012BFB4C
:102EB000280A95F4E3FE20063AEF58145B0866E60C
:102EC000C806B0FFFF03430219FFE7001AFC7AFCB3
:102ED000840A5401F1F6DBFD55F98C0F79012CF7CA
:102EE000A206E7FF3DF45304300E0C02D4F2F6F3D1
:102EF0009D0E470161FFEE05AAF5E605C3F7A800A0
:102F0000681925EED1EFBF0820086DFF9B003BFE3E
:102F100022FFCAFD63F20513390B19EE23FB53029E
:102F20006B09110116F99A071BF9C7F72D050B0656
:102F3000FB052CF55EF79D0DA302A6F3C8086306FA
:102F4000BBF554FD80084E0730F9F1F5D009C1FDFD
:102F5000BEF98E0469FD7C0BC7F4CFF7F715BAF6FE
:102F600014F2520CD503E200C2FC0DFC670BA5FB6A
:102F70006FF65E0B680351F848FA1004340FC4F181
:102F80005EF9C809DBFB190186FF8E05C900FEF357
:102F90009701941027FB80F4B3069B00ACFF8BFBDA
:102FA000B001020D7DF04DF9490D03067EFE10F1D2
:102FB000D9068E0567F46806740945F5A5F88107FA
:102FC0006707790334F551FB9D0D2FFA6AF9B20DAD
:102FD00072FC34F912FA5609BF0918F298FB3E0444
:102FE0009A08B9FDC6FC2D0554FFDDF281043313A8
:102FF000BAF928F2B400CC0987FE83FD10057101EF
:10300000D0F383FD7B0FD90388F8DDEF1309DC0CC7
:103010003CF88105D2FCADFC2BFDB00295092BFCE0
:10302000D3FB40F9D409080395F5DE027C08C2FB06
:1030300025EF1B0DFA0A4EF52101F5F9DD043D08D7
:1030400030F7890526FF34F743038D0912FCE0F5BC
:103050003605A7045CFFE8F99B009A0594FBF3FF93
:10306000DAFFEE07B40121EC7F0E350863F5790332
:103070003BFDC005E3FB62FA9A067C076FF891F608
:103080000E0CEBFD55FBDD047E0187FE94FAB404C3
:10309000F700ADFDD6016DFE2105ECFAFDFAF20850
:1030A00083FCECF90F08D80973F713F33507D10344
:1030B0001AFE740558001AFB98FCCEFEC00696074F
:1030C000E4F7ECF936028E04AC02B9FBCEFFA4FEA5
:1030D00051FAA206630683FB15FE26FD1308CD03F5
:1030E000A2F54303CC065AF438F8E40D060B6AF84F
:1030F000A7EEA3033D0AE60204022CF4DBFD9604CE
:10310000D601FE09A5FA8DF19B033109190161FE73
:1031100040F8D007340D77E382FF4121CCF27EE9FD
:10312000BB09880B65FD7EFFD3F8C5FE4607A9FAEB
:103130008905950981F1ECF8C807BC032809BEF898
:103140009AF0E5091C0622FC5F09E9F66BF3BF0A59
:103150001002F605E7FE08EFD4089109E9F6AF047E
:10316000D50680F309FDF2059F010E0E1BF5B4EEA6
:10317000C20E9B038DF5C807790436EE8D06240830
:1031800090FBC9044EF5D102AE0D06F8F8FE81069B
:103190001FF797FE7405E2014B05BFF387FA5E0E39
:1031A00000FE76FD0804F5F52AFF810726FED0090A
:1031B000F0FB3FECD0085D135EF6D3F8DC0966F94E
:1031C00053042FFC250244103FEC56F68908E5060F
:1031D00047FF76FC22FF66FB0306B8052006B1FA1E
:1031E0001EE899097F2494FC37E67BFB4B052006FB
:1031F000A8FE4701D10246EFA0FCB111A304BFF322
:103200009CFBE1092FFCE7FE7501C1014A0AF4E9C4
:103210009B004F1935F165FCBB088BFB27FC0400B4
:10322000C80586036BF5B2F82B0FA4FF3CFBA80181
:103230005DFD5B072BFA76FF5F0538F93605FF0465
:10324000A1F6CEFE8E018E026C07D4F372FA3D0B0E
:103250009202E7FC66F7D502170CBEF933FE710146
:10326000FCFDEE0550FCBDFF920448FB00FE290565
:10327000CAFC43FFC10172FB3908F0FAF5F9510DA0
:1032800083F9BEFA960533FF8D061EFC1AFA8907EC
:10329000150137FCF8FF9A042FFE77FA1100A703F7
:1032A000100398F9CAFC1F0B67089BECE9F6291874
:1032B0004F0374F248FBFF055F05F4FB1900D504CA
:1032C00072FD98FAB0FFFF0247016EFB7807A4FF7A
:1032D000FAF326FFA414EB0152DFC6107D18B6E402
:1032E0001CF4512401FDC8DD55105D102AFE2AEBA7
:1032F000E4F8DB26DDF0DED93C26D7118EDAFCFDC2
:10330000C515C405EBFEA8E8F10C660FAADF9618F8
:10331000140458EC9A0893FD000010054702A6F12A
:10332000800AB5FBF0F94717CFF717F51D0186FFA7
:10333000CC07F608AFF2F5F8230DA5FB2103F30245
:1033400060EEA4136C034DE27A13D00A68F0D9073B
:10335000D2FC23F7331334F578F55C162DF12AFFF0
:103360009E05E8F89108B1FA9BFF700547FF52F4FB
:10337000730D7005EEEF5F08CAFB10069CFDD7FBCE
:10338000520AF4FA61FE33FE3506D4F6E602770EF1
:103390009BED4F029E09DBFA8BFCC5FEB7064B0284
:1033A0005EF805FC8B1034FAB8EBB915100353F036
:1033B0006003DFFCFE0ACD00FEF41C05E106C1FD42
:1033C00024F4E21761FF4EDDD409FC132D0556F4F9
:1033D0007CF50DFFAA0AFCFD4B014D0EB9E8B5FBCB
:1033E000280C6306D905EBECDBFBBA107BF9CD01A9
:1033F000C212BCEEBCEE3E07B20CAA0CE5F53EF0E4
:10340000FB0509FF3E07C503630640F996DB1A2555
:10341000ED0AB7F0EA06B7F03109B6F8950A1005DB
:1034200005FC44FC7AE9D41DE70078F51501CFFAD4
:10343000A60B0BF2471599F808EB6D14F2F0E713A1
:10344000D80A28E183FDD00A3908D2FDEE0753F1EE
:1034500053ED7518AC012C09A5F787E7221143013C
:10346000F10B4AF42E034E0966E2A71743FE37FD1F
:103470008E011CF0F90FF1F8EA047902BDFEDE03BB
:1034800064EFBE106C0545F68BFD84F8270FF0FC49
:103490007C09E4F6BDEAC01AEAF01B0E5F052BE5D5
:1034A000A50DBDFE5B08F0FA5704E0F849F77E125F
:1034B00017F8730C18F295F61A0FD6FDEA0373F994
:1034C000D40A02F4B6F8F90E27FA4E0BD0F1DFFA5F
:1034D0000A0F87FADA0061FCE507E0F9A9FB830F20
:1034E00098FBFDF9E8F84109E602DFFC520757EEC8
:1034F0004703A70569FE620FA2F140F8B002A400DD
:103500002C09EFFEAF0496F18BFDED0C8A00180438
:1035100052F35401A4003F02A70412F93A0539F509
:103520004E08460874F0E508A8FD50FF1B0A40F954
:10353000150216FB72FC32043E03A70634F840F86D
:1035400011FD200A2E0158006002F3ED1B0B5302FF
:1035500015FFC70AD9F0A4FF4B045F05930145F896
:10356000290412FCE6010C0451FBDAFF6D0015FE84
:10357000A4FE7407C6FA48FC9A0591F65707B805E9
:1035800059F9850462F93A03CD028F00D104E1F0C4
:10359000B708030462F99A08E3FE52F4E7FC161236
:1035A0001AFA080172FD42F1541383FC76FC5B08A1
:1035B000ECF9F9F904022F0FBBF5CFF85F0801FB16
:1035C000E10758FEA1FA4B0326FEC6FD8A02C30A94
:1035D0005BF237FDF6082BFC310727FCCAFECEFB59
:1035E000C5FF9A08A5FAB3053200C8F24204BB0928
:1035F00005FADE01D5027CF4A206B30673F6530683
:10360000B9FD17F8A50C93FFA5F922FE36024B046D
:1036100082FEEF0188F91EFFC40405FE3506260070
:10362000A5F73BFE3108C9011AFA4F043FFD26FEFB
:103630005C0208028603A1F9370027FBA3044F05AB
:103640006FF64A0993FD56F62103670704FF2AFE29
:1036500065FFB6F5B3076804F6063F0068ED1D0484
:10366000AF0782FF5DFE61FEB5FF5DFC9A0478093D
:1036700002F6BAFA1C063BFF250398FC22FE9605CB
:10368000CEFC4CFBC007E6016AF97AFFF301200685
:1036900051FA48FBE2044701B0FF8F0093FD51F857
:1036A000950A310861FDB9FE10F087FC6114E2044F
:1036B000F30189F33BE747185B0644FD0E0F50EB1F
:1036C000ABF18909380CA208B0021EE8A9FBAA0BCD
:1036D000ADFDA013E4F8C3F32FFACAFC0819580093
:1036E000F1F406F7000000000000000000000000F8
:1036F00000000000000000000000000000000000CA
:1037000000000000000000000000000000000000B9
:1037100000000000000000000000000000000000A9
:103720000000000000000000000000000000000099
:103730000000000000000000000000000000000089
:103740000000000000000000000000000000000079
:103750000000000000000000000000000000000069
:103760000000000000000000000000000000000059
:103770000000000000000000000000000000000049
:103780000000000000000000000000000000000039
:04000005080000ED02
:00000001FF

View file

@ -0,0 +1,429 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html><head>
<title>Static Call Graph - [.\Obj\StepSon.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image .\Obj\StepSon.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060960: Last Updated: Wed Apr 19 09:40:01 2023
<BR><P>
<H3>Maximum Stack Usage = 40 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
main &rArr; PWM_Init_ff &rArr; Timer_1234_Init_ff
<P>
<H3>
Mutually Recursive functions
</H3> <LI><a href="#[1]">NMI_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1]">NMI_Handler</a><BR>
<LI><a href="#[2]">HardFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[2]">HardFault_Handler</a><BR>
<LI><a href="#[3]">MemManage_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[3]">MemManage_Handler</a><BR>
<LI><a href="#[4]">BusFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[4]">BusFault_Handler</a><BR>
<LI><a href="#[5]">UsageFault_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[5]">UsageFault_Handler</a><BR>
<LI><a href="#[6]">SVC_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[6]">SVC_Handler</a><BR>
<LI><a href="#[7]">DebugMon_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[7]">DebugMon_Handler</a><BR>
<LI><a href="#[8]">PendSV_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[8]">PendSV_Handler</a><BR>
<LI><a href="#[1c]">ADC1_2_IRQHandler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[1c]">ADC1_2_IRQHandler</a><BR>
</UL>
<P>
<H3>
Function Pointers
</H3><UL>
<LI><a href="#[1c]">ADC1_2_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[4]">BusFault_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1f]">CAN1_RX1_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[20]">CAN1_SCE_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[38]">CallbackSon</a> from gestionson.o(moncode) referenced from principal.o(i.main)
<LI><a href="#[15]">DMA1_Channel1_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[16]">DMA1_Channel2_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[17]">DMA1_Channel3_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[18]">DMA1_Channel4_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[19]">DMA1_Channel5_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1a]">DMA1_Channel6_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1b]">DMA1_Channel7_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[7]">DebugMon_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[10]">EXTI0_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[32]">EXTI15_10_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[11]">EXTI1_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[12]">EXTI2_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[13]">EXTI3_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[14]">EXTI4_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[21]">EXTI9_5_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[e]">FLASH_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2]">HardFault_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2a]">I2C1_ER_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[29]">I2C1_EV_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2c]">I2C2_ER_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2b]">I2C2_EV_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[3]">MemManage_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1]">NMI_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[b]">PVD_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[8]">PendSV_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[f]">RCC_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[33]">RTCAlarm_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[d]">RTC_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[0]">Reset_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2d]">SPI1_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[2e]">SPI2_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[6]">SVC_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[9]">SysTick_Handler</a> from timer_systick.o(i.SysTick_Handler) referenced from startup-rvds.o(RESET)
<LI><a href="#[36]">SystemInit</a> from startup-rvds.o(.text) referenced from startup-rvds.o(.text)
<LI><a href="#[c]">TAMPER_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[22]">TIM1_BRK_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[25]">TIM1_CC_IRQHandler</a> from timer_1234.o(i.TIM1_CC_IRQHandler) referenced from startup-rvds.o(RESET)
<LI><a href="#[24]">TIM1_TRG_COM_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[23]">TIM1_UP_IRQHandler</a> from timer_1234.o(i.TIM1_UP_IRQHandler) referenced from startup-rvds.o(RESET)
<LI><a href="#[26]">TIM2_IRQHandler</a> from timer_1234.o(i.TIM2_IRQHandler) referenced from startup-rvds.o(RESET)
<LI><a href="#[27]">TIM3_IRQHandler</a> from timer_1234.o(i.TIM3_IRQHandler) referenced from startup-rvds.o(RESET)
<LI><a href="#[28]">TIM4_IRQHandler</a> from timer_1234.o(i.TIM4_IRQHandler) referenced from startup-rvds.o(RESET)
<LI><a href="#[2f]">USART1_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[30]">USART2_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[31]">USART3_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[34]">USBWakeUp_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1d]">USB_HP_CAN1_TX_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[1e]">USB_LP_CAN1_RX0_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[5]">UsageFault_Handler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[a]">WWDG_IRQHandler</a> from startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[37]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup-rvds.o(.text)
<LI><a href="#[35]">main</a> from principal.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P>
<H3>
Global Symbols
</H3>
<P><STRONG><a name="[37]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(.text)
</UL>
<P><STRONG><a name="[46]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[39]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[3b]"></a>__main_after_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[47]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[48]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[49]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[4a]"></a>__rt_lib_shutdown_fini</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))
<P><STRONG><a name="[4b]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[4c]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 34 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[36]"></a>SystemInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(.text)
</UL>
<P><STRONG><a name="[1]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NMI_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[3]"></a>MemManage_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MemManage_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[4]"></a>BusFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;BusFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[5]"></a>UsageFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsageFault_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[6]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SVC_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SVC_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[7]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DebugMon_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DebugMon_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[8]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PendSV_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PendSV_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1c]"></a>ADC1_2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
</UL>
<BR>[Called By]<UL><LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC1_2_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1f]"></a>CAN1_RX1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[20]"></a>CAN1_SCE_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[15]"></a>DMA1_Channel1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[16]"></a>DMA1_Channel2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[17]"></a>DMA1_Channel3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[18]"></a>DMA1_Channel4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[19]"></a>DMA1_Channel5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1a]"></a>DMA1_Channel6_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1b]"></a>DMA1_Channel7_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[10]"></a>EXTI0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[32]"></a>EXTI15_10_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[11]"></a>EXTI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[12]"></a>EXTI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[13]"></a>EXTI3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[14]"></a>EXTI4_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[21]"></a>EXTI9_5_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[e]"></a>FLASH_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2a]"></a>I2C1_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[29]"></a>I2C1_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2c]"></a>I2C2_ER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2b]"></a>I2C2_EV_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[b]"></a>PVD_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[f]"></a>RCC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[33]"></a>RTCAlarm_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[d]"></a>RTC_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2d]"></a>SPI1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2e]"></a>SPI2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[c]"></a>TAMPER_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[22]"></a>TIM1_BRK_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[24]"></a>TIM1_TRG_COM_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[2f]"></a>USART1_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[30]"></a>USART2_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[31]"></a>USART3_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[34]"></a>USBWakeUp_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1d]"></a>USB_HP_CAN1_TX_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[1e]"></a>USB_LP_CAN1_RX0_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[a]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[3a]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main_after_scatterload
</UL>
<BR>[Called By]<UL><LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[4d]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[42]"></a>Active_IT_Debordement_Timer</STRONG> (Thumb, 204 bytes, Stack size 24 bytes, timer_1234.o(i.Active_IT_Debordement_Timer))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = Active_IT_Debordement_Timer
</UL>
<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[3c]"></a>CLOCK_Configure</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, clock.o(i.CLOCK_Configure))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = CLOCK_Configure
</UL>
<BR>[Calls]<UL><LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_HPRECompute
</UL>
<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[40]"></a>CLOCK_GetHCLK</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, clock.o(i.CLOCK_GetHCLK))
<BR><BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
</UL>
<P><STRONG><a name="[41]"></a>CLOCK_GetTIMCLK</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, clock.o(i.CLOCK_GetTIMCLK))
<BR><BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
</UL>
<P><STRONG><a name="[4e]"></a>GPIOA_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Clear), UNUSED)
<P><STRONG><a name="[4f]"></a>GPIOA_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Set), UNUSED)
<P><STRONG><a name="[50]"></a>GPIOB_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Clear), UNUSED)
<P><STRONG><a name="[51]"></a>GPIOB_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Set), UNUSED)
<P><STRONG><a name="[52]"></a>GPIOC_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Clear), UNUSED)
<P><STRONG><a name="[53]"></a>GPIOC_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Set), UNUSED)
<P><STRONG><a name="[43]"></a>GPIO_Configure</STRONG> (Thumb, 240 bytes, Stack size 20 bytes, gpio.o(i.GPIO_Configure))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = GPIO_Configure
</UL>
<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[3e]"></a>PWM_Init_ff</STRONG> (Thumb, 168 bytes, Stack size 24 bytes, timer_1234.o(i.PWM_Init_ff))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = PWM_Init_ff &rArr; Timer_1234_Init_ff
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
</UL>
<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[45]"></a>PWM_Set_Value_TIM3_Ch3</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, timer_1234.o(i.PWM_Set_Value_TIM3_Ch3))
<BR><BR>[Called By]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CallbackSon
</UL>
<P><STRONG><a name="[9]"></a>SysTick_Handler</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, timer_systick.o(i.SysTick_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[44]"></a>Systick_Period_ff</STRONG> (Thumb, 34 bytes, Stack size 0 bytes, timer_systick.o(i.Systick_Period_ff))
<BR><BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[25]"></a>TIM1_CC_IRQHandler</STRONG> (Thumb, 240 bytes, Stack size 16 bytes, timer_1234.o(i.TIM1_CC_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIM1_CC_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[23]"></a>TIM1_UP_IRQHandler</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, timer_1234.o(i.TIM1_UP_IRQHandler))
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[26]"></a>TIM2_IRQHandler</STRONG> (Thumb, 266 bytes, Stack size 16 bytes, timer_1234.o(i.TIM2_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIM2_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[27]"></a>TIM3_IRQHandler</STRONG> (Thumb, 272 bytes, Stack size 16 bytes, timer_1234.o(i.TIM3_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIM3_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[28]"></a>TIM4_IRQHandler</STRONG> (Thumb, 272 bytes, Stack size 16 bytes, timer_1234.o(i.TIM4_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIM4_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[3f]"></a>Timer_1234_Init_ff</STRONG> (Thumb, 106 bytes, Stack size 16 bytes, timer_1234.o(i.Timer_1234_Init_ff))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Timer_1234_Init_ff
</UL>
<BR>[Calls]<UL><LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_GetTIMCLK
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_GetHCLK
</UL>
<BR>[Called By]<UL><LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Init_ff
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[54]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[55]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[56]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[35]"></a>main</STRONG> (Thumb, 86 bytes, Stack size 0 bytes, principal.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = main &rArr; PWM_Init_ff &rArr; Timer_1234_Init_ff
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Systick_Period_ff
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Init_ff
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;GPIO_Configure
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_Configure
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Active_IT_Debordement_Timer
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P><STRONG><a name="[38]"></a>CallbackSon</STRONG> (Thumb, 66 bytes, Stack size 0 bytes, gestionson.o(moncode))
<BR><BR>[Calls]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Set_Value_TIM3_Ch3
</UL>
<BR>[Address Reference Count : 1]<UL><LI> principal.o(i.main)
</UL>
<P><STRONG><a name="[57]"></a>StartSon</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gestionson.o(moncode), UNUSED)
<P>
<H3>
Local Symbols
</H3>
<P><STRONG><a name="[3d]"></a>CLOCK_HPRECompute</STRONG> (Thumb, 116 bytes, Stack size 0 bytes, clock.o(i.CLOCK_HPRECompute))
<BR><BR>[Called By]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_Configure
</UL>
<P>
<H3>
Undefined Global Symbols
</H3><HR></body></html>

View file

@ -0,0 +1,10 @@
--cpu Cortex-M3
".\obj\principal.o"
".\obj\startup-rvds.o"
".\Driver\DriverJeuLaser.lib"
".\obj\bruitverre.o"
".\obj\gestionson.o"
--library_type=microlib --strict --scatter ".\Obj\StepSon.sct"
--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
--info sizes --info totals --info unused --info veneers
--list "StepSon.map" -o .\Obj\StepSon.axf

View file

@ -0,0 +1,585 @@
Component: ARM Compiler 5.06 update 7 (build 960) Tool: armlink [4d3601]
==============================================================================
Section Cross References
principal.o(i.main) refers to clock.o(i.CLOCK_Configure) for CLOCK_Configure
principal.o(i.main) refers to timer_1234.o(i.Timer_1234_Init_ff) for Timer_1234_Init_ff
principal.o(i.main) refers to timer_1234.o(i.Active_IT_Debordement_Timer) for Active_IT_Debordement_Timer
principal.o(i.main) refers to timer_1234.o(i.PWM_Init_ff) for PWM_Init_ff
principal.o(i.main) refers to gpio.o(i.GPIO_Configure) for GPIO_Configure
principal.o(i.main) refers to timer_systick.o(i.Systick_Period_ff) for Systick_Period_ff
principal.o(i.main) refers to gestionson.o(moncode) for CallbackSon
startup-rvds.o(RESET) refers to startup-rvds.o(STACK) for __initial_sp
startup-rvds.o(RESET) refers to startup-rvds.o(.text) for Reset_Handler
startup-rvds.o(RESET) refers to timer_systick.o(i.SysTick_Handler) for SysTick_Handler
startup-rvds.o(RESET) refers to timer_1234.o(i.TIM1_UP_IRQHandler) for TIM1_UP_IRQHandler
startup-rvds.o(RESET) refers to timer_1234.o(i.TIM1_CC_IRQHandler) for TIM1_CC_IRQHandler
startup-rvds.o(RESET) refers to timer_1234.o(i.TIM2_IRQHandler) for TIM2_IRQHandler
startup-rvds.o(RESET) refers to timer_1234.o(i.TIM3_IRQHandler) for TIM3_IRQHandler
startup-rvds.o(RESET) refers to timer_1234.o(i.TIM4_IRQHandler) for TIM4_IRQHandler
startup-rvds.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOA_Clear) for GPIOA_Clear
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOA_Set) for GPIOA_Set
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOB_Clear) for GPIOB_Clear
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOB_Set) for GPIOB_Set
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOC_Clear) for GPIOC_Clear
gestionson.o(mesdata) refers (Special) to gpio.o(i.GPIOC_Set) for GPIOC_Set
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOA_Clear) for GPIOA_Clear
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOA_Set) for GPIOA_Set
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOB_Clear) for GPIOB_Clear
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOB_Set) for GPIOB_Set
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOC_Clear) for GPIOC_Clear
gestionson.o(maram) refers (Special) to gpio.o(i.GPIOC_Set) for GPIOC_Set
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOA_Clear) for GPIOA_Clear
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOA_Set) for GPIOA_Set
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOB_Clear) for GPIOB_Clear
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOB_Set) for GPIOB_Set
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOC_Clear) for GPIOC_Clear
gestionson.o(moncode) refers (Special) to gpio.o(i.GPIOC_Set) for GPIOC_Set
gestionson.o(moncode) refers to timer_1234.o(i.PWM_Set_Value_TIM3_Ch3) for PWM_Set_Value_TIM3_Ch3
gestionson.o(moncode) refers to bruitverre.o(SecSon) for LongueurSon
gestionson.o(moncode) refers to gestionson.o(maram) for index
clock.o(i.CLOCK_Configure) refers to clock.o(i.CLOCK_HPRECompute) for CLOCK_HPRECompute
timer_1234.o(i.Active_IT_Compare_Timer) refers to timer_1234.o(.data) for .data
timer_1234.o(i.Active_IT_Debordement_Timer) refers to timer_1234.o(.data) for .data
timer_1234.o(i.Capture_Init) refers to clock.o(i.CLOCK_GetTIMCLK) for CLOCK_GetTIMCLK
timer_1234.o(i.Capture_Init) refers to dfltui.o(.text) for __aeabi_ui2d
timer_1234.o(i.Capture_Init) refers to f2d.o(.text) for __aeabi_f2d
timer_1234.o(i.Capture_Init) refers to dmul.o(.text) for __aeabi_dmul
timer_1234.o(i.Capture_Init) refers to ddiv.o(.text) for __aeabi_ddiv
timer_1234.o(i.Capture_Init) refers to d2f.o(.text) for __aeabi_d2f
timer_1234.o(i.Capture_Init) refers to ffltui.o(.text) for __aeabi_ui2f
timer_1234.o(i.Capture_Init) refers to fmul.o(.text) for __aeabi_fmul
timer_1234.o(i.Capture_Init) refers to ffixui.o(.text) for __aeabi_f2uiz
timer_1234.o(i.Capture_Init) refers to ffixi.o(.text) for __aeabi_f2iz
timer_1234.o(i.Lire_Duree_Pulse) refers to timer_1234.o(.data) for .data
timer_1234.o(i.PWM_Init) refers to f2d.o(.text) for __aeabi_f2d
timer_1234.o(i.PWM_Init) refers to ddiv.o(.text) for __aeabi_ddiv
timer_1234.o(i.PWM_Init) refers to d2f.o(.text) for __aeabi_d2f
timer_1234.o(i.PWM_Init) refers to timer_1234.o(i.Timer_1234_Init) for Timer_1234_Init
timer_1234.o(i.PWM_Init_ff) refers to timer_1234.o(i.Timer_1234_Init_ff) for Timer_1234_Init_ff
timer_1234.o(i.TIM1_CC_IRQHandler) refers to timer_1234.o(.data) for .data
timer_1234.o(i.TIM1_UP_IRQHandler) refers to timer_1234.o(.data) for .data
timer_1234.o(i.TIM2_IRQHandler) refers to timer_1234.o(.data) for .data
timer_1234.o(i.TIM3_IRQHandler) refers to timer_1234.o(.data) for .data
timer_1234.o(i.TIM4_IRQHandler) refers to timer_1234.o(.data) for .data
timer_1234.o(i.Timer_1234_Init) refers to clock.o(i.CLOCK_GetTIMCLK) for CLOCK_GetTIMCLK
timer_1234.o(i.Timer_1234_Init) refers to ffltui.o(.text) for __aeabi_ui2f
timer_1234.o(i.Timer_1234_Init) refers to fmul.o(.text) for __aeabi_fmul
timer_1234.o(i.Timer_1234_Init) refers to f2d.o(.text) for __aeabi_f2d
timer_1234.o(i.Timer_1234_Init) refers to ddiv.o(.text) for __aeabi_ddiv
timer_1234.o(i.Timer_1234_Init) refers to d2f.o(.text) for __aeabi_d2f
timer_1234.o(i.Timer_1234_Init) refers to fscalb.o(.text) for __ARM_scalbnf
timer_1234.o(i.Timer_1234_Init) refers to ffixui.o(.text) for __aeabi_f2uiz
timer_1234.o(i.Timer_1234_Init) refers to fdiv.o(.text) for __aeabi_fdiv
timer_1234.o(i.Timer_1234_Init) refers to dfltui.o(.text) for __aeabi_ui2d
timer_1234.o(i.Timer_1234_Init) refers to dadd.o(.text) for __aeabi_dadd
timer_1234.o(i.Timer_1234_Init) refers to dmul.o(.text) for __aeabi_dmul
timer_1234.o(i.Timer_1234_Init_ff) refers to clock.o(i.CLOCK_GetHCLK) for CLOCK_GetHCLK
timer_1234.o(i.Timer_1234_Init_ff) refers to clock.o(i.CLOCK_GetTIMCLK) for CLOCK_GetTIMCLK
timer_systick.o(i.SysTick_Handler) refers to timer_systick.o(.data) for .data
timer_systick.o(i.Systick_Period) refers to clock.o(i.CLOCK_GetHCLK) for CLOCK_GetHCLK
timer_systick.o(i.Systick_Period) refers to ffltui.o(.text) for __aeabi_ui2f
timer_systick.o(i.Systick_Period) refers to fmul.o(.text) for __aeabi_fmul
timer_systick.o(i.Systick_Period) refers to f2d.o(.text) for __aeabi_f2d
timer_systick.o(i.Systick_Period) refers to ddiv.o(.text) for __aeabi_ddiv
timer_systick.o(i.Systick_Period) refers to d2f.o(.text) for __aeabi_d2f
timer_systick.o(i.Systick_Period) refers to ffixui.o(.text) for __aeabi_f2uiz
timer_systick.o(i.Systick_Period) refers to fdiv.o(.text) for __aeabi_fdiv
timer_systick.o(i.Systick_Period) refers to dmul.o(.text) for __aeabi_dmul
timer_systick.o(i.Systick_Prio_IT) refers to timer_systick.o(.data) for .data
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000F) for __rt_final_cpp
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$00000011) for __rt_final_exit
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry12b.o(.ARM.Collect$$$$0000000E) for __rt_lib_shutdown_fini
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry8b.o(.ARM.Collect$$$$0000000A) for _main_cpp_init
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk
fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
fdiv.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
fdiv.o(.text) refers to fepilogue.o(.text) for _float_round
fscalb.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl
dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr
dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue
dmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dmul.o(.text) refers to depilogue.o(.text) for _double_epilogue
ddiv.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
ddiv.o(.text) refers to depilogue.o(.text) for _double_round
ffltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
ffltui.o(.text) refers to fepilogue.o(.text) for _float_epilogue
dfltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dfltui.o(.text) refers to depilogue.o(.text) for _double_epilogue
ffixi.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
ffixui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
f2d.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
d2f.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
d2f.o(.text) refers to fepilogue.o(.text) for _float_round
entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000
entry2.o(.ARM.Collect$$$$00002712) refers to startup-rvds.o(STACK) for __initial_sp
entry2.o(__vectab_stack_and_reset_area) refers to startup-rvds.o(STACK) for __initial_sp
entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main
entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload
entry9a.o(.ARM.Collect$$$$0000000B) refers to principal.o(i.main) for main
entry9b.o(.ARM.Collect$$$$0000000C) refers to principal.o(i.main) for main
depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl
depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr
init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload
==============================================================================
Removing Unused input sections from the image.
Removing principal.o(.rev16_text), (4 bytes).
Removing principal.o(.revsh_text), (4 bytes).
Removing principal.o(.rrx_text), (6 bytes).
Removing startup-rvds.o(HEAP), (512 bytes).
Removing gestionson.o(mesdata), (0 bytes).
Removing clock.o(.rev16_text), (4 bytes).
Removing clock.o(.revsh_text), (4 bytes).
Removing clock.o(.rrx_text), (6 bytes).
Removing clock.o(i.CLOCK_GetADCCLK), (8 bytes).
Removing clock.o(i.CLOCK_GetPCLK1), (8 bytes).
Removing clock.o(i.CLOCK_GetPCLK2), (8 bytes).
Removing gpio.o(.rev16_text), (4 bytes).
Removing gpio.o(.revsh_text), (4 bytes).
Removing gpio.o(.rrx_text), (6 bytes).
Removing timer_1234.o(.rev16_text), (4 bytes).
Removing timer_1234.o(.revsh_text), (4 bytes).
Removing timer_1234.o(.rrx_text), (6 bytes).
Removing timer_1234.o(i.Active_IT_Compare_Timer), (492 bytes).
Removing timer_1234.o(i.Capture_Init), (484 bytes).
Removing timer_1234.o(i.Lire_Duree_Pulse), (96 bytes).
Removing timer_1234.o(i.PWM_Complementaire_Timer1), (60 bytes).
Removing timer_1234.o(i.PWM_Init), (200 bytes).
Removing timer_1234.o(i.Timer_1234_Init), (268 bytes).
Removing timer_1234.o(i.Timer_Inc_Init), (180 bytes).
Removing timer_systick.o(.rev16_text), (4 bytes).
Removing timer_systick.o(.revsh_text), (4 bytes).
Removing timer_systick.o(.rrx_text), (6 bytes).
Removing timer_systick.o(i.Systick_Period), (196 bytes).
Removing timer_systick.o(i.Systick_Prio_IT), (20 bytes).
Removing fmul.o(.text), (100 bytes).
Removing fdiv.o(.text), (124 bytes).
Removing fscalb.o(.text), (24 bytes).
Removing dadd.o(.text), (334 bytes).
Removing dmul.o(.text), (228 bytes).
Removing ddiv.o(.text), (222 bytes).
Removing ffltui.o(.text), (10 bytes).
Removing dfltui.o(.text), (26 bytes).
Removing ffixi.o(.text), (50 bytes).
Removing ffixui.o(.text), (40 bytes).
Removing f2d.o(.text), (38 bytes).
Removing d2f.o(.text), (56 bytes).
Removing fepilogue.o(.text), (110 bytes).
Removing depilogue.o(.text), (186 bytes).
43 unused section(s) (total 4150 bytes) removed from the image.
==============================================================================
Image Symbol Table
Local Symbols
Symbol Name Value Ov Type Size Object(Section)
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE
../fplib/microlib/d2f.c 0x00000000 Number 0 d2f.o ABSOLUTE
../fplib/microlib/f2d.c 0x00000000 Number 0 f2d.o ABSOLUTE
../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE
../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE
../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE
../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE
../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE
../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixui.o ABSOLUTE
../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixi.o ABSOLUTE
../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE
../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE
../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE
../fplib/microlib/fpmul.c 0x00000000 Number 0 fmul.o ABSOLUTE
../fplib/microlib/fpscalb.c 0x00000000 Number 0 fscalb.o ABSOLUTE
Lib\GPIO.c 0x00000000 Number 0 gpio.o ABSOLUTE
Lib\Timer_1234.c 0x00000000 Number 0 timer_1234.o ABSOLUTE
Lib\Timer_Systick.c 0x00000000 Number 0 timer_systick.o ABSOLUTE
Lib\\GPIO.c 0x00000000 Number 0 gpio.o ABSOLUTE
Lib\\Timer_1234.c 0x00000000 Number 0 timer_1234.o ABSOLUTE
Lib\\Timer_Systick.c 0x00000000 Number 0 timer_systick.o ABSOLUTE
Lib\\clock.c 0x00000000 Number 0 clock.o ABSOLUTE
Lib\clock.c 0x00000000 Number 0 clock.o ABSOLUTE
Src\GestionSon.s 0x00000000 Number 0 gestionson.o ABSOLUTE
Src\\principal.c 0x00000000 Number 0 principal.o ABSOLUTE
Src\bruitverre.asm 0x00000000 Number 0 bruitverre.o ABSOLUTE
Src\principal.c 0x00000000 Number 0 principal.o ABSOLUTE
Src\startup-rvds.s 0x00000000 Number 0 startup-rvds.o ABSOLUTE
dc.s 0x00000000 Number 0 dc.o ABSOLUTE
handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE
init.s 0x00000000 Number 0 init.o ABSOLUTE
RESET 0x08000000 Section 236 startup-rvds.o(RESET)
.ARM.Collect$$$$00000000 0x080000ec Section 0 entry.o(.ARM.Collect$$$$00000000)
.ARM.Collect$$$$00000001 0x080000ec Section 4 entry2.o(.ARM.Collect$$$$00000001)
.ARM.Collect$$$$00000004 0x080000f0 Section 4 entry5.o(.ARM.Collect$$$$00000004)
.ARM.Collect$$$$00000008 0x080000f4 Section 0 entry7b.o(.ARM.Collect$$$$00000008)
.ARM.Collect$$$$0000000A 0x080000f4 Section 0 entry8b.o(.ARM.Collect$$$$0000000A)
.ARM.Collect$$$$0000000B 0x080000f4 Section 8 entry9a.o(.ARM.Collect$$$$0000000B)
.ARM.Collect$$$$0000000E 0x080000fc Section 4 entry12b.o(.ARM.Collect$$$$0000000E)
.ARM.Collect$$$$0000000F 0x08000100 Section 0 entry10a.o(.ARM.Collect$$$$0000000F)
.ARM.Collect$$$$00000011 0x08000100 Section 0 entry11a.o(.ARM.Collect$$$$00000011)
.ARM.Collect$$$$00002712 0x08000100 Section 4 entry2.o(.ARM.Collect$$$$00002712)
__lit__00000000 0x08000100 Data 4 entry2.o(.ARM.Collect$$$$00002712)
.text 0x08000104 Section 76 startup-rvds.o(.text)
.text 0x08000150 Section 36 init.o(.text)
i.Active_IT_Debordement_Timer 0x08000174 Section 0 timer_1234.o(i.Active_IT_Debordement_Timer)
i.CLOCK_Configure 0x08000258 Section 0 clock.o(i.CLOCK_Configure)
i.CLOCK_GetHCLK 0x080002cc Section 0 clock.o(i.CLOCK_GetHCLK)
i.CLOCK_GetTIMCLK 0x080002d4 Section 0 clock.o(i.CLOCK_GetTIMCLK)
i.CLOCK_HPRECompute 0x080002f8 Section 0 clock.o(i.CLOCK_HPRECompute)
CLOCK_HPRECompute 0x080002f9 Thumb Code 116 clock.o(i.CLOCK_HPRECompute)
i.GPIOA_Clear 0x0800036c Section 0 gpio.o(i.GPIOA_Clear)
i.GPIOA_Set 0x0800037c Section 0 gpio.o(i.GPIOA_Set)
i.GPIOB_Clear 0x0800038c Section 0 gpio.o(i.GPIOB_Clear)
i.GPIOB_Set 0x0800039c Section 0 gpio.o(i.GPIOB_Set)
i.GPIOC_Clear 0x080003ac Section 0 gpio.o(i.GPIOC_Clear)
i.GPIOC_Set 0x080003bc Section 0 gpio.o(i.GPIOC_Set)
i.GPIO_Configure 0x080003cc Section 0 gpio.o(i.GPIO_Configure)
i.PWM_Init_ff 0x080004d4 Section 0 timer_1234.o(i.PWM_Init_ff)
i.PWM_Set_Value_TIM3_Ch3 0x08000580 Section 0 timer_1234.o(i.PWM_Set_Value_TIM3_Ch3)
i.SysTick_Handler 0x0800058c Section 0 timer_systick.o(i.SysTick_Handler)
i.Systick_Period_ff 0x08000598 Section 0 timer_systick.o(i.Systick_Period_ff)
i.TIM1_CC_IRQHandler 0x080005bc Section 0 timer_1234.o(i.TIM1_CC_IRQHandler)
i.TIM1_UP_IRQHandler 0x080006c8 Section 0 timer_1234.o(i.TIM1_UP_IRQHandler)
i.TIM2_IRQHandler 0x080006e0 Section 0 timer_1234.o(i.TIM2_IRQHandler)
i.TIM3_IRQHandler 0x080007f0 Section 0 timer_1234.o(i.TIM3_IRQHandler)
i.TIM4_IRQHandler 0x0800091c Section 0 timer_1234.o(i.TIM4_IRQHandler)
i.Timer_1234_Init_ff 0x08000a48 Section 0 timer_1234.o(i.Timer_1234_Init_ff)
i.__scatterload_copy 0x08000ac4 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x08000ad2 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x08000ad4 Section 14 handlers.o(i.__scatterload_zeroinit)
i.main 0x08000ae4 Section 0 principal.o(i.main)
moncode 0x08000b50 Section 92 gestionson.o(moncode)
SecSon 0x08000bcc Section 11032 bruitverre.o(SecSon)
.data 0x20000000 Section 160 timer_1234.o(.data)
Ptr_TIM1 0x20000010 Data 4 timer_1234.o(.data)
Ptr_TIM2 0x20000014 Data 4 timer_1234.o(.data)
Ptr_TIM3 0x20000018 Data 4 timer_1234.o(.data)
Ptr_TIM4 0x2000001c Data 4 timer_1234.o(.data)
Ptr_TIM1_Voie1 0x20000020 Data 4 timer_1234.o(.data)
Ptr_TIM1_Voie2 0x20000024 Data 4 timer_1234.o(.data)
Ptr_TIM1_Voie3 0x20000028 Data 4 timer_1234.o(.data)
Ptr_TIM1_Voie4 0x2000002c Data 4 timer_1234.o(.data)
Ptr_TIM2_Voie1 0x20000030 Data 4 timer_1234.o(.data)
Ptr_TIM2_Voie2 0x20000034 Data 4 timer_1234.o(.data)
Ptr_TIM2_Voie3 0x20000038 Data 4 timer_1234.o(.data)
Ptr_TIM2_Voie4 0x2000003c Data 4 timer_1234.o(.data)
Ptr_TIM3_Voie1 0x20000040 Data 4 timer_1234.o(.data)
Ptr_TIM3_Voie2 0x20000044 Data 4 timer_1234.o(.data)
Ptr_TIM3_Voie3 0x20000048 Data 4 timer_1234.o(.data)
Ptr_TIM3_Voie4 0x2000004c Data 4 timer_1234.o(.data)
Ptr_TIM4_Voie1 0x20000050 Data 4 timer_1234.o(.data)
Ptr_TIM4_Voie2 0x20000054 Data 4 timer_1234.o(.data)
Ptr_TIM4_Voie3 0x20000058 Data 4 timer_1234.o(.data)
Ptr_TIM4_Voie4 0x2000005c Data 4 timer_1234.o(.data)
Duree_Pulse_T1 0x20000060 Data 8 timer_1234.o(.data)
Duree_Pulse_T2 0x20000068 Data 8 timer_1234.o(.data)
Duree_Pulse_T3 0x20000070 Data 8 timer_1234.o(.data)
Duree_Pulse_T4 0x20000078 Data 8 timer_1234.o(.data)
Date_T1 0x20000080 Data 8 timer_1234.o(.data)
Date_T2 0x20000088 Data 8 timer_1234.o(.data)
Date_T3 0x20000090 Data 8 timer_1234.o(.data)
Date_T4 0x20000098 Data 8 timer_1234.o(.data)
.data 0x200000a0 Section 4 timer_systick.o(.data)
Ptr_Systick 0x200000a0 Data 4 timer_systick.o(.data)
maram 0x200000a4 Section 6 gestionson.o(maram)
index 0x200000a4 Data 4 gestionson.o(maram)
STACK 0x200000b0 Section 1024 startup-rvds.o(STACK)
Global Symbols
Symbol Name Value Ov Type Size Object(Section)
BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE
__ARM_use_no_argv 0x00000000 Number 0 principal.o ABSOLUTE
__arm_fini_ - Undefined Weak Reference
__cpp_initialize__aeabi_ - Undefined Weak Reference
__cxa_finalize - Undefined Weak Reference
__decompress - Undefined Weak Reference
_clock_init - Undefined Weak Reference
_microlib_exit - Undefined Weak Reference
__Vectors_Size 0x000000ec Number 0 startup-rvds.o ABSOLUTE
__Vectors 0x08000000 Data 4 startup-rvds.o(RESET)
__Vectors_End 0x080000ec Data 0 startup-rvds.o(RESET)
__main 0x080000ed Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)
_main_stk 0x080000ed Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001)
_main_scatterload 0x080000f1 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004)
__main_after_scatterload 0x080000f5 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004)
_main_clock 0x080000f5 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008)
_main_cpp_init 0x080000f5 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A)
_main_init 0x080000f5 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B)
__rt_lib_shutdown_fini 0x080000fd Thumb Code 0 entry12b.o(.ARM.Collect$$$$0000000E)
__rt_final_cpp 0x08000101 Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000F)
__rt_final_exit 0x08000101 Thumb Code 0 entry11a.o(.ARM.Collect$$$$00000011)
Reset_Handler 0x08000105 Thumb Code 34 startup-rvds.o(.text)
SystemInit 0x08000127 Thumb Code 2 startup-rvds.o(.text)
NMI_Handler 0x08000129 Thumb Code 2 startup-rvds.o(.text)
HardFault_Handler 0x0800012b Thumb Code 2 startup-rvds.o(.text)
MemManage_Handler 0x0800012d Thumb Code 2 startup-rvds.o(.text)
BusFault_Handler 0x0800012f Thumb Code 2 startup-rvds.o(.text)
UsageFault_Handler 0x08000131 Thumb Code 2 startup-rvds.o(.text)
SVC_Handler 0x08000133 Thumb Code 2 startup-rvds.o(.text)
DebugMon_Handler 0x08000135 Thumb Code 2 startup-rvds.o(.text)
PendSV_Handler 0x08000137 Thumb Code 2 startup-rvds.o(.text)
ADC1_2_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
CAN1_RX1_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
CAN1_SCE_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel1_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel2_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel3_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel4_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel5_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel6_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
DMA1_Channel7_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI0_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI15_10_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI1_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI2_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI3_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI4_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
EXTI9_5_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
FLASH_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
I2C1_ER_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
I2C1_EV_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
I2C2_ER_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
I2C2_EV_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
PVD_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
RCC_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
RTCAlarm_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
RTC_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
SPI1_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
SPI2_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
TAMPER_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
TIM1_BRK_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
TIM1_TRG_COM_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USART1_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USART2_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USART3_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USBWakeUp_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USB_HP_CAN1_TX_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
USB_LP_CAN1_RX0_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
WWDG_IRQHandler 0x0800013b Thumb Code 0 startup-rvds.o(.text)
__scatterload 0x08000151 Thumb Code 28 init.o(.text)
__scatterload_rt2 0x08000151 Thumb Code 0 init.o(.text)
Active_IT_Debordement_Timer 0x08000175 Thumb Code 204 timer_1234.o(i.Active_IT_Debordement_Timer)
CLOCK_Configure 0x08000259 Thumb Code 104 clock.o(i.CLOCK_Configure)
CLOCK_GetHCLK 0x080002cd Thumb Code 4 clock.o(i.CLOCK_GetHCLK)
CLOCK_GetTIMCLK 0x080002d5 Thumb Code 22 clock.o(i.CLOCK_GetTIMCLK)
GPIOA_Clear 0x0800036d Thumb Code 10 gpio.o(i.GPIOA_Clear)
GPIOA_Set 0x0800037d Thumb Code 10 gpio.o(i.GPIOA_Set)
GPIOB_Clear 0x0800038d Thumb Code 10 gpio.o(i.GPIOB_Clear)
GPIOB_Set 0x0800039d Thumb Code 10 gpio.o(i.GPIOB_Set)
GPIOC_Clear 0x080003ad Thumb Code 10 gpio.o(i.GPIOC_Clear)
GPIOC_Set 0x080003bd Thumb Code 10 gpio.o(i.GPIOC_Set)
GPIO_Configure 0x080003cd Thumb Code 240 gpio.o(i.GPIO_Configure)
PWM_Init_ff 0x080004d5 Thumb Code 168 timer_1234.o(i.PWM_Init_ff)
PWM_Set_Value_TIM3_Ch3 0x08000581 Thumb Code 6 timer_1234.o(i.PWM_Set_Value_TIM3_Ch3)
SysTick_Handler 0x0800058d Thumb Code 6 timer_systick.o(i.SysTick_Handler)
Systick_Period_ff 0x08000599 Thumb Code 34 timer_systick.o(i.Systick_Period_ff)
TIM1_CC_IRQHandler 0x080005bd Thumb Code 240 timer_1234.o(i.TIM1_CC_IRQHandler)
TIM1_UP_IRQHandler 0x080006c9 Thumb Code 16 timer_1234.o(i.TIM1_UP_IRQHandler)
TIM2_IRQHandler 0x080006e1 Thumb Code 266 timer_1234.o(i.TIM2_IRQHandler)
TIM3_IRQHandler 0x080007f1 Thumb Code 272 timer_1234.o(i.TIM3_IRQHandler)
TIM4_IRQHandler 0x0800091d Thumb Code 272 timer_1234.o(i.TIM4_IRQHandler)
Timer_1234_Init_ff 0x08000a49 Thumb Code 106 timer_1234.o(i.Timer_1234_Init_ff)
__scatterload_copy 0x08000ac5 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x08000ad3 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x08000ad5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
main 0x08000ae5 Thumb Code 86 principal.o(i.main)
CallbackSon 0x08000b51 Thumb Code 66 gestionson.o(moncode)
StartSon 0x08000b93 Thumb Code 10 gestionson.o(moncode)
Region$$Table$$Base 0x08000bac Number 0 anon$$obj.o(Region$$Table)
LongueurSon 0x08000bcc Data 4 bruitverre.o(SecSon)
Region$$Table$$Limit 0x08000bcc Number 0 anon$$obj.o(Region$$Table)
PeriodeSonMicroSec 0x08000bd0 Data 4 bruitverre.o(SecSon)
Son 0x08000bd4 Data 0 bruitverre.o(SecSon)
Enable_Fct_IT_Compare_Match_TIM1_Voie1 0x20000000 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM1_Voie2 0x20000001 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM1_Voie3 0x20000002 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM1_Voie4 0x20000003 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM2_Voie1 0x20000004 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM2_Voie2 0x20000005 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM2_Voie3 0x20000006 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM2_Voie4 0x20000007 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM3_Voie1 0x20000008 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM3_Voie2 0x20000009 Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM3_Voie3 0x2000000a Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM3_Voie4 0x2000000b Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM4_Voie1 0x2000000c Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM4_Voie2 0x2000000d Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM4_Voie3 0x2000000e Data 1 timer_1234.o(.data)
Enable_Fct_IT_Compare_Match_TIM4_Voie4 0x2000000f Data 1 timer_1234.o(.data)
SortieSon 0x200000a8 Data 2 gestionson.o(maram)
__initial_sp 0x200004b0 Data 0 startup-rvds.o(STACK)
==============================================================================
Memory Map of the image
Image Entry point : 0x080000ed
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00003790, Max: 0x00020000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000036e4, Max: 0x00020000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000ec Data RO 62 RESET startup-rvds.o
0x080000ec 0x080000ec 0x00000000 Code RO 168 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x080000ec 0x080000ec 0x00000004 Code RO 195 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
0x080000f0 0x080000f0 0x00000004 Code RO 198 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x080000f4 0x080000f4 0x00000000 Code RO 200 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x080000f4 0x080000f4 0x00000000 Code RO 202 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x080000f4 0x080000f4 0x00000008 Code RO 203 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x080000fc 0x080000fc 0x00000004 Code RO 210 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o)
0x08000100 0x08000100 0x00000000 Code RO 205 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o)
0x08000100 0x08000100 0x00000000 Code RO 207 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o)
0x08000100 0x08000100 0x00000004 Code RO 196 .ARM.Collect$$$$00002712 mc_w.l(entry2.o)
0x08000104 0x08000104 0x0000004c Code RO 63 .text startup-rvds.o
0x08000150 0x08000150 0x00000024 Code RO 220 .text mc_w.l(init.o)
0x08000174 0x08000174 0x000000e4 Code RO 118 i.Active_IT_Debordement_Timer DriverJeuLaser.lib(timer_1234.o)
0x08000258 0x08000258 0x00000074 Code RO 77 i.CLOCK_Configure DriverJeuLaser.lib(clock.o)
0x080002cc 0x080002cc 0x00000008 Code RO 79 i.CLOCK_GetHCLK DriverJeuLaser.lib(clock.o)
0x080002d4 0x080002d4 0x00000024 Code RO 82 i.CLOCK_GetTIMCLK DriverJeuLaser.lib(clock.o)
0x080002f8 0x080002f8 0x00000074 Code RO 83 i.CLOCK_HPRECompute DriverJeuLaser.lib(clock.o)
0x0800036c 0x0800036c 0x00000010 Code RO 97 i.GPIOA_Clear DriverJeuLaser.lib(gpio.o)
0x0800037c 0x0800037c 0x00000010 Code RO 98 i.GPIOA_Set DriverJeuLaser.lib(gpio.o)
0x0800038c 0x0800038c 0x00000010 Code RO 99 i.GPIOB_Clear DriverJeuLaser.lib(gpio.o)
0x0800039c 0x0800039c 0x00000010 Code RO 100 i.GPIOB_Set DriverJeuLaser.lib(gpio.o)
0x080003ac 0x080003ac 0x00000010 Code RO 101 i.GPIOC_Clear DriverJeuLaser.lib(gpio.o)
0x080003bc 0x080003bc 0x00000010 Code RO 102 i.GPIOC_Set DriverJeuLaser.lib(gpio.o)
0x080003cc 0x080003cc 0x00000108 Code RO 103 i.GPIO_Configure DriverJeuLaser.lib(gpio.o)
0x080004d4 0x080004d4 0x000000ac Code RO 123 i.PWM_Init_ff DriverJeuLaser.lib(timer_1234.o)
0x08000580 0x08000580 0x0000000c Code RO 124 i.PWM_Set_Value_TIM3_Ch3 DriverJeuLaser.lib(timer_1234.o)
0x0800058c 0x0800058c 0x0000000c Code RO 156 i.SysTick_Handler DriverJeuLaser.lib(timer_systick.o)
0x08000598 0x08000598 0x00000022 Code RO 158 i.Systick_Period_ff DriverJeuLaser.lib(timer_systick.o)
0x080005ba 0x080005ba 0x00000002 PAD
0x080005bc 0x080005bc 0x0000010c Code RO 125 i.TIM1_CC_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080006c8 0x080006c8 0x00000018 Code RO 126 i.TIM1_UP_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080006e0 0x080006e0 0x00000110 Code RO 127 i.TIM2_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080007f0 0x080007f0 0x0000012c Code RO 128 i.TIM3_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x0800091c 0x0800091c 0x0000012c Code RO 129 i.TIM4_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000a48 0x08000a48 0x0000007c Code RO 131 i.Timer_1234_Init_ff DriverJeuLaser.lib(timer_1234.o)
0x08000ac4 0x08000ac4 0x0000000e Code RO 226 i.__scatterload_copy mc_w.l(handlers.o)
0x08000ad2 0x08000ad2 0x00000002 Code RO 227 i.__scatterload_null mc_w.l(handlers.o)
0x08000ad4 0x08000ad4 0x0000000e Code RO 228 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08000ae2 0x08000ae2 0x00000002 PAD
0x08000ae4 0x08000ae4 0x0000006c Code RO 4 i.main principal.o
0x08000b50 0x08000b50 0x0000005c Code RO 70 moncode gestionson.o
0x08000bac 0x08000bac 0x00000020 Data RO 224 Region$$Table anon$$obj.o
0x08000bcc 0x08000bcc 0x00002b18 Data RO 67 SecSon bruitverre.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080036e4, Size: 0x000004b0, Max: 0x00005000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x080036e4 0x000000a0 Data RW 133 .data DriverJeuLaser.lib(timer_1234.o)
0x200000a0 0x08003784 0x00000004 Data RW 160 .data DriverJeuLaser.lib(timer_systick.o)
0x200000a4 0x08003788 0x00000006 Data RW 69 maram gestionson.o
0x200000aa 0x0800378e 0x00000006 PAD
0x200000b0 - 0x00000400 Zero RW 60 STACK startup-rvds.o
==============================================================================
Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
0 0 11032 0 0 0 bruitverre.o
92 16 0 6 0 400 gestionson.o
108 22 0 0 0 1983 principal.o
76 20 236 0 1024 816 startup-rvds.o
----------------------------------------------------------------------
276 58 11300 8 1028 3199 Object Totals
0 0 32 0 0 0 (incl. Generated)
0 0 0 2 4 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name
276 30 0 0 0 284 clock.o
360 60 0 0 0 492 gpio.o
1700 150 0 160 0 740 timer_1234.o
46 6 0 4 0 136 timer_systick.o
0 0 0 0 0 0 entry.o
0 0 0 0 0 0 entry10a.o
0 0 0 0 0 0 entry11a.o
4 0 0 0 0 0 entry12b.o
8 4 0 0 0 0 entry2.o
4 0 0 0 0 0 entry5.o
0 0 0 0 0 0 entry7b.o
0 0 0 0 0 0 entry8b.o
8 4 0 0 0 0 entry9a.o
30 0 0 0 0 0 handlers.o
36 8 0 0 0 68 init.o
----------------------------------------------------------------------
2476 262 0 164 0 1720 Library Totals
4 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
2382 246 0 164 0 1652 DriverJeuLaser.lib
90 16 0 0 0 68 mc_w.l
----------------------------------------------------------------------
2476 262 0 164 0 1720 Library Totals
----------------------------------------------------------------------
==============================================================================
Code (inc. data) RO Data RW Data ZI Data Debug
2752 320 11300 172 1028 4031 Grand Totals
2752 320 11300 172 1028 4031 ELF Image Totals
2752 320 11300 172 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 14052 ( 13.72kB)
Total RW Size (RW Data + ZI Data) 1200 ( 1.17kB)
Total ROM Size (Code + RO Data + RW Data) 14224 ( 13.89kB)
==============================================================================

View file

@ -0,0 +1,16 @@
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00020000 { ; load region size_region
ER_IROM1 0x08000000 0x00020000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}

View file

@ -0,0 +1,18 @@
Dependencies for Project 'StepSon', Target 'CibleSondeKEIL': (DO NOT MODIFY !)
CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC
F (.\Src\principal.c)(0x643DF6D3)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Driver --C99 -I.\RTE\_CibleSondeKEIL -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DSTM32F103xB -DUSE_FULL_LL_DRIVER -o .\obj\principal.o --omf_browse .\obj\principal.crf --depend .\obj\principal.d)
I (.\Driver\DriverJeuLaser.h)(0x6411DDB5)
I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h)(0x58258CCC)
I (.\RTE\_CibleSondeKEIL\RTE_Components.h)(0x64395C7F)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\core_cm3.h)(0x5E8F2582)
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E9122)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_version.h)(0x5E8F2582)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5E835B22)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5E8F2582)
I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\system_stm32f10x.h)(0x58258CCC)
I (Src\GestionSon.h)(0x64396FCC)
F (.\Src\startup-rvds.s)(0x6411DDB5)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_CibleSondeKEIL -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list startup-rvds.lst --xref -o .\obj\startup-rvds.o --depend .\obj\startup-rvds.d)
F (.\Driver\DriverJeuLaser.lib)(0x6411DDB5)()
F (.\Src\bruitverre.asm)(0x6411DDB5)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_CibleSondeKEIL -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list bruitverre.lst --xref -o .\obj\bruitverre.o --depend .\obj\bruitverre.d)
F (.\Src\GestionSon.s)(0x6439705D)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_CibleSondeKEIL -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list gestionson.lst --xref -o .\obj\gestionson.o --depend .\obj\gestionson.d)
I (.\Driver\DriverJeuLaser.inc)(0x6411DDB5)

View file

@ -0,0 +1,17 @@
Dependencies for Project 'StepSon', Target 'Simu': (DO NOT MODIFY !)
CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC
F (.\Src\principal.c)(0x64396C83)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Driver --C99 -I.\RTE\_Simu -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DSTM32F103xB -DUSE_FULL_LL_DRIVER -o .\obj\principal.o --omf_browse .\obj\principal.crf --depend .\obj\principal.d)
I (.\Driver\DriverJeuLaser.h)(0x6411DDB5)
I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h)(0x58258CCC)
I (.\RTE\_Simu\RTE_Components.h)(0x642F4643)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\core_cm3.h)(0x5E8F2582)
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E9122)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_version.h)(0x5E8F2582)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5E835B22)
I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5E8F2582)
I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\system_stm32f10x.h)(0x58258CCC)
F (.\Src\startup-rvds.s)(0x6411DDB5)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_Simu -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list startup-rvds.lst --xref -o .\obj\startup-rvds.o --depend .\obj\startup-rvds.d)
F (.\Driver\DriverJeuLaser.lib)(0x6411DDB5)()
F (.\Src\bruitverre.asm)(0x6411DDB5)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_Simu -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list bruitverre.lst --xref -o .\obj\bruitverre.o --depend .\obj\bruitverre.d)
F (.\Src\GestionSon.s)(0x64396A4A)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I .\Driver -I.\RTE\_Simu -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list gestionson.lst --xref -o .\obj\gestionson.o --depend .\obj\gestionson.d)
I (.\Driver\DriverJeuLaser.inc)(0x6411DDB5)

View file

@ -0,0 +1 @@
.\obj\bruitverre.o: Src\bruitverre.asm

Binary file not shown.

View file

@ -0,0 +1,2 @@
.\obj\gestionson.o: Src\GestionSon.s
.\obj\gestionson.o: .\Driver\DriverJeuLaser.inc

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,11 @@
.\obj\principal.o: Src\principal.c
.\obj\principal.o: .\Driver\DriverJeuLaser.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h
.\obj\principal.o: .\RTE\_CibleSondeKEIL\RTE_Components.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\core_cm3.h
.\obj\principal.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_version.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_compiler.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_armcc.h
.\obj\principal.o: C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\system_stm32f10x.h
.\obj\principal.o: Src\GestionSon.h

Binary file not shown.

View file

@ -0,0 +1 @@
.\obj\startup-rvds.o: Src\startup-rvds.s

Binary file not shown.

View file

@ -0,0 +1,21 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
*
* Project: 'StepSon'
* Target: 'CibleSondeKEIL'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "stm32f10x.h"
#endif /* RTE_COMPONENTS_H */

View file

@ -0,0 +1,21 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
*
* Project: 'StepSon'
* Target: 'CibleSondeST'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "stm32f10x.h"
#endif /* RTE_COMPONENTS_H */

View file

@ -0,0 +1,21 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
*
* Project: 'StepSon'
* Target: 'Simu'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "stm32f10x.h"
#endif /* RTE_COMPONENTS_H */

View file

@ -0,0 +1,7 @@
#ifndef GESTION_SON_H__
#define GESTION_SON_H__
extern void CallbackSon(void);
extern void StartSon(void);
#endif

View file

@ -1,17 +1,27 @@
PRESERVE8
THUMB
export CallbackSon
export StartSon
include DriverJeuLaser.inc
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
IMPORT LongueurSon
IMPORT Son
;Section RAM (read write):
area maram,data,readwrite
index dcd 0;
SortieSon dcw 0;
EXPORT SortieSon ; valeur echelle echantillon courant
; ===============================================================================================
@ -21,10 +31,65 @@
area moncode,code,readonly
; écrire le code ici
CallbackSon proc
push{lr}
ldr r0,=LongueurSon
ldr r1,=index ; @ index
ldr r2,[r1]
ldr r3,[r0]
cmp r2,r3
beq ret
ldr r0, =Son ; recuperer @ son
;ldrsh r2,[r0,r2 lsl 1]
movs r2,r2,lsl #1
add r0,r2
ldrsh r2,[r0];valeur son
ldr r0, =SortieSon ;@ sortie son
;mise a l'echelle;
add r2,#32768
mov r3,#719
mul r2,r3
mov r2,r2,asr #16
; mettre a jour SortieSon
str r2,[r0]
push{r1}
mov r0,r2
bl PWM_Set_Value_TIM3_Ch3
pop{r1}
;incrementer index
ldr r0,[r1]; valeur index
add r0,#1;
str r0,[r1] ;mettre a jour index
ret
pop{pc}
bx lr
endp
StartSon proc
ldr r0,=index ; @ index
mov r1,#0
str r1,[r0]
bx lr
endp
END

View file

@ -1,8 +1,11 @@
#include "DriverJeuLaser.h"
#include "GestionSon.h"
//void ItSystick(void) {
//StartSon();
//}
int main(void)
{
@ -14,15 +17,27 @@ int main(void)
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
unsigned int tick=91*72;
Timer_1234_Init_ff(TIM4,tick);
Active_IT_Debordement_Timer( TIM4, 2, CallbackSon );
PWM_Init_ff( TIM3, 3, 720);
GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
Systick_Period_ff( 1000000*72 );
//Systick_Prio_IT( 1, ItSystick );
SysTick_On;
SysTick_Enable_IT;
//============================================================================
while (1)
{
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -10,7 +10,7 @@
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
@ -154,6 +154,21 @@
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>SortieSon</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>265</SubType>
<ItemText>0x200000A4</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -174,7 +189,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -199,8 +214,13 @@
<LogicAnalyzers>
<Wi>
<IntNumber>0</IntNumber>
<FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
<FirstString>`SortieSon</FirstString>
<SecondString>FF0000000000000000000000000000000050824000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000E03F1500000000000000000000000000000000000000E8080008</SecondString>
</Wi>
<Wi>
<IntNumber>1</IntNumber>
<FirstString>((portb &amp; 0x00000001) &amp; 0x1) &gt;&gt; 0</FirstString>
<SecondString>00800000000000000000000000000000E0FFEF400100000000000000000000000000000028706F72746220262030783030303030303031290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000000000000000E03F1500000000000000000000000000000000000000080B0008</SecondString>
</Wi>
</LogicAnalyzers>
<DebugDescription>
@ -267,7 +287,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@ -346,11 +366,18 @@
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>SortieSon,0x0A</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>257</SubType>
<ItemText>r0</ItemText>
<SubType>265</SubType>
<ItemText>0x08000BD8</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
@ -374,7 +401,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -460,7 +487,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@ -616,7 +643,7 @@
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\principal.c</PathWithFileName>
@ -666,6 +693,38 @@
</File>
</Group>
<Group>
<GroupName>Son</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\bruitverre.asm</PathWithFileName>
<FilenameWithoutPath>bruitverre.asm</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>2</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\GestionSon.s</PathWithFileName>
<FilenameWithoutPath>GestionSon.s</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
<tvExp>0</tvExp>

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>
@ -357,7 +357,7 @@
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
<IncludePath>.\Driver</IncludePath>
</VariousControls>
</Aads>
<LDads>
@ -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>
@ -419,7 +434,7 @@
<TargetName>CibleSondeKEIL</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>
@ -766,7 +781,7 @@
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
<IncludePath>.\Driver</IncludePath>
</VariousControls>
</Aads>
<LDads>
@ -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>
@ -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>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,368 @@
ARM Macro Assembler Page 1
1 00000000 PRESERVE8
2 00000000 THUMB
3 00000000
4 00000000 export CallbackSon
5 00000000 export StartSon
6 00000000 include DriverJeuLaser.inc
1 00000000
2 00000000 ; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée
2021 - TR)
3 00000000 ; Accès en aux fonctions suivantes :
4 00000000 ; GPIO :
5 00000000 ; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_
Set(char Broche)
6 00000000 ; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GP
IOC_Clear(char Broche)
7 00000000
8 00000000 ; PWM :
9 00000000 ;/**
10 00000000 ; * @brief Fixe une valeur de PWM, Val, en tick horloge
. La rapport cyclique effectif
11 00000000 ; * est donc : rcy = Thaut_ticks / Periode_ticks
12 00000000 ; * @note spécifique Jeu Laser, PWM liée exclusivement
au TIM3, chan3
13 00000000 ; * @param Thaut_ticks : durée de l'état haut d'une imp
ulsion en Ticks
14 00000000 ; * @retval None
15 00000000 ; */
16 00000000
17 00000000 ;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_t
icks);
18 00000000 import PWM_Set_Value_TIM3_Ch3
19 00000000
20 00000000
21 00000000
22 00000000 ;/**
23 00000000 ; * @brief Mise à 1 d'une broche GPIO
24 00000000 ; * @note Une fonction par GPIO
25 00000000 ; * @param Broche : 0 à 15
26 00000000 ; * @retval None
27 00000000 ; */
28 00000000
29 00000000 ;void GPIOA_Set(char Broche);
30 00000000 import GPIOA_Set
31 00000000
32 00000000 ;void GPIOB_Set(char Broche);
33 00000000 import GPIOB_Set
34 00000000
35 00000000 ;void GPIOC_Set(char Broche);
36 00000000 import GPIOC_Set
37 00000000
38 00000000
39 00000000
40 00000000 ;/**
41 00000000 ; * @brief Mise à 0 d'une broche GPIO
42 00000000 ; * @note Une fonction par GPIO
43 00000000 ; * @param Broche : 0 à 15
44 00000000 ; * @retval None
45 00000000 ; */
46 00000000
ARM Macro Assembler Page 2
47 00000000 ;void GPIOA_Clear(char Broche);
48 00000000 import GPIOA_Clear
49 00000000
50 00000000 ;void GPIOB_Clear(char Broche);
51 00000000 import GPIOB_Clear
52 00000000
53 00000000 ;void GPIOC_Clear(char Broche);
54 00000000 import GPIOC_Clear
55 00000000
56 00000000 end
7 00000000
8 00000000
9 00000000 ; ====================== zone de réservation de données,
======================================
10 00000000 ;Section RAM (read only) :
11 00000000 area mesdata,data,readonly
12 00000000 IMPORT LongueurSon
13 00000000 IMPORT Son
14 00000000
15 00000000
16 00000000
17 00000000 ;Section RAM (read write):
18 00000000 area maram,data,readwrite
19 00000000
20 00000000 00000000
index dcd 0 ;
21 00000004
22 00000004 00 00 SortieSon
dcw 0 ;
23 00000006 EXPORT SortieSon ; valeur echelle ec
hantillon courant
24 00000006
25 00000006 ; ======================================================
=========================================
26 00000006
27 00000006
28 00000006
29 00000006
30 00000006 ;Section ROM code (read only) :
31 00000006 area moncode,code,readonly
32 00000000 ; écrire le code ici
33 00000000
34 00000000 CallbackSon
proc
35 00000000
36 00000000 B500 push{lr}
37 00000002
38 00000002 4812 ldr r0,=LongueurSon
39 00000004 4912 ldr r1,=index ; @ index
40 00000006 680A ldr r2,[r1]
41 00000008 6803 ldr r3,[r0]
42 0000000A 429A cmp r2,r3
43 0000000C D017 beq ret
44 0000000E
45 0000000E
46 0000000E 4811 ldr r0, =Son ; recuperer @ son
47 00000010 ;ldrsh r2,[r0,r2 lsl 1]
48 00000010 0052 movs r2,r2,lsl #1
49 00000012 4410 add r0,r2
ARM Macro Assembler Page 3
50 00000014 F9B0 2000 ldrsh r2,[r0] ;valeur son
51 00000018
52 00000018
53 00000018 480F ldr r0, =SortieSon ;@ sortie son
54 0000001A
55 0000001A ;mise a l'echelle;
56 0000001A F502 4200 add r2,#32768
57 0000001E F240 23CF mov r3,#719
58 00000022 FB02 F203 mul r2,r3
59 00000026 EA4F 4222 mov r2,r2,asr #16
60 0000002A
61 0000002A ; mettre a jour SortieSon
62 0000002A 6002 str r2,[r0]
63 0000002C
64 0000002C
65 0000002C B402 push{r1}
66 0000002E 4610 mov r0,r2
67 00000030 F7FF FFFE bl PWM_Set_Value_TIM3_Ch3
68 00000034 BC02 pop{r1}
69 00000036
70 00000036 ;incrementer index
71 00000036 6808 ldr r0,[r1] ; valeur index
72 00000038 F100 0001 add r0,#1 ;
73 0000003C 6008 str r0,[r1] ;mettre a jour inde
x
74 0000003E
75 0000003E
76 0000003E
77 0000003E
78 0000003E ret
79 0000003E BD00 pop{pc}
80 00000040 4770 bx lr
81 00000042
82 00000042
83 00000042 endp
84 00000042
85 00000042 StartSon
proc
86 00000042
87 00000042 4803 ldr r0,=index ; @ index
88 00000044 F04F 0100 mov r1,#0
89 00000048 6001 str r1,[r0]
90 0000004A
91 0000004A 4770 bx lr
92 0000004C
93 0000004C endp
94 0000004C
95 0000004C END
00000000
00000000
00000000
00000000
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
ork --depend=.\obj\gestionson.d -o.\obj\gestionson.o -I.\Driver -I.\RTE\_CibleS
ondeKEIL -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC
:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --predefin
e="__EVAL SETA 1" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSIO
N SETA 534" --predefine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --pred
efine="_RTE_ SETA 1" --list=gestionson.lst Src\GestionSon.s
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Relocatable symbols
mesdata 00000000
Symbol: mesdata
Definitions
At line 11 in file Src\GestionSon.s
Uses
None
Comment: mesdata unused
1 symbol
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Relocatable symbols
SortieSon 00000004
Symbol: SortieSon
Definitions
At line 22 in file Src\GestionSon.s
Uses
At line 23 in file Src\GestionSon.s
At line 53 in file Src\GestionSon.s
index 00000000
Symbol: index
Definitions
At line 20 in file Src\GestionSon.s
Uses
At line 39 in file Src\GestionSon.s
At line 87 in file Src\GestionSon.s
maram 00000000
Symbol: maram
Definitions
At line 18 in file Src\GestionSon.s
Uses
None
Comment: maram unused
3 symbols
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Relocatable symbols
CallbackSon 00000000
Symbol: CallbackSon
Definitions
At line 34 in file Src\GestionSon.s
Uses
At line 4 in file Src\GestionSon.s
Comment: CallbackSon used once
StartSon 00000042
Symbol: StartSon
Definitions
At line 85 in file Src\GestionSon.s
Uses
At line 5 in file Src\GestionSon.s
Comment: StartSon used once
moncode 00000000
Symbol: moncode
Definitions
At line 31 in file Src\GestionSon.s
Uses
None
Comment: moncode unused
ret 0000003E
Symbol: ret
Definitions
At line 78 in file Src\GestionSon.s
Uses
At line 43 in file Src\GestionSon.s
Comment: ret used once
4 symbols
ARM Macro Assembler Page 1 Alphabetic symbol ordering
External symbols
GPIOA_Clear 00000000
Symbol: GPIOA_Clear
Definitions
At line 48 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOA_Clear unused
GPIOA_Set 00000000
Symbol: GPIOA_Set
Definitions
At line 30 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOA_Set unused
GPIOB_Clear 00000000
Symbol: GPIOB_Clear
Definitions
At line 51 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOB_Clear unused
GPIOB_Set 00000000
Symbol: GPIOB_Set
Definitions
At line 33 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOB_Set unused
GPIOC_Clear 00000000
Symbol: GPIOC_Clear
Definitions
At line 54 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOC_Clear unused
GPIOC_Set 00000000
Symbol: GPIOC_Set
Definitions
At line 36 in file .\Driver\DriverJeuLaser.inc
Uses
None
Comment: GPIOC_Set unused
LongueurSon 00000000
Symbol: LongueurSon
Definitions
At line 12 in file Src\GestionSon.s
Uses
At line 38 in file Src\GestionSon.s
Comment: LongueurSon used once
PWM_Set_Value_TIM3_Ch3 00000000
Symbol: PWM_Set_Value_TIM3_Ch3
ARM Macro Assembler Page 2 Alphabetic symbol ordering
External symbols
Definitions
At line 18 in file .\Driver\DriverJeuLaser.inc
Uses
At line 67 in file Src\GestionSon.s
Comment: PWM_Set_Value_TIM3_Ch3 used once
Son 00000000
Symbol: Son
Definitions
At line 13 in file Src\GestionSon.s
Uses
At line 46 in file Src\GestionSon.s
Comment: Son used once
9 symbols
354 symbols in table

File diff suppressed because it is too large Load diff