sted adm
This commit is contained in:
parent
4da5fc13a9
commit
b69f899778
49 changed files with 9425 additions and 1344 deletions
345
DFT_Signal_Reel/Driver/DriverJeuLaser.h
Normal file
345
DFT_Signal_Reel/Driver/DriverJeuLaser.h
Normal 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
|
||||
|
||||
|
56
DFT_Signal_Reel/Driver/DriverJeuLaser.inc
Normal file
56
DFT_Signal_Reel/Driver/DriverJeuLaser.inc
Normal 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
274
DFT_Signal_Reel/Src/DFT.s
Normal 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
|
68
DFT_Signal_Reel/Src/Signal.asm
Normal file
68
DFT_Signal_Reel/Src/Signal.asm
Normal 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
|
68
DFT_Signal_Reel/Src/Signal1.asm
Normal file
68
DFT_Signal_Reel/Src/Signal1.asm
Normal 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
|
60
DFT_Signal_Reel/Src/principal.c
Normal file
60
DFT_Signal_Reel/Src/principal.c
Normal 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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
335
DFT_Signal_Reel/Src/startup-rvds.s
Normal file
335
DFT_Signal_Reel/Src/startup-rvds.s
Normal 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*****
|
1377
DFT_Signal_Reel/StepDFT.uvprojx
Normal file
1377
DFT_Signal_Reel/StepDFT.uvprojx
Normal file
File diff suppressed because it is too large
Load diff
68
Matlab/Signal.asm
Normal file
68
Matlab/Signal.asm
Normal 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
38
Matlab/Signal.m
Normal 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);
|
345
PjtKEIL_StepDFT/Driver/DriverJeuLaser.h
Normal file
345
PjtKEIL_StepDFT/Driver/DriverJeuLaser.h
Normal 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
|
||||
|
||||
|
56
PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc
Normal file
56
PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc
Normal 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
274
PjtKEIL_StepDFT/Src/DFT.s
Normal 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
|
68
PjtKEIL_StepDFT/Src/Signal.asm
Normal file
68
PjtKEIL_StepDFT/Src/Signal.asm
Normal 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
|
68
PjtKEIL_StepDFT/Src/Signal1.asm
Normal file
68
PjtKEIL_StepDFT/Src/Signal1.asm
Normal 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
|
40
PjtKEIL_StepDFT/Src/principal.c
Normal file
40
PjtKEIL_StepDFT/Src/principal.c
Normal 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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
335
PjtKEIL_StepDFT/Src/startup-rvds.s
Normal file
335
PjtKEIL_StepDFT/Src/startup-rvds.s
Normal 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*****
|
1377
PjtKEIL_StepDFT/StepDFT.uvprojx
Normal file
1377
PjtKEIL_StepDFT/StepDFT.uvprojx
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
345
PjtKEIL_StepFini/Driver/DriverJeuLaser.h
Normal file
345
PjtKEIL_StepFini/Driver/DriverJeuLaser.h
Normal 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
|
||||
|
||||
|
56
PjtKEIL_StepFini/Driver/DriverJeuLaser.inc
Normal file
56
PjtKEIL_StepFini/Driver/DriverJeuLaser.inc
Normal 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
|
78
PjtKEIL_StepFini/ModuleAffichage/Affichage_Valise.h
Normal file
78
PjtKEIL_StepFini/ModuleAffichage/Affichage_Valise.h
Normal 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 été 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
274
PjtKEIL_StepFini/Src/DFT.s
Normal 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
|
68
PjtKEIL_StepFini/Src/Signal.asm
Normal file
68
PjtKEIL_StepFini/Src/Signal.asm
Normal 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
|
68
PjtKEIL_StepFini/Src/Signal1.asm
Normal file
68
PjtKEIL_StepFini/Src/Signal1.asm
Normal 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
|
40
PjtKEIL_StepFini/Src/principal.c
Normal file
40
PjtKEIL_StepFini/Src/principal.c
Normal 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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
335
PjtKEIL_StepFini/Src/startup-rvds.s
Normal file
335
PjtKEIL_StepFini/Src/startup-rvds.s
Normal 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*****
|
1377
PjtKEIL_StepFini/StepDFT.uvprojx
Normal file
1377
PjtKEIL_StepFini/StepDFT.uvprojx
Normal file
File diff suppressed because it is too large
Load diff
3
PjtKEIL_StepFini/son/GestionSon.h
Normal file
3
PjtKEIL_StepFini/son/GestionSon.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
void CallbackSon(void);
|
||||
|
||||
void StartSon(void);
|
89
PjtKEIL_StepFini/son/GestionSon.s
Normal file
89
PjtKEIL_StepFini/son/GestionSon.s
Normal 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.
|
@ -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
|
@ -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>#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Tue Apr 11 16:09:00 2023
|
||||
<BR><P>#<CALLGRAPH># 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> ⇒ <a href="#[6]">SVC_Handler</a><BR>
|
||||
<LI><a href="#[7]">DebugMon_Handler</a> ⇒ <a href="#[7]">DebugMon_Handler</a><BR>
|
||||
<LI><a href="#[8]">PendSV_Handler</a> ⇒ <a href="#[8]">PendSV_Handler</a><BR>
|
||||
<LI><a href="#[9]">SysTick_Handler</a> ⇒ <a href="#[9]">SysTick_Handler</a><BR>
|
||||
<LI><a href="#[1c]">ADC1_2_IRQHandler</a> ⇒ <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]">>></a> __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]">>></a> __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]">>></a> __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]">>></a> __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]">>></a> SysTick_Handler
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[9]">>></a> 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]">>></a> 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]">>></a> __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]">>></a> __main_after_scatterload
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[39]">>></a> _main_scatterload
|
||||
<BR>[Called By]<UL><LI><a href="#[3a]">>></a> _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]">>></a> 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]">>></a> CLOCK_HPRECompute
|
||||
<BR>[Calls]<UL><LI><a href="#[3e]">>></a> CLOCK_HPRECompute
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[35]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> 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 ⇒ Timer_1234_Init_ff
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[3f]">>></a> Timer_1234_Init_ff
|
||||
<BR>[Calls]<UL><LI><a href="#[40]">>></a> Timer_1234_Init_ff
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[35]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> CLOCK_GetTIMCLK
|
||||
<LI><a href="#[40]">>></a> CLOCK_GetHCLK
|
||||
<BR>[Calls]<UL><LI><a href="#[42]">>></a> CLOCK_GetTIMCLK
|
||||
<LI><a href="#[41]">>></a> CLOCK_GetHCLK
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[3e]">>></a> PWM_Init_ff
|
||||
<BR>[Called By]<UL><LI><a href="#[3f]">>></a> PWM_Init_ff
|
||||
<LI><a href="#[35]">>></a> 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 ⇒ PWM_Init_ff ⇒ Timer_1234_Init_ff
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[3f]">>></a> Timer_1234_Init_ff
|
||||
<LI><a href="#[3e]">>></a> PWM_Init_ff
|
||||
<LI><a href="#[42]">>></a> GPIO_Configure
|
||||
<LI><a href="#[3c]">>></a> CLOCK_Configure
|
||||
<LI><a href="#[43]">>></a> Active_IT_Debordement_Timer
|
||||
<BR>[Calls]<UL><LI><a href="#[40]">>></a> Timer_1234_Init_ff
|
||||
<LI><a href="#[46]">>></a> Systick_Prio_IT
|
||||
<LI><a href="#[44]">>></a> Systick_Period_ff
|
||||
<LI><a href="#[3f]">>></a> PWM_Init_ff
|
||||
<LI><a href="#[43]">>></a> GPIO_Configure
|
||||
<LI><a href="#[3d]">>></a> CLOCK_Configure
|
||||
<LI><a href="#[45]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> 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]">>></a> CLOCK_Configure
|
||||
</UL>
|
||||
<P>
|
||||
<H3>
|
||||
|
|
|
@ -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)
|
||||
|
||||
==============================================================================
|
||||
|
||||
|
|
|
@ -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.
|
@ -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.
3
PjtKEIL_StepSon/Src/GestionSon.h
Normal file
3
PjtKEIL_StepSon/Src/GestionSon.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
void CallbackSon(void);
|
||||
|
||||
void StartSon(void);
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
Active_IT_Debordement_Timer( TIM3, 2, CallbackSon );
|
||||
|
||||
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
|
@ -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 & 0xFFFF) >> 0</FirstString>
|
||||
<SecondString>008000000000000000000000000000000080864000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000E03F1000000000000000000000000000000000000000CA080008</SecondString>
|
||||
<SecondString>008000000000000000000000000000000080864000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000E03F1600000000000000000000000000000000000000CA080008</SecondString>
|
||||
</Wi>
|
||||
<Wi>
|
||||
<IntNumber>1</IntNumber>
|
||||
<FirstString>((portb & 0x00000001) & 0x1) >> 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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue