This commit is contained in:
Apollinaire Criquet 2023-05-09 17:55:31 +02:00
parent 4da5fc13a9
commit b69f899778
49 changed files with 9425 additions and 1344 deletions

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

274
DFT_Signal_Reel/Src/DFT.s Normal file
View file

@ -0,0 +1,274 @@
PRESERVE8
THUMB
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
;int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
; int somme_cos, somme_sin;
; for(int n = 0; n<63; n++){
; somme_cos += TabCos[(n*k)%64]*LeSignal[n];
; somme_sin += TabSin[n]*LeSignal[n];
; }
; int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
; return somme_k;
;}
export DFT_ModuleAucarre_Reel
export DFT_ModuleAucarre_Im
export DFT_ModuleAuCarre
import LeSignal
DFT_ModuleAucarre_Reel proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabCos;
Debut1
cmp r2, #64 ; comparaison avec taille tableau
beq Fin1
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabCos[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut1
Fin1
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAucarre_Im proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabSin;
Debut2
cmp r2, #64 ; comparaison avec taille tableau
beq Fin2
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabSin[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut2
Fin2
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAuCarre proc
push {lr}
push {r0}
push {r1}
bl DFT_ModuleAucarre_Reel
mov r2, r0
pop {r1}
pop {r0}
push {r2}
bl DFT_ModuleAucarre_Im
pop {r1}
smull r3, r2, r0, r0
smlal r3, r2, r1, r1
mov r0, r2
pop{lr}
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 0x0800 ; 0 2048 0.50000
DCW 0x05ad ; 1 1453 0.35474
DCW 0x038e ; 2 910 0.22217
DCW 0x01d1 ; 3 465 0.11353
DCW 0x009c ; 4 156 0.03809
DCW 0x000a ; 5 10 0.00244
DCW 0x0027 ; 6 39 0.00952
DCW 0x00f2 ; 7 242 0.05908
DCW 0x0258 ; 8 600 0.14648
DCW 0x043b ; 9 1083 0.26440
DCW 0x0670 ; 10 1648 0.40234
DCW 0x08c9 ; 11 2249 0.54907
DCW 0x0b10 ; 12 2832 0.69141
DCW 0x0d13 ; 13 3347 0.81714
DCW 0x0ea7 ; 14 3751 0.91577
DCW 0x0fa8 ; 15 4008 0.97852
DCW 0x0fff ; 16 4095 0.99976
DCW 0x0fa8 ; 17 4008 0.97852
DCW 0x0ea7 ; 18 3751 0.91577
DCW 0x0d13 ; 19 3347 0.81714
DCW 0x0b10 ; 20 2832 0.69141
DCW 0x08c9 ; 21 2249 0.54907
DCW 0x0670 ; 22 1648 0.40234
DCW 0x043b ; 23 1083 0.26440
DCW 0x0258 ; 24 600 0.14648
DCW 0x00f2 ; 25 242 0.05908
DCW 0x0027 ; 26 39 0.00952
DCW 0x000a ; 27 10 0.00244
DCW 0x009c ; 28 156 0.03809
DCW 0x01d1 ; 29 465 0.11353
DCW 0x038e ; 30 910 0.22217
DCW 0x05ad ; 31 1453 0.35474
DCW 0x0800 ; 32 2048 0.50000
DCW 0x0a53 ; 33 2643 0.64526
DCW 0x0c72 ; 34 3186 0.77783
DCW 0x0e2f ; 35 3631 0.88647
DCW 0x0f64 ; 36 3940 0.96191
DCW 0x0ff6 ; 37 4086 0.99756
DCW 0x0fd9 ; 38 4057 0.99048
DCW 0x0f0e ; 39 3854 0.94092
DCW 0x0da8 ; 40 3496 0.85352
DCW 0x0bc5 ; 41 3013 0.73560
DCW 0x0990 ; 42 2448 0.59766
DCW 0x0737 ; 43 1847 0.45093
DCW 0x04f0 ; 44 1264 0.30859
DCW 0x02ed ; 45 749 0.18286
DCW 0x0159 ; 46 345 0.08423
DCW 0x0058 ; 47 88 0.02148
DCW 0x0000 ; 48 0 0.00000
DCW 0x0058 ; 49 88 0.02148
DCW 0x0159 ; 50 345 0.08423
DCW 0x02ed ; 51 749 0.18286
DCW 0x04f0 ; 52 1264 0.30859
DCW 0x0737 ; 53 1847 0.45093
DCW 0x0990 ; 54 2448 0.59766
DCW 0x0bc5 ; 55 3013 0.73560
DCW 0x0da8 ; 56 3496 0.85352
DCW 0x0f0e ; 57 3854 0.94092
DCW 0x0fd9 ; 58 4057 0.99048
DCW 0x0ff6 ; 59 4086 0.99756
DCW 0x0f64 ; 60 3940 0.96191
DCW 0x0e2f ; 61 3631 0.88647
DCW 0x0c72 ; 62 3186 0.77783
DCW 0x0a53 ; 63 2643 0.64526
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"
extern int DFT_ModuleAucarre_Reel(short int * Signal64ech, char k);
extern int DFT_ModuleAucarre_Im(short int * Signal64ech, char k);
extern int DFT_ModuleAuCarre (short int * Signal64ech, char k);
extern short int LeSignal[64];
//int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
// int somme_cos, somme_sin;
// for(int n = 0; n<63; n++){
// somme_cos += TabCos[n];
// somme_sin += TabSin[n];
// }
// int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
// return somme_k;
//}
int Resultat[64];
short dma_buf[64];
void callback_Systick(){
Start_DMA1(64);
Wait_On_End_Of_DMA1();
Stop_DMA1;
for (int k =0; k <64; k++){
Resultat[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(360000);
Systick_Prio_IT(2, callback_Systick);
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

68
Matlab/Signal.asm Normal file
View file

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

38
Matlab/Signal.m Normal file
View file

@ -0,0 +1,38 @@
clc
clear
N = input('Nombre d''échantilllons pour ce signal : ');
Frel = input('Fréquence normalisée (nombre de périodes dans la durée totale) : ');
Ph0 = input('Phase a l''origine (en degrés) : ');
Ph0 = Ph0 * pi / 180.0; % a present en radian
Ampl = 2048;
Offset = 2048;
%% Création du fichier .asm
fileID = fopen(['Signal.asm'], 'w');
fprintf(fileID,'\tAREA Signal, DATA, READONLY\n');
fprintf(fileID,'\texport LeSignal\n');
fprintf(fileID,'LeSignal\n');
for i = 1: N
% fonction a modifier en fonction des besoins
Sig(i) = Offset + Ampl * cos( 2*pi*Frel*(i-1)/N + Ph0 );
% arrondi
iSig = int16(Sig(i));
% bornage du signal similaire a la sortie brute de l'ADC 12 bits
if ( iSig < 0 )
iSig = 0;
end
if ( iSig > 4095 )
iSig = 4095;
end
fprintf(fileID,'\tDCW\t0x%04x\t; %2d %4d %7.5f\n',iSig, i-1, iSig, double(iSig) / 4096.0 );
end
fprintf(fileID,'\tEND\n');
fclose(fileID);
plot(Sig);

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

274
PjtKEIL_StepDFT/Src/DFT.s Normal file
View file

@ -0,0 +1,274 @@
PRESERVE8
THUMB
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
;int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
; int somme_cos, somme_sin;
; for(int n = 0; n<63; n++){
; somme_cos += TabCos[(n*k)%64]*LeSignal[n];
; somme_sin += TabSin[n]*LeSignal[n];
; }
; int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
; return somme_k;
;}
export DFT_ModuleAucarre_Reel
export DFT_ModuleAucarre_Im
export DFT_ModuleAuCarre
import LeSignal
DFT_ModuleAucarre_Reel proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabCos;
Debut1
cmp r2, #64 ; comparaison avec taille tableau
beq Fin1
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabCos[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut1
Fin1
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAucarre_Im proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabSin;
Debut2
cmp r2, #64 ; comparaison avec taille tableau
beq Fin2
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabSin[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut2
Fin2
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAuCarre proc
push {lr}
push {r0}
push {r1}
bl DFT_ModuleAucarre_Reel
mov r2, r0
pop {r1}
pop {r0}
push {r2}
bl DFT_ModuleAucarre_Im
pop {r1}
smull r3, r2, r0, r0
smlal r3, r2, r1, r1
mov r0, r2
pop{lr}
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 0x0800 ; 0 2048 0.50000
DCW 0x05ad ; 1 1453 0.35474
DCW 0x038e ; 2 910 0.22217
DCW 0x01d1 ; 3 465 0.11353
DCW 0x009c ; 4 156 0.03809
DCW 0x000a ; 5 10 0.00244
DCW 0x0027 ; 6 39 0.00952
DCW 0x00f2 ; 7 242 0.05908
DCW 0x0258 ; 8 600 0.14648
DCW 0x043b ; 9 1083 0.26440
DCW 0x0670 ; 10 1648 0.40234
DCW 0x08c9 ; 11 2249 0.54907
DCW 0x0b10 ; 12 2832 0.69141
DCW 0x0d13 ; 13 3347 0.81714
DCW 0x0ea7 ; 14 3751 0.91577
DCW 0x0fa8 ; 15 4008 0.97852
DCW 0x0fff ; 16 4095 0.99976
DCW 0x0fa8 ; 17 4008 0.97852
DCW 0x0ea7 ; 18 3751 0.91577
DCW 0x0d13 ; 19 3347 0.81714
DCW 0x0b10 ; 20 2832 0.69141
DCW 0x08c9 ; 21 2249 0.54907
DCW 0x0670 ; 22 1648 0.40234
DCW 0x043b ; 23 1083 0.26440
DCW 0x0258 ; 24 600 0.14648
DCW 0x00f2 ; 25 242 0.05908
DCW 0x0027 ; 26 39 0.00952
DCW 0x000a ; 27 10 0.00244
DCW 0x009c ; 28 156 0.03809
DCW 0x01d1 ; 29 465 0.11353
DCW 0x038e ; 30 910 0.22217
DCW 0x05ad ; 31 1453 0.35474
DCW 0x0800 ; 32 2048 0.50000
DCW 0x0a53 ; 33 2643 0.64526
DCW 0x0c72 ; 34 3186 0.77783
DCW 0x0e2f ; 35 3631 0.88647
DCW 0x0f64 ; 36 3940 0.96191
DCW 0x0ff6 ; 37 4086 0.99756
DCW 0x0fd9 ; 38 4057 0.99048
DCW 0x0f0e ; 39 3854 0.94092
DCW 0x0da8 ; 40 3496 0.85352
DCW 0x0bc5 ; 41 3013 0.73560
DCW 0x0990 ; 42 2448 0.59766
DCW 0x0737 ; 43 1847 0.45093
DCW 0x04f0 ; 44 1264 0.30859
DCW 0x02ed ; 45 749 0.18286
DCW 0x0159 ; 46 345 0.08423
DCW 0x0058 ; 47 88 0.02148
DCW 0x0000 ; 48 0 0.00000
DCW 0x0058 ; 49 88 0.02148
DCW 0x0159 ; 50 345 0.08423
DCW 0x02ed ; 51 749 0.18286
DCW 0x04f0 ; 52 1264 0.30859
DCW 0x0737 ; 53 1847 0.45093
DCW 0x0990 ; 54 2448 0.59766
DCW 0x0bc5 ; 55 3013 0.73560
DCW 0x0da8 ; 56 3496 0.85352
DCW 0x0f0e ; 57 3854 0.94092
DCW 0x0fd9 ; 58 4057 0.99048
DCW 0x0ff6 ; 59 4086 0.99756
DCW 0x0f64 ; 60 3940 0.96191
DCW 0x0e2f ; 61 3631 0.88647
DCW 0x0c72 ; 62 3186 0.77783
DCW 0x0a53 ; 63 2643 0.64526
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,40 @@
#include "DriverJeuLaser.h"
extern int DFT_ModuleAucarre_Reel(short int * Signal64ech, char k);
extern int DFT_ModuleAucarre_Im(short int * Signal64ech, char k);
extern int DFT_ModuleAuCarre (short int * Signal64ech, char k);
extern short int LeSignal[64];
//int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
// int somme_cos, somme_sin;
// for(int n = 0; n<63; n++){
// somme_cos += TabCos[n];
// somme_sin += TabSin[n];
// }
// int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
// return somme_k;
//}
int Resultat[64];
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();
for (int k =0; k <64; k++){
Resultat[k] = DFT_ModuleAuCarre(LeSignal,k);
}
//============================================================================
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

File diff suppressed because one or more lines are too long

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,78 @@
/* Fichier devant contenir l'ensemble de fichiers utiles pour le projet LaserQuest
et qui concenent l'affichage sur la valise */
/* mais non disponible en version source pour les étudiants. */
#ifndef _AFFICHAGE_VALISE_H__
#define _AFFICHAGE_VALISE_H__
#include "stm32f10x.h"
/**
* @brief Initialise les périphériques nécessaires à l'affichage sur la Mallette
* et gère la cible active. S'utilise aussi avec les ùmodules affichages simple (pas de mallette)
* @note Utilise TIM1, PA5, PA6 pour les cibles, PC7 à PC9 pour SPI émulé
* utilise aussi une interruption sut TIM1, prio 8.
* @param none
* @retval None
*/
void Init_Affichage(void);
/**
* @brief Prépare l'affichage 2 digit sur l'afficheur demandé
* @note Exemple : Prepare_Afficheur(2, 99);
* prépare l'affichage de la valeur 99 sur l'afficheur n°2
* L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
* @param char Aff : de 1 à 4 ; char Valeur de 0 à 99
* @retval None
*/
void Prepare_Afficheur(char Aff, char Valeur);
void Prepare_Set_Point_Unite(char Aff);
void Prepare_Clear_Point_Unite(char Aff);
/**
* @brief Prépare l'allumage de la LED demandée
* @note Exemple : Prepare_Set_LED(LED_Cible_2);
* prépare l'allumage de la LED correspondant à la cible n°2
* L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
* @param voir #define ci-dessous
* @retval None
*/
void Prepare_Set_LED(char LED);
void Prepare_Clear_LED(char LED);
/**
* @brief Effectue l'action d'écriture dans le module d'affichage
* à partir de tout ce qui a é préparé auparavant.
* @note
* @param None
* @retval None
*/
void Mise_A_Jour_Afficheurs_LED(void);
/**
* @brief Spécifie le capteut actif, à savoir celui effectivement relié
* aux sorties disponibles sur la malette
* @note Exemple : Choix_Capteur(1)
* @param 1 à 4
* @retval None
*/
void Choix_Capteur(char Capteur);
// define utile pour la fonction Prepare_Set_LED et Prepare_Clear_LED
#define LED_LCD_R 5
#define LED_LCD_V 4
#define LED_Cible_4 3
#define LED_Cible_3 2
#define LED_Cible_2 1
#define LED_Cible_1 0
#endif

274
PjtKEIL_StepFini/Src/DFT.s Normal file
View file

@ -0,0 +1,274 @@
PRESERVE8
THUMB
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
;int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
; int somme_cos, somme_sin;
; for(int n = 0; n<63; n++){
; somme_cos += TabCos[(n*k)%64]*LeSignal[n];
; somme_sin += TabSin[n]*LeSignal[n];
; }
; int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
; return somme_k;
;}
export DFT_ModuleAucarre_Reel
export DFT_ModuleAucarre_Im
export DFT_ModuleAuCarre
import LeSignal
DFT_ModuleAucarre_Reel proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabCos;
Debut1
cmp r2, #64 ; comparaison avec taille tableau
beq Fin1
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabCos[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut1
Fin1
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAucarre_Im proc
; LeSignal dans r0
; k dans r1
mov r2, #0 ;On met l'index a 0
mov r3, #0 ; On initialise les registres ou on compte stocker somme_cos (r2)
push {r4}
push {r5}
push {r6}
ldr r4, = TabSin;
Debut2
cmp r2, #64 ; comparaison avec taille tableau
beq Fin2
mul r7, r2, r1
and r7, r7, #63
ldrsh r5, [r4, r7, LSL #1] ;on charge TabSin[n] dans r5
ldrsh r6, [r0, r2, LSL #1] ;on charge LeSignal[n] dans r6
mul r5, r6, r5
adds r3, r3, r5
adds r2, #1 ; On incrémente
b Debut2
Fin2
mov r0, r3
pop {r6}
pop {r5}
pop {r4}
bx lr
endp
DFT_ModuleAuCarre proc
push {lr}
push {r0}
push {r1}
bl DFT_ModuleAucarre_Reel
mov r2, r0
pop {r1}
pop {r0}
push {r2}
bl DFT_ModuleAucarre_Im
pop {r1}
smull r3, r2, r0, r0
smlal r3, r2, r1, r1
mov r0, r2
pop{lr}
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 0x0800 ; 0 2048 0.50000
DCW 0x05ad ; 1 1453 0.35474
DCW 0x038e ; 2 910 0.22217
DCW 0x01d1 ; 3 465 0.11353
DCW 0x009c ; 4 156 0.03809
DCW 0x000a ; 5 10 0.00244
DCW 0x0027 ; 6 39 0.00952
DCW 0x00f2 ; 7 242 0.05908
DCW 0x0258 ; 8 600 0.14648
DCW 0x043b ; 9 1083 0.26440
DCW 0x0670 ; 10 1648 0.40234
DCW 0x08c9 ; 11 2249 0.54907
DCW 0x0b10 ; 12 2832 0.69141
DCW 0x0d13 ; 13 3347 0.81714
DCW 0x0ea7 ; 14 3751 0.91577
DCW 0x0fa8 ; 15 4008 0.97852
DCW 0x0fff ; 16 4095 0.99976
DCW 0x0fa8 ; 17 4008 0.97852
DCW 0x0ea7 ; 18 3751 0.91577
DCW 0x0d13 ; 19 3347 0.81714
DCW 0x0b10 ; 20 2832 0.69141
DCW 0x08c9 ; 21 2249 0.54907
DCW 0x0670 ; 22 1648 0.40234
DCW 0x043b ; 23 1083 0.26440
DCW 0x0258 ; 24 600 0.14648
DCW 0x00f2 ; 25 242 0.05908
DCW 0x0027 ; 26 39 0.00952
DCW 0x000a ; 27 10 0.00244
DCW 0x009c ; 28 156 0.03809
DCW 0x01d1 ; 29 465 0.11353
DCW 0x038e ; 30 910 0.22217
DCW 0x05ad ; 31 1453 0.35474
DCW 0x0800 ; 32 2048 0.50000
DCW 0x0a53 ; 33 2643 0.64526
DCW 0x0c72 ; 34 3186 0.77783
DCW 0x0e2f ; 35 3631 0.88647
DCW 0x0f64 ; 36 3940 0.96191
DCW 0x0ff6 ; 37 4086 0.99756
DCW 0x0fd9 ; 38 4057 0.99048
DCW 0x0f0e ; 39 3854 0.94092
DCW 0x0da8 ; 40 3496 0.85352
DCW 0x0bc5 ; 41 3013 0.73560
DCW 0x0990 ; 42 2448 0.59766
DCW 0x0737 ; 43 1847 0.45093
DCW 0x04f0 ; 44 1264 0.30859
DCW 0x02ed ; 45 749 0.18286
DCW 0x0159 ; 46 345 0.08423
DCW 0x0058 ; 47 88 0.02148
DCW 0x0000 ; 48 0 0.00000
DCW 0x0058 ; 49 88 0.02148
DCW 0x0159 ; 50 345 0.08423
DCW 0x02ed ; 51 749 0.18286
DCW 0x04f0 ; 52 1264 0.30859
DCW 0x0737 ; 53 1847 0.45093
DCW 0x0990 ; 54 2448 0.59766
DCW 0x0bc5 ; 55 3013 0.73560
DCW 0x0da8 ; 56 3496 0.85352
DCW 0x0f0e ; 57 3854 0.94092
DCW 0x0fd9 ; 58 4057 0.99048
DCW 0x0ff6 ; 59 4086 0.99756
DCW 0x0f64 ; 60 3940 0.96191
DCW 0x0e2f ; 61 3631 0.88647
DCW 0x0c72 ; 62 3186 0.77783
DCW 0x0a53 ; 63 2643 0.64526
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,40 @@
#include "DriverJeuLaser.h"
extern int DFT_ModuleAucarre_Reel(short int * Signal64ech, char k);
extern int DFT_ModuleAucarre_Im(short int * Signal64ech, char k);
extern int DFT_ModuleAuCarre (short int * Signal64ech, char k);
extern short int LeSignal[64];
//int DFT_ModuleAuCarre_C( short int * Signal64ech, char k){
// int somme_cos, somme_sin;
// for(int n = 0; n<63; n++){
// somme_cos += TabCos[n];
// somme_sin += TabSin[n];
// }
// int somme_k = (int) (long long) somme_cos* (int) (long long) somme_cos + (int) (long long) somme_sin* (int) (long long) somme_sin;
// return somme_k;
//}
int Resultat[64];
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();
for (int k =0; k <64; k++){
Resultat[k] = DFT_ModuleAuCarre(LeSignal,k);
}
//============================================================================
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,3 @@
void CallbackSon(void);
void StartSon(void);

View file

@ -0,0 +1,89 @@
PRESERVE8
THUMB
export CallbackSon
export StartSon
import Son
import LongueurSon
include DriverJeuLaser.inc
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
SortieSon dcw 0 ; reserve seulement 2 octet de memoire
Index dcw 0
; ===============================================================================================
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
;
;if (i<LongueurSon) {
;
; sample = Son[i];
; SortieSon = sample * (720/65536) + 360
; i++;
;}else {
; i=0;
;}
StartSon proc
ldr r0, = Index; ; On charge la valeur d'index
mov r1, #0
strh r1, [r0]
bx lr
endp
CallbackSon proc
push {lr}
ldr r0, = Index; ; On charge la valeur d'index
ldr r1, [r0] ;
ldr r2, = LongueurSon; ; On charge la valeur de la longueur son
ldr r3, [r2] ;
cmp r3, r1 ; On regarde si on est arrivé au bout du tableau
ble Sinon
ldr r2, = Son; ; On charge la valeur de la bonne
ldrsh r3, [r2, r1, LSL #1] ; ligne de son
add r1, r1, #1 ; On store l'index et on l'incrémente de 1
strh r1, [r0]
;add r3, #32768 ; On ajoute 32768
mov r1, #360 ; On multiplie par 720
mul r3, r1, r3 ;
asr r3, #15 ; On divise par 65536
add r3, r1
ldr r2, = SortieSon
strh r3, [r2] ; On sauvegarde la valeur dans SortieSon
b fin
Sinon
;mov r1, #0 ; On remet l'index à 0
str r0, [r1] ; On store l'index
fin
EXPORT SortieSon
mov r0, r3
bl PWM_Set_Value_TIM3_Ch3
pop {pc}
endp
END

Binary file not shown.

View file

@ -30,11 +30,12 @@ Rebuild target 'Simu'
assembling startup-rvds.s...
assembling bruitverre.asm...
assembling GestionSon.s...
Src\GestionSon.s(89): warning: A1581W: Added 2 bytes of padding at address 0x42
compiling principal.c...
linking...
Program Size: Code=2644 RO-data=11300 RW-data=164 ZI-data=1028
Program Size: Code=2768 RO-data=11300 RW-data=168 ZI-data=1024
FromELF: creating hex file...
".\Obj\StepSon.axf" - 0 Error(s), 0 Warning(s).
".\Obj\StepSon.axf" - 0 Error(s), 1 Warning(s).
<h2>Software Packages used:</h2>

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@
<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: Tue Apr 11 16:09:00 2023
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060960: Last Updated: Tue Apr 18 15:41:27 2023
<BR><P>
<H3>Maximum Stack Usage = 40 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@ -19,7 +19,6 @@ Mutually Recursive functions
<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="#[9]">SysTick_Handler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[9]">SysTick_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>
@ -63,7 +62,8 @@ Function Pointers
<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 startup-rvds.o(.text) referenced from startup-rvds.o(RESET)
<LI><a href="#[39]">StartSon</a> from gestionson.o(moncode) referenced from principal.o(i.main)
<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)
@ -91,27 +91,27 @@ Global Symbols
<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="[45]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[48]"></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
<P><STRONG><a name="[3a]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[3b]">&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
<P><STRONG><a name="[3c]"></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="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[46]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[49]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[47]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[4a]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[48]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[4b]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[49]"></a>__rt_lib_shutdown_fini</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))
<P><STRONG><a name="[4c]"></a>__rt_lib_shutdown_fini</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry12b.o(.ARM.Collect$$$$0000000E))
<P><STRONG><a name="[4a]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[4d]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[4b]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$00000011))
<P><STRONG><a name="[4e]"></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)
@ -175,13 +175,6 @@ Global Symbols
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup-rvds.o(RESET)
</UL>
<P><STRONG><a name="[9]"></a>SysTick_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup-rvds.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
</UL>
<BR>[Called By]<UL><LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_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>
@ -300,66 +293,77 @@ Global Symbols
<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
<P><STRONG><a name="[3b]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[3c]">&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
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[4c]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[4f]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[43]"></a>Active_IT_Debordement_Timer</STRONG> (Thumb, 204 bytes, Stack size 24 bytes, timer_1234.o(i.Active_IT_Debordement_Timer))
<P><STRONG><a name="[45]"></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))
<P><STRONG><a name="[3d]"></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
<BR>[Calls]<UL><LI><a href="#[3e]">&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
<P><STRONG><a name="[41]"></a>CLOCK_GetHCLK</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, clock.o(i.CLOCK_GetHCLK))
<BR><BR>[Called By]<UL><LI><a href="#[40]">&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
<P><STRONG><a name="[42]"></a>CLOCK_GetTIMCLK</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, clock.o(i.CLOCK_GetTIMCLK))
<BR><BR>[Called By]<UL><LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
</UL>
<P><STRONG><a name="[4d]"></a>GPIOA_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Clear), UNUSED)
<P><STRONG><a name="[50]"></a>GPIOA_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Clear), UNUSED)
<P><STRONG><a name="[4e]"></a>GPIOA_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Set), UNUSED)
<P><STRONG><a name="[51]"></a>GPIOA_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOA_Set), UNUSED)
<P><STRONG><a name="[4f]"></a>GPIOB_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Clear), UNUSED)
<P><STRONG><a name="[52]"></a>GPIOB_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Clear), UNUSED)
<P><STRONG><a name="[50]"></a>GPIOB_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Set), UNUSED)
<P><STRONG><a name="[53]"></a>GPIOB_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOB_Set), UNUSED)
<P><STRONG><a name="[51]"></a>GPIOC_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Clear), UNUSED)
<P><STRONG><a name="[54]"></a>GPIOC_Clear</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Clear), UNUSED)
<P><STRONG><a name="[52]"></a>GPIOC_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Set), UNUSED)
<P><STRONG><a name="[55]"></a>GPIOC_Set</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gpio.o(i.GPIOC_Set), UNUSED)
<P><STRONG><a name="[42]"></a>GPIO_Configure</STRONG> (Thumb, 240 bytes, Stack size 20 bytes, gpio.o(i.GPIO_Configure))
<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))
<P><STRONG><a name="[3f]"></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
<BR>[Calls]<UL><LI><a href="#[40]">&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="[44]"></a>PWM_Set_Value_TIM3_Ch3</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, timer_1234.o(i.PWM_Set_Value_TIM3_Ch3))
<P><STRONG><a name="[47]"></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="[46]"></a>Systick_Prio_IT</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, timer_systick.o(i.Systick_Prio_IT))
<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>
@ -383,43 +387,48 @@ Global Symbols
</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))
<P><STRONG><a name="[40]"></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
<BR>[Calls]<UL><LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_GetTIMCLK
<LI><a href="#[41]">&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
<BR>[Called By]<UL><LI><a href="#[3f]">&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="[53]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[56]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[54]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[57]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[55]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[58]"></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, 52 bytes, Stack size 0 bytes, principal.o(i.main))
<P><STRONG><a name="[35]"></a>main</STRONG> (Thumb, 92 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="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Init_ff
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;GPIO_Configure
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_Configure
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Active_IT_Debordement_Timer
<BR>[Calls]<UL><LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Timer_1234_Init_ff
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Systick_Prio_IT
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Systick_Period_ff
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Init_ff
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;GPIO_Configure
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_Configure
<LI><a href="#[45]">&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, 60 bytes, Stack size 0 bytes, gestionson.o(moncode))
<BR><BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PWM_Set_Value_TIM3_Ch3
<P><STRONG><a name="[39]"></a>StartSon</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, gestionson.o(moncode))
<BR>[Address Reference Count : 1]<UL><LI> principal.o(i.main)
</UL>
<P><STRONG><a name="[38]"></a>CallbackSon</STRONG> (Thumb, 56 bytes, Stack size 0 bytes, gestionson.o(moncode))
<BR><BR>[Calls]<UL><LI><a href="#[47]">&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>
<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
<P><STRONG><a name="[3e]"></a>CLOCK_HPRECompute</STRONG> (Thumb, 116 bytes, Stack size 0 bytes, clock.o(i.CLOCK_HPRECompute))
<BR><BR>[Called By]<UL><LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;CLOCK_Configure
</UL>
<P>
<H3>

View file

@ -8,10 +8,13 @@ Section Cross References
principal.o(i.main) refers to gpio.o(i.GPIO_Configure) for GPIO_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.PWM_Init_ff) for PWM_Init_ff
principal.o(i.main) refers to timer_systick.o(i.Systick_Period_ff) for Systick_Period_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_systick.o(i.Systick_Prio_IT) for Systick_Prio_IT
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
@ -77,6 +80,17 @@ Section Cross References
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
@ -146,6 +160,10 @@ Removing Unused input sections from the image.
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 fmul.o(.text), (100 bytes).
Removing fdiv.o(.text), (124 bytes).
Removing fscalb.o(.text), (24 bytes).
@ -161,7 +179,7 @@ Removing Unused input sections from the image.
Removing fepilogue.o(.text), (110 bytes).
Removing depilogue.o(.text), (186 bytes).
38 unused section(s) (total 3920 bytes) removed from the image.
42 unused section(s) (total 4130 bytes) removed from the image.
==============================================================================
@ -171,9 +189,9 @@ Image Symbol Table
Symbol Name Value Ov Type Size Object(Section)
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../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
@ -182,9 +200,9 @@ Image Symbol Table
../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 entry.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
@ -197,8 +215,8 @@ Image Symbol Table
../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 ffixi.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
@ -206,8 +224,10 @@ Image Symbol Table
../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
@ -247,18 +267,21 @@ Image Symbol Table
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.TIM1_CC_IRQHandler 0x0800058c Section 0 timer_1234.o(i.TIM1_CC_IRQHandler)
i.TIM1_UP_IRQHandler 0x08000698 Section 0 timer_1234.o(i.TIM1_UP_IRQHandler)
i.TIM2_IRQHandler 0x080006b0 Section 0 timer_1234.o(i.TIM2_IRQHandler)
i.TIM3_IRQHandler 0x080007c0 Section 0 timer_1234.o(i.TIM3_IRQHandler)
i.TIM4_IRQHandler 0x080008ec Section 0 timer_1234.o(i.TIM4_IRQHandler)
i.Timer_1234_Init_ff 0x08000a18 Section 0 timer_1234.o(i.Timer_1234_Init_ff)
i.__scatterload_copy 0x08000a94 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x08000aa2 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x08000aa4 Section 14 handlers.o(i.__scatterload_zeroinit)
i.main 0x08000ab4 Section 0 principal.o(i.main)
moncode 0x08000af4 Section 76 gestionson.o(moncode)
SecSon 0x08000b60 Section 11032 bruitverre.o(SecSon)
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.Systick_Prio_IT 0x080005bc Section 0 timer_systick.o(i.Systick_Prio_IT)
i.TIM1_CC_IRQHandler 0x080005d0 Section 0 timer_1234.o(i.TIM1_CC_IRQHandler)
i.TIM1_UP_IRQHandler 0x080006dc Section 0 timer_1234.o(i.TIM1_UP_IRQHandler)
i.TIM2_IRQHandler 0x080006f4 Section 0 timer_1234.o(i.TIM2_IRQHandler)
i.TIM3_IRQHandler 0x08000804 Section 0 timer_1234.o(i.TIM3_IRQHandler)
i.TIM4_IRQHandler 0x08000930 Section 0 timer_1234.o(i.TIM4_IRQHandler)
i.Timer_1234_Init_ff 0x08000a5c Section 0 timer_1234.o(i.Timer_1234_Init_ff)
i.__scatterload_copy 0x08000ad8 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x08000ae6 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x08000ae8 Section 14 handlers.o(i.__scatterload_zeroinit)
i.main 0x08000af8 Section 0 principal.o(i.main)
moncode 0x08000b68 Section 84 gestionson.o(moncode)
SecSon 0x08000bdc 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)
@ -288,8 +311,10 @@ Image Symbol Table
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)
maram 0x200000a0 Section 4 gestionson.o(maram)
Index 0x200000a2 Data 2 gestionson.o(maram)
.data 0x200000a0 Section 4 timer_systick.o(.data)
Ptr_Systick 0x200000a0 Data 4 timer_systick.o(.data)
maram 0x200000a4 Section 4 gestionson.o(maram)
Index 0x200000a6 Data 2 gestionson.o(maram)
STACK 0x200000a8 Section 1024 startup-rvds.o(STACK)
Global Symbols
@ -327,7 +352,6 @@ Image Symbol Table
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)
SysTick_Handler 0x08000139 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)
@ -381,22 +405,26 @@ Image Symbol Table
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)
TIM1_CC_IRQHandler 0x0800058d Thumb Code 240 timer_1234.o(i.TIM1_CC_IRQHandler)
TIM1_UP_IRQHandler 0x08000699 Thumb Code 16 timer_1234.o(i.TIM1_UP_IRQHandler)
TIM2_IRQHandler 0x080006b1 Thumb Code 266 timer_1234.o(i.TIM2_IRQHandler)
TIM3_IRQHandler 0x080007c1 Thumb Code 272 timer_1234.o(i.TIM3_IRQHandler)
TIM4_IRQHandler 0x080008ed Thumb Code 272 timer_1234.o(i.TIM4_IRQHandler)
Timer_1234_Init_ff 0x08000a19 Thumb Code 106 timer_1234.o(i.Timer_1234_Init_ff)
__scatterload_copy 0x08000a95 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x08000aa3 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x08000aa5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
main 0x08000ab5 Thumb Code 52 principal.o(i.main)
CallbackSon 0x08000af5 Thumb Code 60 gestionson.o(moncode)
Region$$Table$$Base 0x08000b40 Number 0 anon$$obj.o(Region$$Table)
LongueurSon 0x08000b60 Data 4 bruitverre.o(SecSon)
Region$$Table$$Limit 0x08000b60 Number 0 anon$$obj.o(Region$$Table)
PeriodeSonMicroSec 0x08000b64 Data 4 bruitverre.o(SecSon)
Son 0x08000b68 Data 0 bruitverre.o(SecSon)
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)
Systick_Prio_IT 0x080005bd Thumb Code 12 timer_systick.o(i.Systick_Prio_IT)
TIM1_CC_IRQHandler 0x080005d1 Thumb Code 240 timer_1234.o(i.TIM1_CC_IRQHandler)
TIM1_UP_IRQHandler 0x080006dd Thumb Code 16 timer_1234.o(i.TIM1_UP_IRQHandler)
TIM2_IRQHandler 0x080006f5 Thumb Code 266 timer_1234.o(i.TIM2_IRQHandler)
TIM3_IRQHandler 0x08000805 Thumb Code 272 timer_1234.o(i.TIM3_IRQHandler)
TIM4_IRQHandler 0x08000931 Thumb Code 272 timer_1234.o(i.TIM4_IRQHandler)
Timer_1234_Init_ff 0x08000a5d Thumb Code 106 timer_1234.o(i.Timer_1234_Init_ff)
__scatterload_copy 0x08000ad9 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x08000ae7 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x08000ae9 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
main 0x08000af9 Thumb Code 92 principal.o(i.main)
StartSon 0x08000b69 Thumb Code 10 gestionson.o(moncode)
CallbackSon 0x08000b73 Thumb Code 56 gestionson.o(moncode)
Region$$Table$$Base 0x08000bbc Number 0 anon$$obj.o(Region$$Table)
LongueurSon 0x08000bdc Data 4 bruitverre.o(SecSon)
Region$$Table$$Limit 0x08000bdc Number 0 anon$$obj.o(Region$$Table)
PeriodeSonMicroSec 0x08000be0 Data 4 bruitverre.o(SecSon)
Son 0x08000be4 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)
@ -413,7 +441,7 @@ Image Symbol Table
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 0x200000a0 Data 2 gestionson.o(maram)
SortieSon 0x200000a4 Data 2 gestionson.o(maram)
__initial_sp 0x200004a8 Data 0 startup-rvds.o(STACK)
@ -424,25 +452,25 @@ Memory Map of the image
Image Entry point : 0x080000ed
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000371c, Max: 0x00020000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000379c, Max: 0x00020000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00003678, Max: 0x00020000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000036f4, Max: 0x00020000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000ec Data RO 59 RESET startup-rvds.o
0x080000ec 0x080000ec 0x00000000 Code RO 150 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x080000ec 0x080000ec 0x00000004 Code RO 177 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
0x080000f0 0x080000f0 0x00000004 Code RO 180 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x080000f4 0x080000f4 0x00000000 Code RO 182 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x080000f4 0x080000f4 0x00000000 Code RO 184 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x080000f4 0x080000f4 0x00000008 Code RO 185 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x080000fc 0x080000fc 0x00000004 Code RO 192 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o)
0x08000100 0x08000100 0x00000000 Code RO 187 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o)
0x08000100 0x08000100 0x00000000 Code RO 189 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o)
0x08000100 0x08000100 0x00000004 Code RO 178 .ARM.Collect$$$$00002712 mc_w.l(entry2.o)
0x080000ec 0x080000ec 0x00000000 Code RO 165 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x080000ec 0x080000ec 0x00000004 Code RO 192 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
0x080000f0 0x080000f0 0x00000004 Code RO 195 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x080000f4 0x080000f4 0x00000000 Code RO 197 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x080000f4 0x080000f4 0x00000000 Code RO 199 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x080000f4 0x080000f4 0x00000008 Code RO 200 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x080000fc 0x080000fc 0x00000004 Code RO 207 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o)
0x08000100 0x08000100 0x00000000 Code RO 202 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o)
0x08000100 0x08000100 0x00000000 Code RO 204 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o)
0x08000100 0x08000100 0x00000004 Code RO 193 .ARM.Collect$$$$00002712 mc_w.l(entry2.o)
0x08000104 0x08000104 0x0000004c Code RO 60 .text startup-rvds.o
0x08000150 0x08000150 0x00000024 Code RO 202 .text mc_w.l(init.o)
0x08000150 0x08000150 0x00000024 Code RO 217 .text mc_w.l(init.o)
0x08000174 0x08000174 0x000000e4 Code RO 115 i.Active_IT_Debordement_Timer DriverJeuLaser.lib(timer_1234.o)
0x08000258 0x08000258 0x00000074 Code RO 74 i.CLOCK_Configure DriverJeuLaser.lib(clock.o)
0x080002cc 0x080002cc 0x00000008 Code RO 76 i.CLOCK_GetHCLK DriverJeuLaser.lib(clock.o)
@ -457,29 +485,33 @@ Memory Map of the image
0x080003cc 0x080003cc 0x00000108 Code RO 100 i.GPIO_Configure DriverJeuLaser.lib(gpio.o)
0x080004d4 0x080004d4 0x000000ac Code RO 120 i.PWM_Init_ff DriverJeuLaser.lib(timer_1234.o)
0x08000580 0x08000580 0x0000000c Code RO 121 i.PWM_Set_Value_TIM3_Ch3 DriverJeuLaser.lib(timer_1234.o)
0x0800058c 0x0800058c 0x0000010c Code RO 122 i.TIM1_CC_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000698 0x08000698 0x00000018 Code RO 123 i.TIM1_UP_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080006b0 0x080006b0 0x00000110 Code RO 124 i.TIM2_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080007c0 0x080007c0 0x0000012c Code RO 125 i.TIM3_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080008ec 0x080008ec 0x0000012c Code RO 126 i.TIM4_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000a18 0x08000a18 0x0000007c Code RO 128 i.Timer_1234_Init_ff DriverJeuLaser.lib(timer_1234.o)
0x08000a94 0x08000a94 0x0000000e Code RO 208 i.__scatterload_copy mc_w.l(handlers.o)
0x08000aa2 0x08000aa2 0x00000002 Code RO 209 i.__scatterload_null mc_w.l(handlers.o)
0x08000aa4 0x08000aa4 0x0000000e Code RO 210 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08000ab2 0x08000ab2 0x00000002 PAD
0x08000ab4 0x08000ab4 0x00000040 Code RO 4 i.main principal.o
0x08000af4 0x08000af4 0x0000004c Code RO 67 moncode gestionson.o
0x08000b40 0x08000b40 0x00000020 Data RO 206 Region$$Table anon$$obj.o
0x08000b60 0x08000b60 0x00002b18 Data RO 64 SecSon bruitverre.o
0x0800058c 0x0800058c 0x0000000c Code RO 153 i.SysTick_Handler DriverJeuLaser.lib(timer_systick.o)
0x08000598 0x08000598 0x00000022 Code RO 155 i.Systick_Period_ff DriverJeuLaser.lib(timer_systick.o)
0x080005ba 0x080005ba 0x00000002 PAD
0x080005bc 0x080005bc 0x00000014 Code RO 156 i.Systick_Prio_IT DriverJeuLaser.lib(timer_systick.o)
0x080005d0 0x080005d0 0x0000010c Code RO 122 i.TIM1_CC_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080006dc 0x080006dc 0x00000018 Code RO 123 i.TIM1_UP_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x080006f4 0x080006f4 0x00000110 Code RO 124 i.TIM2_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000804 0x08000804 0x0000012c Code RO 125 i.TIM3_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000930 0x08000930 0x0000012c Code RO 126 i.TIM4_IRQHandler DriverJeuLaser.lib(timer_1234.o)
0x08000a5c 0x08000a5c 0x0000007c Code RO 128 i.Timer_1234_Init_ff DriverJeuLaser.lib(timer_1234.o)
0x08000ad8 0x08000ad8 0x0000000e Code RO 223 i.__scatterload_copy mc_w.l(handlers.o)
0x08000ae6 0x08000ae6 0x00000002 Code RO 224 i.__scatterload_null mc_w.l(handlers.o)
0x08000ae8 0x08000ae8 0x0000000e Code RO 225 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08000af6 0x08000af6 0x00000002 PAD
0x08000af8 0x08000af8 0x00000070 Code RO 4 i.main principal.o
0x08000b68 0x08000b68 0x00000054 Code RO 67 moncode gestionson.o
0x08000bbc 0x08000bbc 0x00000020 Data RO 221 Region$$Table anon$$obj.o
0x08000bdc 0x08000bdc 0x00002b18 Data RO 64 SecSon bruitverre.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08003678, Size: 0x000004a8, Max: 0x00005000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080036f4, Size: 0x000004a8, Max: 0x00005000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08003678 0x000000a0 Data RW 130 .data DriverJeuLaser.lib(timer_1234.o)
0x200000a0 0x08003718 0x00000004 Data RW 66 maram gestionson.o
0x200000a4 0x0800371c 0x00000004 PAD
0x20000000 0x080036f4 0x000000a0 Data RW 130 .data DriverJeuLaser.lib(timer_1234.o)
0x200000a0 0x08003794 0x00000004 Data RW 157 .data DriverJeuLaser.lib(timer_systick.o)
0x200000a4 0x08003798 0x00000004 Data RW 66 maram gestionson.o
0x200000a8 - 0x00000400 Zero RW 57 STACK startup-rvds.o
@ -491,14 +523,14 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
0 0 11032 0 0 0 bruitverre.o
76 16 0 4 0 336 gestionson.o
64 12 0 0 0 1907 principal.o
84 18 0 4 0 376 gestionson.o
112 20 0 0 0 1923 principal.o
76 20 236 0 1024 800 startup-rvds.o
----------------------------------------------------------------------
216 48 11300 4 1028 3043 Object Totals
272 58 11300 4 1024 3099 Object Totals
0 0 32 0 0 0 (incl. Generated)
0 0 0 0 4 0 (incl. Padding)
0 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
@ -507,6 +539,7 @@ Image component sizes
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
66 14 0 4 0 204 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
@ -520,18 +553,18 @@ Image component sizes
36 8 0 0 0 68 init.o
----------------------------------------------------------------------
2428 256 0 160 0 1584 Library Totals
2 0 0 0 0 0 (incl. Padding)
2496 270 0 164 0 1788 Library Totals
4 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
2336 240 0 160 0 1516 DriverJeuLaser.lib
2402 254 0 164 0 1720 DriverJeuLaser.lib
90 16 0 0 0 68 mc_w.l
----------------------------------------------------------------------
2428 256 0 160 0 1584 Library Totals
2496 270 0 164 0 1788 Library Totals
----------------------------------------------------------------------
@ -540,15 +573,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
2644 304 11300 164 1028 3843 Grand Totals
2644 304 11300 164 1028 3843 ELF Image Totals
2644 304 11300 164 0 0 ROM Totals
2768 328 11300 168 1024 3947 Grand Totals
2768 328 11300 168 1024 3947 ELF Image Totals
2768 328 11300 168 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 13944 ( 13.62kB)
Total RO Size (Code + RO Data) 14068 ( 13.74kB)
Total RW Size (RW Data + ZI Data) 1192 ( 1.16kB)
Total ROM Size (Code + RO Data + RW Data) 14108 ( 13.78kB)
Total ROM Size (Code + RO Data + RW Data) 14236 ( 13.90kB)
==============================================================================

View file

@ -1,6 +1,6 @@
Dependencies for Project 'StepSon', Target 'Simu': (DO NOT MODIFY !)
CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC
F (.\Src\principal.c)(0x643569EF)(-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)
F (.\Src\principal.c)(0x643E9DF5)(-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)(0x6037C015)
I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h)(0x58258CCC)
I (.\RTE\_Simu\RTE_Components.h)(0x6427017D)
@ -10,8 +10,9 @@ I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_versio
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)(0x643E9DF0)
F (.\Src\startup-rvds.s)(0x5FE38AC6)(--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)(0x6037BEDF)()
F (.\Src\bruitverre.asm)(0x5ED5F990)(--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)(0x64356917)(--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)
F (.\Src\GestionSon.s)(0x6435732E)(--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)(0x6037BEDF)

Binary file not shown.

Binary file not shown.

View file

@ -8,3 +8,4 @@
.\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,3 @@
void CallbackSon(void);
void StartSon(void);

View file

@ -2,6 +2,7 @@
THUMB
export CallbackSon
export StartSon
import Son
import LongueurSon
@ -38,6 +39,15 @@ Index dcw 0
; i=0;
;}
StartSon proc
ldr r0, = Index; ; On charge la valeur d'index
mov r1, #0
strh r1, [r0]
bx lr
endp
CallbackSon proc
push {lr}
@ -66,7 +76,7 @@ CallbackSon proc
b fin
Sinon
mov r1, #0 ; On remet l'index à 0
;mov r1, #0 ; On remet l'index à 0
str r0, [r1] ; On store l'index
fin

View file

@ -1,9 +1,7 @@
#include "DriverJeuLaser.h"
void CallbackSon(void);
#include "GestionSon.h"
int main(void)
@ -16,12 +14,16 @@ int main(void)
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
Timer_1234_Init_ff( TIM3, 91*72);
PWM_Init_ff( TIM3, 3, 720);
Systick_Period_ff(15000000);
Active_IT_Debordement_Timer( TIM3, 2, CallbackSon );
Systick_Prio_IT(1,StartSon);
SysTick_On;
SysTick_Enable_IT;
//============================================================================

File diff suppressed because one or more lines are too long

View file

@ -120,7 +120,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGDARM</Key>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=75,104,496,531,0)(121=859,154,1280,581,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=614,0,1208,751,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=442,165,818,401,0)(1009=-1,-1,-1,-1,0)(100=15,39,661,712,0)(110=60,88,280,548,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=75,104,496,531,0)(121=859,154,1280,581,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=614,0,1208,751,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@ -208,12 +208,12 @@
<Wi>
<IntNumber>0</IntNumber>
<FirstString>(SortieSon &amp; 0xFFFF) &gt;&gt; 0</FirstString>
<SecondString>008000000000000000000000000000000080864000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000E03F1000000000000000000000000000000000000000CA080008</SecondString>
<SecondString>008000000000000000000000000000000080864000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000E03F1600000000000000000000000000000000000000CA080008</SecondString>
</Wi>
<Wi>
<IntNumber>1</IntNumber>
<FirstString>((portb &amp; 0x00000001) &amp; 0x1) &gt;&gt; 0</FirstString>
<SecondString>00800000000000000000000000000000008086400100000000000000000000000000000028706F72746220262030783030303030303031290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000002000000000000000000E03F1000000000000000000000000000000000000000080A0008</SecondString>
<SecondString>00800000000000000000000000000000008086400100000000000000000000000000000028706F72746220262030783030303030303031290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000002000000000000000000E03F1600000000000000000000000000000000000000080A0008</SecondString>
</Wi>
</LogicAnalyzers>
<DebugDescription>
@ -373,7 +373,7 @@
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>1</aLwin>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
@ -387,7 +387,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>

View file

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

View file

@ -8,10 +8,11 @@ ARM Macro Assembler Page 1
2 00000000 THUMB
3 00000000
4 00000000 export CallbackSon
5 00000000 import Son
6 00000000 import LongueurSon
7 00000000
8 00000000 include DriverJeuLaser.inc
5 00000000 export StartSon
6 00000000 import Son
7 00000000 import LongueurSon
8 00000000
9 00000000 include DriverJeuLaser.inc
1 00000000
2 00000000 ; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée
2021 - TR)
@ -62,13 +63,13 @@ ARM Macro Assembler Page 1
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
ARM Macro Assembler Page 2
44 00000000 ; * @retval None
45 00000000 ; */
46 00000000
47 00000000 ;void GPIOA_Clear(char Broche);
@ -81,107 +82,123 @@ ARM Macro Assembler Page 2
54 00000000 import GPIOC_Clear
55 00000000
56 00000000 end
9 00000000
10 00000000
11 00000000
12 00000000 ; ====================== zone de réservation de données,
12 00000000
13 00000000 ; ====================== zone de réservation de données,
======================================
13 00000000 ;Section RAM (read only) :
14 00000000 area mesdata,data,readonly
15 00000000
14 00000000 ;Section RAM (read only) :
15 00000000 area mesdata,data,readonly
16 00000000
17 00000000 ;Section RAM (read write):
18 00000000 area maram,data,readwrite
19 00000000
20 00000000 00 00 SortieSon
17 00000000
18 00000000 ;Section RAM (read write):
19 00000000 area maram,data,readwrite
20 00000000
21 00000000 00 00 SortieSon
dcw 0 ; reserve seulement
2 octet de memoire
21 00000002 00 00 Index dcw 0
22 00000004
23 00000004 ; ======================================================
22 00000002 00 00 Index dcw 0
23 00000004
24 00000004 ; ======================================================
=========================================
24 00000004
25 00000004
26 00000004
27 00000004
28 00000004 ;Section ROM code (read only) :
29 00000004 area moncode,code,readonly
30 00000000 ; écrire le code ici
31 00000000 ;
32 00000000 ;if (i<LongueurSon) {
33 00000000 ;
34 00000000 ; sample = Son[i];
35 00000000 ; SortieSon = sample * (720/65536) + 360
36 00000000 ; i++;
37 00000000 ;}else {
38 00000000 ; i=0;
39 00000000 ;}
40 00000000
41 00000000 CallbackSon
28 00000004
29 00000004 ;Section ROM code (read only) :
30 00000004 area moncode,code,readonly
31 00000000 ; écrire le code ici
32 00000000 ;
33 00000000 ;if (i<LongueurSon) {
34 00000000 ;
35 00000000 ; sample = Son[i];
36 00000000 ; SortieSon = sample * (720/65536) + 360
37 00000000 ; i++;
38 00000000 ;}else {
39 00000000 ; i=0;
40 00000000 ;}
41 00000000
42 00000000 StartSon
proc
42 00000000 B500 push {lr}
43 00000002
44 00000002 480E ldr r0, = Index ; ; On charge la
43 00000000
44 00000000 4810 ldr r0, = Index ; ; On charge la
valeur d'index
45 00000004 6801 ldr r1, [r0] ;
46 00000006 4A0E ldr r2, = LongueurSon ; ; On charg
e la valeur de la l
ongueur son
45 00000002 F04F 0100 mov r1, #0
46 00000006 8001 strh r1, [r0]
47 00000008
48 00000008 4770 bx lr
ARM Macro Assembler Page 3
47 00000008 6813 ldr r3, [r2] ;
48 0000000A
49 0000000A 428B cmp r3, r1 ; On regarde si on
49 0000000A endp
50 0000000A
51 0000000A CallbackSon
proc
52 0000000A B500 push {lr}
53 0000000C
54 0000000C 480D ldr r0, = Index ; ; On charge la
valeur d'index
55 0000000E 6801 ldr r1, [r0] ;
56 00000010 4A0D ldr r2, = LongueurSon ; ; On charg
e la valeur de la l
ongueur son
57 00000012 6813 ldr r3, [r2] ;
58 00000014
59 00000014 428B cmp r3, r1 ; On regarde si on
est arrivé au bout
du tableau
50 0000000C DD0F ble Sinon
51 0000000E
52 0000000E 4A0D ldr r2, = Son ; ; On charge la
60 00000016 DD0F ble Sinon
61 00000018
62 00000018 4A0C ldr r2, = Son ; ; On charge la
valeur de la bonne
53 00000010 F932 3011 ldrsh r3, [r2, r1, LSL #1]
63 0000001A F932 3011 ldrsh r3, [r2, r1, LSL #1]
; ligne de son
54 00000014
55 00000014 F101 0101 add r1, r1, #1 ; On store l'index
64 0000001E
65 0000001E F101 0101 add r1, r1, #1 ; On store l'index
et on l'incrémente
de 1
56 00000018 8001 strh r1, [r0]
57 0000001A
58 0000001A ;add r3, #32768 ; On ajoute 32768
59 0000001A F44F 71B4 mov r1, #360 ; On multiplie par
66 00000022 8001 strh r1, [r0]
67 00000024
68 00000024 ;add r3, #32768 ; On ajoute 32768
69 00000024 F44F 71B4 mov r1, #360 ; On multiplie par
720
60 0000001E FB01 F303 mul r3, r1, r3 ;
61 00000022 EA4F 33E3 asr r3, #15 ; On divise par 655
70 00000028 FB01 F303 mul r3, r1, r3 ;
71 0000002C EA4F 33E3 asr r3, #15 ; On divise par 655
36
62 00000026 440B add r3, r1
63 00000028
64 00000028 4A07 ldr r2, = SortieSon
65 0000002A 8013 strh r3, [r2] ; On sauvegarde la
72 00000030 440B add r3, r1
73 00000032
74 00000032 4A07 ldr r2, = SortieSon
75 00000034 8013 strh r3, [r2] ; On sauvegarde la
valeur dans SortieS
on
66 0000002C E002 b fin
67 0000002E
68 0000002E Sinon
69 0000002E F04F 0100 mov r1, #0 ; On remet l'index
à 0
70 00000032 6008 str r0, [r1] ; On store l'index
71 00000034
72 00000034 fin
73 00000034 EXPORT SortieSon
74 00000034 4618 mov r0, r3
75 00000036 F7FF FFFE bl PWM_Set_Value_TIM3_Ch3
76 0000003A BD00 pop {pc}
77 0000003C endp
78 0000003C
79 0000003C END
00000000
76 00000036 E000 b fin
77 00000038
78 00000038 Sinon
79 00000038 ;mov r1, #0 ; On remet l'index à 0
80 00000038 6008 str r0, [r1] ; On store l'index
81 0000003A
82 0000003A fin
83 0000003A EXPORT SortieSon
84 0000003A 4618 mov r0, r3
85 0000003C F7FF FFFE bl PWM_Set_Value_TIM3_Ch3
86 00000040 BD00 pop {pc}
87 00000042 endp
88 00000042
89 00000042 END
00 00 00000000
00000000
00000000
ARM Macro Assembler Page 4
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\_Simu -
@ -200,7 +217,7 @@ mesdata 00000000
Symbol: mesdata
Definitions
At line 14 in file Src\GestionSon.s
At line 15 in file Src\GestionSon.s
Uses
None
Comment: mesdata unused
@ -215,24 +232,25 @@ Index 00000002
Symbol: Index
Definitions
At line 21 in file Src\GestionSon.s
At line 22 in file Src\GestionSon.s
Uses
At line 44 in file Src\GestionSon.s
Comment: Index used once
At line 54 in file Src\GestionSon.s
SortieSon 00000000
Symbol: SortieSon
Definitions
At line 20 in file Src\GestionSon.s
At line 21 in file Src\GestionSon.s
Uses
At line 64 in file Src\GestionSon.s
At line 73 in file Src\GestionSon.s
At line 74 in file Src\GestionSon.s
At line 83 in file Src\GestionSon.s
maram 00000000
Symbol: maram
Definitions
At line 18 in file Src\GestionSon.s
At line 19 in file Src\GestionSon.s
Uses
None
Comment: maram unused
@ -243,39 +261,47 @@ Comment: maram unused
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Relocatable symbols
CallbackSon 00000000
CallbackSon 0000000A
Symbol: CallbackSon
Definitions
At line 41 in file Src\GestionSon.s
At line 51 in file Src\GestionSon.s
Uses
At line 4 in file Src\GestionSon.s
Comment: CallbackSon used once
Sinon 0000002E
Sinon 00000038
Symbol: Sinon
Definitions
At line 68 in file Src\GestionSon.s
At line 78 in file Src\GestionSon.s
Uses
At line 50 in file Src\GestionSon.s
At line 60 in file Src\GestionSon.s
Comment: Sinon used once
fin 00000034
StartSon 00000000
Symbol: StartSon
Definitions
At line 42 in file Src\GestionSon.s
Uses
At line 5 in file Src\GestionSon.s
Comment: StartSon used once
fin 0000003A
Symbol: fin
Definitions
At line 72 in file Src\GestionSon.s
At line 82 in file Src\GestionSon.s
Uses
At line 66 in file Src\GestionSon.s
At line 76 in file Src\GestionSon.s
Comment: fin used once
moncode 00000000
Symbol: moncode
Definitions
At line 29 in file Src\GestionSon.s
At line 30 in file Src\GestionSon.s
Uses
None
Comment: moncode unused
4 symbols
5 symbols
@ -334,9 +360,9 @@ LongueurSon 00000000
Symbol: LongueurSon
Definitions
At line 6 in file Src\GestionSon.s
At line 7 in file Src\GestionSon.s
Uses
At line 46 in file Src\GestionSon.s
At line 56 in file Src\GestionSon.s
Comment: LongueurSon used once
PWM_Set_Value_TIM3_Ch3 00000000
@ -350,15 +376,15 @@ External symbols
Definitions
At line 18 in file .\Driver\DriverJeuLaser.inc
Uses
At line 75 in file Src\GestionSon.s
At line 85 in file Src\GestionSon.s
Comment: PWM_Set_Value_TIM3_Ch3 used once
Son 00000000
Symbol: Son
Definitions
At line 5 in file Src\GestionSon.s
At line 6 in file Src\GestionSon.s
Uses
At line 52 in file Src\GestionSon.s
At line 62 in file Src\GestionSon.s
Comment: Son used once
9 symbols
354 symbols in table
355 symbols in table

View file

@ -1,16 +0,0 @@
* U:\3MIC\BE_CHTI\Assembleur\spice\PWM.asc
V1 Compteur 0 PULSE(0 3.3 0 5u 0 0 5u)
C1 Filtre 0 10n
R1 Filtre PWM 3.9k
V2 CompValue 0 SINE(1.65 1 2k)
B1 PWM 0 V=if(V(CompValue)>V(Compteur),3.3,0)
;ac dec 100 1 10meg
.tran 0 1.5m 0 0.01u
* Compteur de l'unité Timer
* Partie PWM de l'unité Timer
* TIMER3
* PB0
* Chanel 3
* STM32F103
.backanno
.end