Browse Source

Importation du code depuis GitHub

gasc 2 years ago
commit
7dfb72ae6c
69 changed files with 29974 additions and 0 deletions
  1. 345
    0
      PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.h
  2. 56
    0
      PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.inc
  3. BIN
      PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.lib
  4. 269
    0
      PjtKEIL_DFT_Signal_Reel/Src/DFT.s
  5. 71
    0
      PjtKEIL_DFT_Signal_Reel/Src/Signal.asm
  6. 63
    0
      PjtKEIL_DFT_Signal_Reel/Src/principal.c
  7. 335
    0
      PjtKEIL_DFT_Signal_Reel/Src/startup-rvds.s
  8. 753
    0
      PjtKEIL_DFT_Signal_Reel/StepDFT.uvoptx
  9. 1367
    0
      PjtKEIL_DFT_Signal_Reel/StepDFT.uvprojx
  10. 345
    0
      PjtKEIL_StepDFT/Driver/DriverJeuLaser.h
  11. 56
    0
      PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc
  12. BIN
      PjtKEIL_StepDFT/Driver/DriverJeuLaser.lib
  13. 269
    0
      PjtKEIL_StepDFT/Src/DFT.s
  14. 71
    0
      PjtKEIL_StepDFT/Src/Signal.asm
  15. 37
    0
      PjtKEIL_StepDFT/Src/principal.c
  16. 335
    0
      PjtKEIL_StepDFT/Src/startup-rvds.s
  17. 718
    0
      PjtKEIL_StepDFT/StepDFT.uvoptx
  18. 1367
    0
      PjtKEIL_StepDFT/StepDFT.uvprojx
  19. 721
    0
      PjtKEIL_StepDeb_1/BacASable.uvoptx
  20. 1352
    0
      PjtKEIL_StepDeb_1/BacASable.uvprojx
  21. 345
    0
      PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h
  22. 56
    0
      PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc
  23. BIN
      PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.lib
  24. 63
    0
      PjtKEIL_StepDeb_1/Src/Delay.s
  25. 32
    0
      PjtKEIL_StepDeb_1/Src/principal.c
  26. 335
    0
      PjtKEIL_StepDeb_1/Src/startup-rvds.s
  27. 714
    0
      PjtKEIL_StepDeb_2/BacASable.uvoptx
  28. 1352
    0
      PjtKEIL_StepDeb_2/BacASable.uvprojx
  29. 345
    0
      PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h
  30. 56
    0
      PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc
  31. BIN
      PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.lib
  32. 54
    0
      PjtKEIL_StepDeb_2/Src/Cligno.s
  33. 66
    0
      PjtKEIL_StepDeb_2/Src/principal.c
  34. 335
    0
      PjtKEIL_StepDeb_2/Src/startup-rvds.s
  35. 78
    0
      PjtKEIL_StepFinal/Driver/Affichage_Valise.h
  36. 345
    0
      PjtKEIL_StepFinal/Driver/DriverJeuLaser.h
  37. 56
    0
      PjtKEIL_StepFinal/Driver/DriverJeuLaser.inc
  38. BIN
      PjtKEIL_StepFinal/Driver/DriverJeuLaser.lib
  39. 269
    0
      PjtKEIL_StepFinal/Src/DFT.s
  40. 11
    0
      PjtKEIL_StepFinal/Src/GestionSon.h
  41. 81
    0
      PjtKEIL_StepFinal/Src/GestionSon.s
  42. 71
    0
      PjtKEIL_StepFinal/Src/Signal.asm
  43. 5527
    0
      PjtKEIL_StepFinal/Src/bruitverre.asm
  44. 116
    0
      PjtKEIL_StepFinal/Src/principal.c
  45. 335
    0
      PjtKEIL_StepFinal/Src/startup-rvds.s
  46. 803
    0
      PjtKEIL_StepFinal/StepDFT.uvoptx
  47. 1442
    0
      PjtKEIL_StepFinal/StepDFT.uvprojx
  48. 345
    0
      PjtKEIL_StepSon/Driver/DriverJeuLaser.h
  49. 56
    0
      PjtKEIL_StepSon/Driver/DriverJeuLaser.inc
  50. BIN
      PjtKEIL_StepSon/Driver/DriverJeuLaser.lib
  51. 11
    0
      PjtKEIL_StepSon/Src/GestionSon.h
  52. 81
    0
      PjtKEIL_StepSon/Src/GestionSon.s
  53. 5527
    0
      PjtKEIL_StepSon/Src/bruitverre.asm
  54. 36
    0
      PjtKEIL_StepSon/Src/principal.c
  55. 335
    0
      PjtKEIL_StepSon/Src/startup-rvds.s
  56. 745
    0
      PjtKEIL_StepSon/StepSon.uvoptx
  57. 1382
    0
      PjtKEIL_StepSon/StepSon.uvprojx
  58. 39
    0
      README.md
  59. BIN
      images/final.jpg
  60. BIN
      images/keil.png
  61. BIN
      images/output_son.png
  62. BIN
      images/scope_0.png
  63. BIN
      images/scope_1.png
  64. BIN
      images/scope_2.png
  65. BIN
      images/scope_3.png
  66. BIN
      images/sonout_scope_0.png
  67. BIN
      images/sonout_scope_1.png
  68. BIN
      images/test_dft.png
  69. BIN
      images/test_score.png

+ 345
- 0
PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_DFT_Signal_Reel/Driver/DriverJeuLaser.lib View File


+ 269
- 0
PjtKEIL_DFT_Signal_Reel/Src/DFT.s View File

@@ -0,0 +1,269 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+	
9
+	extern LeSignal
10
+	export DFT_ModuleAuCarre
11
+
12
+
13
+;Section RAM (read write):
14
+	area    maram,data,readwrite
15
+		
16
+
17
+	
18
+; ===============================================================================================
19
+	
20
+
21
+
22
+		
23
+;Section ROM code (read only) :		
24
+	area    moncode,code,readonly
25
+; écrire le code ici	
26
+
27
+; TODO LA PROCHAINE FOIS:
28
+; - Partie Im. copier coller
29
+; - Module (somme quadratique)
30
+; - Tester avec formule page 6
31
+
32
+
33
+; Calcul de la partie réelle i.e.
34
+; SUM(0, M-1): x(n).cos(-2pikn/M)
35
+; Retourne Xreal(k), normé en 5.27
36
+partie_reelle proc
37
+	push {r4, r5, r6, lr}
38
+	; r0 := =LeSignal
39
+	; r1 := k
40
+	ldr r2, =0	; indice boucle
41
+	ldr r3, =0	; X(k)
42
+	
43
+; boucle for r
44
+for_r
45
+	; Calcul de cos(...) fonction de k*n
46
+	ldr r4, =TabCos
47
+	mul r6, r1, r2		; k*n
48
+	and r6, r6, #63		; modulo 64
49
+	lsl r6, #1 			; DCW => 2 octets / valeur
50
+	ldrsh r5, [r4, r6]	; cos(2.pi.k.n/M)
51
+	
52
+	; Récupération de x(n) (r4 utilisable)
53
+	lsl r6, r2, #1
54
+	ldrsh r4, [r0, r6]	; récupération de x(n)
55
+	
56
+	; Ajout à la somme x(n) 4.12 et cos en 1.15, sortie en 5.27
57
+	mul r4, r5			; x(n) * cos(...)
58
+	adds r3, r4			; x(n) += x(n) * cos(...)
59
+	
60
+	add r2, #1 
61
+	cmp r2, #64
62
+	bne for_r
63
+; fin for r
64
+	
65
+	mov r0, r3
66
+	pop {r4, r5, r6, pc}
67
+	endp
68
+		
69
+; Retourne Xim(k), normé en 5.27
70
+partie_imaginaire proc
71
+	push {r4, r5, r6, lr}
72
+	; r0 := =LeSignal
73
+	; r1 := k
74
+	ldr r2, =0	; indice boucle
75
+	ldr r3, =0	; X(k)
76
+	
77
+; boucle for i
78
+for_i
79
+	; Calcul de sin(...) fonction de k*n
80
+	ldr r4, =TabSin
81
+	mul r6, r1, r2		; k*n
82
+	and r6, r6, #63		; modulo 64
83
+	lsl r6, #1 			; DCW => 2 octets / valeur
84
+	ldrsh r5, [r4, r6]	; sin(2.pi.k.n/M)
85
+	
86
+	; Récupération de x(n) (r4 utilisable)
87
+	lsl r6, r2, #1
88
+	ldrsh r4, [r0, r6]	; récupération de x(n)
89
+	
90
+	; Ajout à la somme
91
+	mul r4, r5
92
+	adds r3, r4
93
+	
94
+	add r2, #1 
95
+	cmp r2, #64
96
+	bne for_i
97
+; fin for i
98
+	
99
+	mov r0, r3
100
+	pop {r4, r5, r6, pc}
101
+	endp
102
+
103
+; Retourne le module en 10.22
104
+DFT_ModuleAuCarre proc
105
+	push{r4, r5, lr}
106
+	mov r5, r0
107
+	mov r4, r1
108
+	
109
+	bl partie_reelle
110
+	mov r1, r4
111
+	mov r4, r0
112
+	mov r0, r5
113
+	bl partie_imaginaire
114
+	mov r1, r4
115
+	
116
+	; Re : r0 et Im : r1 en 5.27
117
+	asr r0, #16
118
+	asr r1, #16
119
+	
120
+	; Re : r0 et Im : r1 en 5.11
121
+	mul r0, r0
122
+	mul r1, r1
123
+	
124
+	; Re : r0 et Im : r1 en 10.22
125
+	add r0, r1
126
+	
127
+	pop{r4, r5, pc}
128
+	endp
129
+
130
+
131
+;Section ROM code (read only) :		
132
+	AREA Trigo, DATA, READONLY
133
+; codage fractionnaire 1.15
134
+
135
+TabCos
136
+	DCW	32767	;  0 0x7fff  0.99997
137
+	DCW	32610	;  1 0x7f62  0.99518
138
+	DCW	32138	;  2 0x7d8a  0.98077
139
+	DCW	31357	;  3 0x7a7d  0.95694
140
+	DCW	30274	;  4 0x7642  0.92389
141
+	DCW	28899	;  5 0x70e3  0.88193
142
+	DCW	27246	;  6 0x6a6e  0.83148
143
+	DCW	25330	;  7 0x62f2  0.77301
144
+	DCW	23170	;  8 0x5a82  0.70709
145
+	DCW	20788	;  9 0x5134  0.63440
146
+	DCW	18205	; 10 0x471d  0.55557
147
+	DCW	15447	; 11 0x3c57  0.47141
148
+	DCW	12540	; 12 0x30fc  0.38269
149
+	DCW	 9512	; 13 0x2528  0.29028
150
+	DCW	 6393	; 14 0x18f9  0.19510
151
+	DCW	 3212	; 15 0x0c8c  0.09802
152
+	DCW	    0	; 16 0x0000  0.00000
153
+	DCW	-3212	; 17 0xf374 -0.09802
154
+	DCW	-6393	; 18 0xe707 -0.19510
155
+	DCW	-9512	; 19 0xdad8 -0.29028
156
+	DCW	-12540	; 20 0xcf04 -0.38269
157
+	DCW	-15447	; 21 0xc3a9 -0.47141
158
+	DCW	-18205	; 22 0xb8e3 -0.55557
159
+	DCW	-20788	; 23 0xaecc -0.63440
160
+	DCW	-23170	; 24 0xa57e -0.70709
161
+	DCW	-25330	; 25 0x9d0e -0.77301
162
+	DCW	-27246	; 26 0x9592 -0.83148
163
+	DCW	-28899	; 27 0x8f1d -0.88193
164
+	DCW	-30274	; 28 0x89be -0.92389
165
+	DCW	-31357	; 29 0x8583 -0.95694
166
+	DCW	-32138	; 30 0x8276 -0.98077
167
+	DCW	-32610	; 31 0x809e -0.99518
168
+	DCW	-32768	; 32 0x8000 -1.00000
169
+	DCW	-32610	; 33 0x809e -0.99518
170
+	DCW	-32138	; 34 0x8276 -0.98077
171
+	DCW	-31357	; 35 0x8583 -0.95694
172
+	DCW	-30274	; 36 0x89be -0.92389
173
+	DCW	-28899	; 37 0x8f1d -0.88193
174
+	DCW	-27246	; 38 0x9592 -0.83148
175
+	DCW	-25330	; 39 0x9d0e -0.77301
176
+	DCW	-23170	; 40 0xa57e -0.70709
177
+	DCW	-20788	; 41 0xaecc -0.63440
178
+	DCW	-18205	; 42 0xb8e3 -0.55557
179
+	DCW	-15447	; 43 0xc3a9 -0.47141
180
+	DCW	-12540	; 44 0xcf04 -0.38269
181
+	DCW	-9512	; 45 0xdad8 -0.29028
182
+	DCW	-6393	; 46 0xe707 -0.19510
183
+	DCW	-3212	; 47 0xf374 -0.09802
184
+	DCW	    0	; 48 0x0000  0.00000
185
+	DCW	 3212	; 49 0x0c8c  0.09802
186
+	DCW	 6393	; 50 0x18f9  0.19510
187
+	DCW	 9512	; 51 0x2528  0.29028
188
+	DCW	12540	; 52 0x30fc  0.38269
189
+	DCW	15447	; 53 0x3c57  0.47141
190
+	DCW	18205	; 54 0x471d  0.55557
191
+	DCW	20788	; 55 0x5134  0.63440
192
+	DCW	23170	; 56 0x5a82  0.70709
193
+	DCW	25330	; 57 0x62f2  0.77301
194
+	DCW	27246	; 58 0x6a6e  0.83148
195
+	DCW	28899	; 59 0x70e3  0.88193
196
+	DCW	30274	; 60 0x7642  0.92389
197
+	DCW	31357	; 61 0x7a7d  0.95694
198
+	DCW	32138	; 62 0x7d8a  0.98077
199
+	DCW	32610	; 63 0x7f62  0.99518
200
+TabSin 
201
+	DCW	    0	;  0 0x0000  0.00000
202
+	DCW	 3212	;  1 0x0c8c  0.09802
203
+	DCW	 6393	;  2 0x18f9  0.19510
204
+	DCW	 9512	;  3 0x2528  0.29028
205
+	DCW	12540	;  4 0x30fc  0.38269
206
+	DCW	15447	;  5 0x3c57  0.47141
207
+	DCW	18205	;  6 0x471d  0.55557
208
+	DCW	20788	;  7 0x5134  0.63440
209
+	DCW	23170	;  8 0x5a82  0.70709
210
+	DCW	25330	;  9 0x62f2  0.77301
211
+	DCW	27246	; 10 0x6a6e  0.83148
212
+	DCW	28899	; 11 0x70e3  0.88193
213
+	DCW	30274	; 12 0x7642  0.92389
214
+	DCW	31357	; 13 0x7a7d  0.95694
215
+	DCW	32138	; 14 0x7d8a  0.98077
216
+	DCW	32610	; 15 0x7f62  0.99518
217
+	DCW	32767	; 16 0x7fff  0.99997
218
+	DCW	32610	; 17 0x7f62  0.99518
219
+	DCW	32138	; 18 0x7d8a  0.98077
220
+	DCW	31357	; 19 0x7a7d  0.95694
221
+	DCW	30274	; 20 0x7642  0.92389
222
+	DCW	28899	; 21 0x70e3  0.88193
223
+	DCW	27246	; 22 0x6a6e  0.83148
224
+	DCW	25330	; 23 0x62f2  0.77301
225
+	DCW	23170	; 24 0x5a82  0.70709
226
+	DCW	20788	; 25 0x5134  0.63440
227
+	DCW	18205	; 26 0x471d  0.55557
228
+	DCW	15447	; 27 0x3c57  0.47141
229
+	DCW	12540	; 28 0x30fc  0.38269
230
+	DCW	 9512	; 29 0x2528  0.29028
231
+	DCW	 6393	; 30 0x18f9  0.19510
232
+	DCW	 3212	; 31 0x0c8c  0.09802
233
+	DCW	    0	; 32 0x0000  0.00000
234
+	DCW	-3212	; 33 0xf374 -0.09802
235
+	DCW	-6393	; 34 0xe707 -0.19510
236
+	DCW	-9512	; 35 0xdad8 -0.29028
237
+	DCW	-12540	; 36 0xcf04 -0.38269
238
+	DCW	-15447	; 37 0xc3a9 -0.47141
239
+	DCW	-18205	; 38 0xb8e3 -0.55557
240
+	DCW	-20788	; 39 0xaecc -0.63440
241
+	DCW	-23170	; 40 0xa57e -0.70709
242
+	DCW	-25330	; 41 0x9d0e -0.77301
243
+	DCW	-27246	; 42 0x9592 -0.83148
244
+	DCW	-28899	; 43 0x8f1d -0.88193
245
+	DCW	-30274	; 44 0x89be -0.92389
246
+	DCW	-31357	; 45 0x8583 -0.95694
247
+	DCW	-32138	; 46 0x8276 -0.98077
248
+	DCW	-32610	; 47 0x809e -0.99518
249
+	DCW	-32768	; 48 0x8000 -1.00000
250
+	DCW	-32610	; 49 0x809e -0.99518
251
+	DCW	-32138	; 50 0x8276 -0.98077
252
+	DCW	-31357	; 51 0x8583 -0.95694
253
+	DCW	-30274	; 52 0x89be -0.92389
254
+	DCW	-28899	; 53 0x8f1d -0.88193
255
+	DCW	-27246	; 54 0x9592 -0.83148
256
+	DCW	-25330	; 55 0x9d0e -0.77301
257
+	DCW	-23170	; 56 0xa57e -0.70709
258
+	DCW	-20788	; 57 0xaecc -0.63440
259
+	DCW	-18205	; 58 0xb8e3 -0.55557
260
+	DCW	-15447	; 59 0xc3a9 -0.47141
261
+	DCW	-12540	; 60 0xcf04 -0.38269
262
+	DCW	-9512	; 61 0xdad8 -0.29028
263
+	DCW	-6393	; 62 0xe707 -0.19510
264
+	DCW	-3212	; 63 0xf374 -0.09802
265
+
266
+
267
+		
268
+		
269
+	END	

+ 71
- 0
PjtKEIL_DFT_Signal_Reel/Src/Signal.asm View File

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

+ 63
- 0
PjtKEIL_DFT_Signal_Reel/Src/principal.c View File

@@ -0,0 +1,63 @@
1
+
2
+
3
+#include "DriverJeuLaser.h"
4
+
5
+int DFT_ModuleAuCarre( short int * Signal64ech, char k);
6
+extern short int LeSignal;
7
+
8
+short int dma_buf[64];
9
+int dft[64];
10
+
11
+
12
+void Manage_Tick() {
13
+	Start_DMA1(64);
14
+	Wait_On_End_Of_DMA1();
15
+	Stop_DMA1;
16
+	
17
+	for (int i = 0; i < 63; ++i){
18
+		dft[i] = DFT_ModuleAuCarre((short *)&dma_buf, i);
19
+	}
20
+}
21
+
22
+int main(void)
23
+{
24
+
25
+// ===========================================================================
26
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
27
+// ===========================================================================
28
+
29
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
30
+CLOCK_Configure();
31
+
32
+	
33
+// SysTick (tick tt les 5 ms avec un clock à 72MHz)
34
+Systick_Period_ff( 360000 );
35
+Systick_Prio_IT( 1, Manage_Tick );
36
+SysTick_On;
37
+SysTick_Enable_IT;
38
+	
39
+// ADC
40
+Init_TimingADC_ActiveADC_ff( ADC1, 72 );
41
+Single_Channel_ADC( ADC1, 2 );
42
+Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
43
+Init_ADC1_DMA1( 0, dma_buf );
44
+
45
+
46
+//============================================================================	
47
+
48
+/*
49
+/// Test
50
+int dft[64];
51
+int v = 0;
52
+for (int i = 0; i < 63; ++i){
53
+	v = DFT_ModuleAuCarre(&LeSignal, i);
54
+	dft[i] = v;
55
+	//printf("%d\n", dft[i]);
56
+}
57
+*/
58
+
59
+while	(1)
60
+	{
61
+	}
62
+}
63
+

+ 335
- 0
PjtKEIL_DFT_Signal_Reel/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 753
- 0
PjtKEIL_DFT_Signal_Reel/StepDFT.uvoptx View File

@@ -0,0 +1,753 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>0</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint/>
157
+      <Tracepoint>
158
+        <THDelay>0</THDelay>
159
+      </Tracepoint>
160
+      <DebugFlag>
161
+        <trace>0</trace>
162
+        <periodic>1</periodic>
163
+        <aLwin>1</aLwin>
164
+        <aCover>0</aCover>
165
+        <aSer1>0</aSer1>
166
+        <aSer2>0</aSer2>
167
+        <aPa>0</aPa>
168
+        <viewmode>1</viewmode>
169
+        <vrSel>0</vrSel>
170
+        <aSym>0</aSym>
171
+        <aTbox>0</aTbox>
172
+        <AscS1>0</AscS1>
173
+        <AscS2>0</AscS2>
174
+        <AscS3>0</AscS3>
175
+        <aSer3>0</aSer3>
176
+        <eProf>0</eProf>
177
+        <aLa>0</aLa>
178
+        <aPa1>0</aPa1>
179
+        <AscS4>0</AscS4>
180
+        <aSer4>0</aSer4>
181
+        <StkLoc>0</StkLoc>
182
+        <TrcWin>0</TrcWin>
183
+        <newCpu>0</newCpu>
184
+        <uProt>0</uProt>
185
+      </DebugFlag>
186
+      <LintExecutable></LintExecutable>
187
+      <LintConfigFile></LintConfigFile>
188
+      <bLintAuto>0</bLintAuto>
189
+      <bAutoGenD>0</bAutoGenD>
190
+      <LntExFlags>0</LntExFlags>
191
+      <pMisraName></pMisraName>
192
+      <pszMrule></pszMrule>
193
+      <pSingCmds></pSingCmds>
194
+      <pMultCmds></pMultCmds>
195
+      <pMisraNamep></pMisraNamep>
196
+      <pszMrulep></pszMrulep>
197
+      <pSingCmdsp></pSingCmdsp>
198
+      <pMultCmdsp></pMultCmdsp>
199
+      <LogicAnalyzers>
200
+        <Wi>
201
+          <IntNumber>0</IntNumber>
202
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
203
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
204
+        </Wi>
205
+      </LogicAnalyzers>
206
+      <DebugDescription>
207
+        <Enable>1</Enable>
208
+        <EnableFlashSeq>0</EnableFlashSeq>
209
+        <EnableLog>0</EnableLog>
210
+        <Protocol>2</Protocol>
211
+        <DbgClock>10000000</DbgClock>
212
+      </DebugDescription>
213
+    </TargetOption>
214
+  </Target>
215
+
216
+  <Target>
217
+    <TargetName>CibleSondeKEIL</TargetName>
218
+    <ToolsetNumber>0x4</ToolsetNumber>
219
+    <ToolsetName>ARM-ADS</ToolsetName>
220
+    <TargetOption>
221
+      <CLKADS>8000000</CLKADS>
222
+      <OPTTT>
223
+        <gFlags>1</gFlags>
224
+        <BeepAtEnd>1</BeepAtEnd>
225
+        <RunSim>0</RunSim>
226
+        <RunTarget>1</RunTarget>
227
+        <RunAbUc>0</RunAbUc>
228
+      </OPTTT>
229
+      <OPTHX>
230
+        <HexSelection>1</HexSelection>
231
+        <FlashByte>65535</FlashByte>
232
+        <HexRangeLowAddress>0</HexRangeLowAddress>
233
+        <HexRangeHighAddress>0</HexRangeHighAddress>
234
+        <HexOffset>0</HexOffset>
235
+      </OPTHX>
236
+      <OPTLEX>
237
+        <PageWidth>79</PageWidth>
238
+        <PageLength>66</PageLength>
239
+        <TabStop>8</TabStop>
240
+        <ListingPath></ListingPath>
241
+      </OPTLEX>
242
+      <ListingPage>
243
+        <CreateCListing>1</CreateCListing>
244
+        <CreateAListing>1</CreateAListing>
245
+        <CreateLListing>1</CreateLListing>
246
+        <CreateIListing>0</CreateIListing>
247
+        <AsmCond>1</AsmCond>
248
+        <AsmSymb>1</AsmSymb>
249
+        <AsmXref>0</AsmXref>
250
+        <CCond>1</CCond>
251
+        <CCode>0</CCode>
252
+        <CListInc>0</CListInc>
253
+        <CSymb>0</CSymb>
254
+        <LinkerCodeListing>0</LinkerCodeListing>
255
+      </ListingPage>
256
+      <OPTXL>
257
+        <LMap>1</LMap>
258
+        <LComments>1</LComments>
259
+        <LGenerateSymbols>1</LGenerateSymbols>
260
+        <LLibSym>1</LLibSym>
261
+        <LLines>1</LLines>
262
+        <LLocSym>1</LLocSym>
263
+        <LPubSym>1</LPubSym>
264
+        <LXref>0</LXref>
265
+        <LExpSel>0</LExpSel>
266
+      </OPTXL>
267
+      <OPTFL>
268
+        <tvExp>1</tvExp>
269
+        <tvExpOptDlg>0</tvExpOptDlg>
270
+        <IsCurrentTarget>1</IsCurrentTarget>
271
+      </OPTFL>
272
+      <CpuCode>18</CpuCode>
273
+      <DebugOpt>
274
+        <uSim>0</uSim>
275
+        <uTrg>1</uTrg>
276
+        <sLdApp>1</sLdApp>
277
+        <sGomain>1</sGomain>
278
+        <sRbreak>1</sRbreak>
279
+        <sRwatch>1</sRwatch>
280
+        <sRmem>1</sRmem>
281
+        <sRfunc>1</sRfunc>
282
+        <sRbox>1</sRbox>
283
+        <tLdApp>1</tLdApp>
284
+        <tGomain>1</tGomain>
285
+        <tRbreak>1</tRbreak>
286
+        <tRwatch>1</tRwatch>
287
+        <tRmem>1</tRmem>
288
+        <tRfunc>1</tRfunc>
289
+        <tRbox>1</tRbox>
290
+        <tRtrace>1</tRtrace>
291
+        <sRSysVw>1</sRSysVw>
292
+        <tRSysVw>1</tRSysVw>
293
+        <sRunDeb>0</sRunDeb>
294
+        <sLrtime>0</sLrtime>
295
+        <bEvRecOn>1</bEvRecOn>
296
+        <bSchkAxf>0</bSchkAxf>
297
+        <bTchkAxf>0</bTchkAxf>
298
+        <nTsel>0</nTsel>
299
+        <sDll></sDll>
300
+        <sDllPa></sDllPa>
301
+        <sDlgDll></sDlgDll>
302
+        <sDlgPa></sDlgPa>
303
+        <sIfile></sIfile>
304
+        <tDll></tDll>
305
+        <tDllPa></tDllPa>
306
+        <tDlgDll></tDlgDll>
307
+        <tDlgPa></tDlgPa>
308
+        <tIfile></tIfile>
309
+        <pMon>BIN\UL2CM3.DLL</pMon>
310
+      </DebugOpt>
311
+      <TargetDriverDllRegistry>
312
+        <SetRegEntry>
313
+          <Number>0</Number>
314
+          <Key>DLGDARM</Key>
315
+          <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=-1,-1,-1,-1,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>
316
+        </SetRegEntry>
317
+        <SetRegEntry>
318
+          <Number>0</Number>
319
+          <Key>ARMRTXEVENTFLAGS</Key>
320
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
321
+        </SetRegEntry>
322
+        <SetRegEntry>
323
+          <Number>0</Number>
324
+          <Key>DLGTARM</Key>
325
+          <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)</Name>
326
+        </SetRegEntry>
327
+        <SetRegEntry>
328
+          <Number>0</Number>
329
+          <Key>ARMDBGFLAGS</Key>
330
+          <Name>-T0</Name>
331
+        </SetRegEntry>
332
+        <SetRegEntry>
333
+          <Number>0</Number>
334
+          <Key>DLGUARM</Key>
335
+          <Name>(105=-1,-1,-1,-1,0)</Name>
336
+        </SetRegEntry>
337
+        <SetRegEntry>
338
+          <Number>0</Number>
339
+          <Key>UL2CM3</Key>
340
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
341
+        </SetRegEntry>
342
+        <SetRegEntry>
343
+          <Number>0</Number>
344
+          <Key>ST-LINKIII-KEIL_SWO</Key>
345
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
346
+        </SetRegEntry>
347
+      </TargetDriverDllRegistry>
348
+      <Breakpoint/>
349
+      <WatchWindow1>
350
+        <Ww>
351
+          <count>0</count>
352
+          <WinNumber>1</WinNumber>
353
+          <ItemText>dft[64]</ItemText>
354
+        </Ww>
355
+        <Ww>
356
+          <count>1</count>
357
+          <WinNumber>1</WinNumber>
358
+          <ItemText>dft[16]</ItemText>
359
+        </Ww>
360
+        <Ww>
361
+          <count>2</count>
362
+          <WinNumber>1</WinNumber>
363
+          <ItemText>dft[17]</ItemText>
364
+        </Ww>
365
+        <Ww>
366
+          <count>3</count>
367
+          <WinNumber>1</WinNumber>
368
+          <ItemText>dft[18]</ItemText>
369
+        </Ww>
370
+        <Ww>
371
+          <count>4</count>
372
+          <WinNumber>1</WinNumber>
373
+          <ItemText>dft[19]</ItemText>
374
+        </Ww>
375
+        <Ww>
376
+          <count>5</count>
377
+          <WinNumber>1</WinNumber>
378
+          <ItemText>dft[20]</ItemText>
379
+        </Ww>
380
+        <Ww>
381
+          <count>6</count>
382
+          <WinNumber>1</WinNumber>
383
+          <ItemText>dft[21]</ItemText>
384
+        </Ww>
385
+        <Ww>
386
+          <count>7</count>
387
+          <WinNumber>1</WinNumber>
388
+          <ItemText>dft[22]</ItemText>
389
+        </Ww>
390
+        <Ww>
391
+          <count>8</count>
392
+          <WinNumber>1</WinNumber>
393
+          <ItemText>dft[23]</ItemText>
394
+        </Ww>
395
+        <Ww>
396
+          <count>9</count>
397
+          <WinNumber>1</WinNumber>
398
+          <ItemText>dft[24]</ItemText>
399
+        </Ww>
400
+      </WatchWindow1>
401
+      <MemoryWindow1>
402
+        <Mm>
403
+          <WinNumber>1</WinNumber>
404
+          <SubType>257</SubType>
405
+          <ItemText>r0</ItemText>
406
+          <AccSizeX>0</AccSizeX>
407
+        </Mm>
408
+      </MemoryWindow1>
409
+      <Tracepoint>
410
+        <THDelay>0</THDelay>
411
+      </Tracepoint>
412
+      <DebugFlag>
413
+        <trace>0</trace>
414
+        <periodic>1</periodic>
415
+        <aLwin>1</aLwin>
416
+        <aCover>0</aCover>
417
+        <aSer1>0</aSer1>
418
+        <aSer2>0</aSer2>
419
+        <aPa>0</aPa>
420
+        <viewmode>1</viewmode>
421
+        <vrSel>0</vrSel>
422
+        <aSym>0</aSym>
423
+        <aTbox>0</aTbox>
424
+        <AscS1>0</AscS1>
425
+        <AscS2>0</AscS2>
426
+        <AscS3>0</AscS3>
427
+        <aSer3>0</aSer3>
428
+        <eProf>0</eProf>
429
+        <aLa>1</aLa>
430
+        <aPa1>0</aPa1>
431
+        <AscS4>0</AscS4>
432
+        <aSer4>0</aSer4>
433
+        <StkLoc>0</StkLoc>
434
+        <TrcWin>0</TrcWin>
435
+        <newCpu>0</newCpu>
436
+        <uProt>0</uProt>
437
+      </DebugFlag>
438
+      <LintExecutable></LintExecutable>
439
+      <LintConfigFile></LintConfigFile>
440
+      <bLintAuto>0</bLintAuto>
441
+      <bAutoGenD>0</bAutoGenD>
442
+      <LntExFlags>0</LntExFlags>
443
+      <pMisraName></pMisraName>
444
+      <pszMrule></pszMrule>
445
+      <pSingCmds></pSingCmds>
446
+      <pMultCmds></pMultCmds>
447
+      <pMisraNamep></pMisraNamep>
448
+      <pszMrulep></pszMrulep>
449
+      <pSingCmdsp></pSingCmdsp>
450
+      <pMultCmdsp></pMultCmdsp>
451
+      <DebugDescription>
452
+        <Enable>1</Enable>
453
+        <EnableFlashSeq>0</EnableFlashSeq>
454
+        <EnableLog>0</EnableLog>
455
+        <Protocol>2</Protocol>
456
+        <DbgClock>10000000</DbgClock>
457
+      </DebugDescription>
458
+    </TargetOption>
459
+  </Target>
460
+
461
+  <Target>
462
+    <TargetName>CibleSondeST</TargetName>
463
+    <ToolsetNumber>0x4</ToolsetNumber>
464
+    <ToolsetName>ARM-ADS</ToolsetName>
465
+    <TargetOption>
466
+      <CLKADS>8000000</CLKADS>
467
+      <OPTTT>
468
+        <gFlags>1</gFlags>
469
+        <BeepAtEnd>1</BeepAtEnd>
470
+        <RunSim>0</RunSim>
471
+        <RunTarget>1</RunTarget>
472
+        <RunAbUc>0</RunAbUc>
473
+      </OPTTT>
474
+      <OPTHX>
475
+        <HexSelection>1</HexSelection>
476
+        <FlashByte>65535</FlashByte>
477
+        <HexRangeLowAddress>0</HexRangeLowAddress>
478
+        <HexRangeHighAddress>0</HexRangeHighAddress>
479
+        <HexOffset>0</HexOffset>
480
+      </OPTHX>
481
+      <OPTLEX>
482
+        <PageWidth>79</PageWidth>
483
+        <PageLength>66</PageLength>
484
+        <TabStop>8</TabStop>
485
+        <ListingPath></ListingPath>
486
+      </OPTLEX>
487
+      <ListingPage>
488
+        <CreateCListing>1</CreateCListing>
489
+        <CreateAListing>1</CreateAListing>
490
+        <CreateLListing>1</CreateLListing>
491
+        <CreateIListing>0</CreateIListing>
492
+        <AsmCond>1</AsmCond>
493
+        <AsmSymb>1</AsmSymb>
494
+        <AsmXref>0</AsmXref>
495
+        <CCond>1</CCond>
496
+        <CCode>0</CCode>
497
+        <CListInc>0</CListInc>
498
+        <CSymb>0</CSymb>
499
+        <LinkerCodeListing>0</LinkerCodeListing>
500
+      </ListingPage>
501
+      <OPTXL>
502
+        <LMap>1</LMap>
503
+        <LComments>1</LComments>
504
+        <LGenerateSymbols>1</LGenerateSymbols>
505
+        <LLibSym>1</LLibSym>
506
+        <LLines>1</LLines>
507
+        <LLocSym>1</LLocSym>
508
+        <LPubSym>1</LPubSym>
509
+        <LXref>0</LXref>
510
+        <LExpSel>0</LExpSel>
511
+      </OPTXL>
512
+      <OPTFL>
513
+        <tvExp>1</tvExp>
514
+        <tvExpOptDlg>0</tvExpOptDlg>
515
+        <IsCurrentTarget>0</IsCurrentTarget>
516
+      </OPTFL>
517
+      <CpuCode>18</CpuCode>
518
+      <DebugOpt>
519
+        <uSim>0</uSim>
520
+        <uTrg>1</uTrg>
521
+        <sLdApp>1</sLdApp>
522
+        <sGomain>1</sGomain>
523
+        <sRbreak>1</sRbreak>
524
+        <sRwatch>1</sRwatch>
525
+        <sRmem>1</sRmem>
526
+        <sRfunc>1</sRfunc>
527
+        <sRbox>1</sRbox>
528
+        <tLdApp>1</tLdApp>
529
+        <tGomain>1</tGomain>
530
+        <tRbreak>1</tRbreak>
531
+        <tRwatch>1</tRwatch>
532
+        <tRmem>1</tRmem>
533
+        <tRfunc>1</tRfunc>
534
+        <tRbox>1</tRbox>
535
+        <tRtrace>1</tRtrace>
536
+        <sRSysVw>1</sRSysVw>
537
+        <tRSysVw>1</tRSysVw>
538
+        <sRunDeb>0</sRunDeb>
539
+        <sLrtime>0</sLrtime>
540
+        <bEvRecOn>1</bEvRecOn>
541
+        <bSchkAxf>0</bSchkAxf>
542
+        <bTchkAxf>0</bTchkAxf>
543
+        <nTsel>6</nTsel>
544
+        <sDll></sDll>
545
+        <sDllPa></sDllPa>
546
+        <sDlgDll></sDlgDll>
547
+        <sDlgPa></sDlgPa>
548
+        <sIfile></sIfile>
549
+        <tDll></tDll>
550
+        <tDllPa></tDllPa>
551
+        <tDlgDll></tDlgDll>
552
+        <tDlgPa></tDlgPa>
553
+        <tIfile></tIfile>
554
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
555
+      </DebugOpt>
556
+      <TargetDriverDllRegistry>
557
+        <SetRegEntry>
558
+          <Number>0</Number>
559
+          <Key>DLGDARM</Key>
560
+          <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=-1,-1,-1,-1,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>
561
+        </SetRegEntry>
562
+        <SetRegEntry>
563
+          <Number>0</Number>
564
+          <Key>ARMRTXEVENTFLAGS</Key>
565
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
566
+        </SetRegEntry>
567
+        <SetRegEntry>
568
+          <Number>0</Number>
569
+          <Key>DLGTARM</Key>
570
+          <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)</Name>
571
+        </SetRegEntry>
572
+        <SetRegEntry>
573
+          <Number>0</Number>
574
+          <Key>ARMDBGFLAGS</Key>
575
+          <Name>-T0</Name>
576
+        </SetRegEntry>
577
+        <SetRegEntry>
578
+          <Number>0</Number>
579
+          <Key>DLGUARM</Key>
580
+          <Name>(105=-1,-1,-1,-1,0)</Name>
581
+        </SetRegEntry>
582
+        <SetRegEntry>
583
+          <Number>0</Number>
584
+          <Key>UL2CM3</Key>
585
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
586
+        </SetRegEntry>
587
+        <SetRegEntry>
588
+          <Number>0</Number>
589
+          <Key>ST-LINKIII-KEIL_SWO</Key>
590
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
591
+        </SetRegEntry>
592
+      </TargetDriverDllRegistry>
593
+      <Breakpoint/>
594
+      <MemoryWindow1>
595
+        <Mm>
596
+          <WinNumber>1</WinNumber>
597
+          <SubType>257</SubType>
598
+          <ItemText>r0</ItemText>
599
+          <AccSizeX>0</AccSizeX>
600
+        </Mm>
601
+      </MemoryWindow1>
602
+      <Tracepoint>
603
+        <THDelay>0</THDelay>
604
+      </Tracepoint>
605
+      <DebugFlag>
606
+        <trace>0</trace>
607
+        <periodic>1</periodic>
608
+        <aLwin>1</aLwin>
609
+        <aCover>0</aCover>
610
+        <aSer1>0</aSer1>
611
+        <aSer2>0</aSer2>
612
+        <aPa>0</aPa>
613
+        <viewmode>1</viewmode>
614
+        <vrSel>0</vrSel>
615
+        <aSym>0</aSym>
616
+        <aTbox>0</aTbox>
617
+        <AscS1>0</AscS1>
618
+        <AscS2>0</AscS2>
619
+        <AscS3>0</AscS3>
620
+        <aSer3>0</aSer3>
621
+        <eProf>0</eProf>
622
+        <aLa>1</aLa>
623
+        <aPa1>0</aPa1>
624
+        <AscS4>0</AscS4>
625
+        <aSer4>0</aSer4>
626
+        <StkLoc>0</StkLoc>
627
+        <TrcWin>0</TrcWin>
628
+        <newCpu>0</newCpu>
629
+        <uProt>0</uProt>
630
+      </DebugFlag>
631
+      <LintExecutable></LintExecutable>
632
+      <LintConfigFile></LintConfigFile>
633
+      <bLintAuto>0</bLintAuto>
634
+      <bAutoGenD>0</bAutoGenD>
635
+      <LntExFlags>0</LntExFlags>
636
+      <pMisraName></pMisraName>
637
+      <pszMrule></pszMrule>
638
+      <pSingCmds></pSingCmds>
639
+      <pMultCmds></pMultCmds>
640
+      <pMisraNamep></pMisraNamep>
641
+      <pszMrulep></pszMrulep>
642
+      <pSingCmdsp></pSingCmdsp>
643
+      <pMultCmdsp></pMultCmdsp>
644
+      <LogicAnalyzers>
645
+        <Wi>
646
+          <IntNumber>0</IntNumber>
647
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
648
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
649
+        </Wi>
650
+      </LogicAnalyzers>
651
+      <DebugDescription>
652
+        <Enable>1</Enable>
653
+        <EnableFlashSeq>0</EnableFlashSeq>
654
+        <EnableLog>0</EnableLog>
655
+        <Protocol>2</Protocol>
656
+        <DbgClock>10000000</DbgClock>
657
+      </DebugDescription>
658
+    </TargetOption>
659
+  </Target>
660
+
661
+  <Group>
662
+    <GroupName>Sources</GroupName>
663
+    <tvExp>1</tvExp>
664
+    <tvExpOptDlg>0</tvExpOptDlg>
665
+    <cbSel>0</cbSel>
666
+    <RteFlg>0</RteFlg>
667
+    <File>
668
+      <GroupNumber>1</GroupNumber>
669
+      <FileNumber>1</FileNumber>
670
+      <FileType>1</FileType>
671
+      <tvExp>0</tvExp>
672
+      <tvExpOptDlg>0</tvExpOptDlg>
673
+      <bDave2>0</bDave2>
674
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
675
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
676
+      <RteFlg>0</RteFlg>
677
+      <bShared>0</bShared>
678
+    </File>
679
+    <File>
680
+      <GroupNumber>1</GroupNumber>
681
+      <FileNumber>2</FileNumber>
682
+      <FileType>2</FileType>
683
+      <tvExp>0</tvExp>
684
+      <tvExpOptDlg>0</tvExpOptDlg>
685
+      <bDave2>0</bDave2>
686
+      <PathWithFileName>.\Src\Signal.asm</PathWithFileName>
687
+      <FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
688
+      <RteFlg>0</RteFlg>
689
+      <bShared>0</bShared>
690
+    </File>
691
+    <File>
692
+      <GroupNumber>1</GroupNumber>
693
+      <FileNumber>3</FileNumber>
694
+      <FileType>2</FileType>
695
+      <tvExp>0</tvExp>
696
+      <tvExpOptDlg>0</tvExpOptDlg>
697
+      <bDave2>0</bDave2>
698
+      <PathWithFileName>.\Src\DFT.s</PathWithFileName>
699
+      <FilenameWithoutPath>DFT.s</FilenameWithoutPath>
700
+      <RteFlg>0</RteFlg>
701
+      <bShared>0</bShared>
702
+    </File>
703
+  </Group>
704
+
705
+  <Group>
706
+    <GroupName>Sys</GroupName>
707
+    <tvExp>1</tvExp>
708
+    <tvExpOptDlg>0</tvExpOptDlg>
709
+    <cbSel>0</cbSel>
710
+    <RteFlg>0</RteFlg>
711
+    <File>
712
+      <GroupNumber>2</GroupNumber>
713
+      <FileNumber>4</FileNumber>
714
+      <FileType>2</FileType>
715
+      <tvExp>0</tvExp>
716
+      <tvExpOptDlg>0</tvExpOptDlg>
717
+      <bDave2>0</bDave2>
718
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
719
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
720
+      <RteFlg>0</RteFlg>
721
+      <bShared>0</bShared>
722
+    </File>
723
+  </Group>
724
+
725
+  <Group>
726
+    <GroupName>Driver</GroupName>
727
+    <tvExp>1</tvExp>
728
+    <tvExpOptDlg>0</tvExpOptDlg>
729
+    <cbSel>0</cbSel>
730
+    <RteFlg>0</RteFlg>
731
+    <File>
732
+      <GroupNumber>3</GroupNumber>
733
+      <FileNumber>5</FileNumber>
734
+      <FileType>4</FileType>
735
+      <tvExp>0</tvExp>
736
+      <tvExpOptDlg>0</tvExpOptDlg>
737
+      <bDave2>0</bDave2>
738
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
739
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
740
+      <RteFlg>0</RteFlg>
741
+      <bShared>0</bShared>
742
+    </File>
743
+  </Group>
744
+
745
+  <Group>
746
+    <GroupName>::CMSIS</GroupName>
747
+    <tvExp>0</tvExp>
748
+    <tvExpOptDlg>0</tvExpOptDlg>
749
+    <cbSel>0</cbSel>
750
+    <RteFlg>1</RteFlg>
751
+  </Group>
752
+
753
+</ProjectOpt>

+ 1367
- 0
PjtKEIL_DFT_Signal_Reel/StepDFT.uvprojx
File diff suppressed because it is too large
View File


+ 345
- 0
PjtKEIL_StepDFT/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_StepDFT/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_StepDFT/Driver/DriverJeuLaser.lib View File


+ 269
- 0
PjtKEIL_StepDFT/Src/DFT.s View File

@@ -0,0 +1,269 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+	
9
+	extern LeSignal
10
+	export DFT_ModuleAuCarre
11
+
12
+
13
+;Section RAM (read write):
14
+	area    maram,data,readwrite
15
+		
16
+
17
+	
18
+; ===============================================================================================
19
+	
20
+
21
+
22
+		
23
+;Section ROM code (read only) :		
24
+	area    moncode,code,readonly
25
+; écrire le code ici	
26
+
27
+; TODO LA PROCHAINE FOIS:
28
+; - Partie Im. copier coller
29
+; - Module (somme quadratique)
30
+; - Tester avec formule page 6
31
+
32
+
33
+; Calcul de la partie réelle i.e.
34
+; SUM(0, M-1): x(n).cos(-2pikn/M)
35
+; Retourne Xreal(k), normé en 5.27
36
+partie_reelle proc
37
+	push {r4, r5, r6, lr}
38
+	; r0 := =LeSignal
39
+	; r1 := k
40
+	ldr r2, =0	; indice boucle
41
+	ldr r3, =0	; X(k)
42
+	
43
+; boucle for r
44
+for_r
45
+	; Calcul de cos(...) fonction de k*n
46
+	ldr r4, =TabCos
47
+	mul r6, r1, r2		; k*n
48
+	and r6, r6, #63		; modulo 64
49
+	lsl r6, #1 			; DCW => 2 octets / valeur
50
+	ldrsh r5, [r4, r6]	; cos(2.pi.k.n/M)
51
+	
52
+	; Récupération de x(n) (r4 utilisable)
53
+	lsl r6, r2, #1
54
+	ldrsh r4, [r0, r6]	; récupération de x(n)
55
+	
56
+	; Ajout à la somme x(n) 4.12 et cos en 1.15, sortie en 5.27
57
+	mul r4, r5			; x(n) * cos(...)
58
+	adds r3, r4			; x(n) += x(n) * cos(...)
59
+	
60
+	add r2, #1 
61
+	cmp r2, #64
62
+	bne for_r
63
+; fin for r
64
+	
65
+	mov r0, r3
66
+	pop {r4, r5, r6, pc}
67
+	endp
68
+		
69
+; Retourne Xim(k), normé en 5.27
70
+partie_imaginaire proc
71
+	push {r4, r5, r6, lr}
72
+	; r0 := =LeSignal
73
+	; r1 := k
74
+	ldr r2, =0	; indice boucle
75
+	ldr r3, =0	; X(k)
76
+	
77
+; boucle for i
78
+for_i
79
+	; Calcul de sin(...) fonction de k*n
80
+	ldr r4, =TabSin
81
+	mul r6, r1, r2		; k*n
82
+	and r6, r6, #63		; modulo 64
83
+	lsl r6, #1 			; DCW => 2 octets / valeur
84
+	ldrsh r5, [r4, r6]	; sin(2.pi.k.n/M)
85
+	
86
+	; Récupération de x(n) (r4 utilisable)
87
+	lsl r6, r2, #1
88
+	ldrsh r4, [r0, r6]	; récupération de x(n)
89
+	
90
+	; Ajout à la somme
91
+	mul r4, r5
92
+	adds r3, r4
93
+	
94
+	add r2, #1 
95
+	cmp r2, #64
96
+	bne for_i
97
+; fin for i
98
+	
99
+	mov r0, r3
100
+	pop {r4, r5, r6, pc}
101
+	endp
102
+
103
+; Retourne le module en 10.22
104
+DFT_ModuleAuCarre proc
105
+	push{r4, r5, lr}
106
+	mov r5, r0
107
+	mov r4, r1
108
+	
109
+	bl partie_reelle
110
+	mov r1, r4
111
+	mov r4, r0
112
+	mov r0, r5
113
+	bl partie_imaginaire
114
+	mov r1, r4
115
+	
116
+	; Re : r0 et Im : r1 en 5.27
117
+	asr r0, #16
118
+	asr r1, #16
119
+	
120
+	; Re : r0 et Im : r1 en 5.11
121
+	mul r0, r0
122
+	mul r1, r1
123
+	
124
+	; Re : r0 et Im : r1 en 10.22
125
+	add r0, r1
126
+	
127
+	pop{r4, r5, pc}
128
+	endp
129
+
130
+
131
+;Section ROM code (read only) :		
132
+	AREA Trigo, DATA, READONLY
133
+; codage fractionnaire 1.15
134
+
135
+TabCos
136
+	DCW	32767	;  0 0x7fff  0.99997
137
+	DCW	32610	;  1 0x7f62  0.99518
138
+	DCW	32138	;  2 0x7d8a  0.98077
139
+	DCW	31357	;  3 0x7a7d  0.95694
140
+	DCW	30274	;  4 0x7642  0.92389
141
+	DCW	28899	;  5 0x70e3  0.88193
142
+	DCW	27246	;  6 0x6a6e  0.83148
143
+	DCW	25330	;  7 0x62f2  0.77301
144
+	DCW	23170	;  8 0x5a82  0.70709
145
+	DCW	20788	;  9 0x5134  0.63440
146
+	DCW	18205	; 10 0x471d  0.55557
147
+	DCW	15447	; 11 0x3c57  0.47141
148
+	DCW	12540	; 12 0x30fc  0.38269
149
+	DCW	 9512	; 13 0x2528  0.29028
150
+	DCW	 6393	; 14 0x18f9  0.19510
151
+	DCW	 3212	; 15 0x0c8c  0.09802
152
+	DCW	    0	; 16 0x0000  0.00000
153
+	DCW	-3212	; 17 0xf374 -0.09802
154
+	DCW	-6393	; 18 0xe707 -0.19510
155
+	DCW	-9512	; 19 0xdad8 -0.29028
156
+	DCW	-12540	; 20 0xcf04 -0.38269
157
+	DCW	-15447	; 21 0xc3a9 -0.47141
158
+	DCW	-18205	; 22 0xb8e3 -0.55557
159
+	DCW	-20788	; 23 0xaecc -0.63440
160
+	DCW	-23170	; 24 0xa57e -0.70709
161
+	DCW	-25330	; 25 0x9d0e -0.77301
162
+	DCW	-27246	; 26 0x9592 -0.83148
163
+	DCW	-28899	; 27 0x8f1d -0.88193
164
+	DCW	-30274	; 28 0x89be -0.92389
165
+	DCW	-31357	; 29 0x8583 -0.95694
166
+	DCW	-32138	; 30 0x8276 -0.98077
167
+	DCW	-32610	; 31 0x809e -0.99518
168
+	DCW	-32768	; 32 0x8000 -1.00000
169
+	DCW	-32610	; 33 0x809e -0.99518
170
+	DCW	-32138	; 34 0x8276 -0.98077
171
+	DCW	-31357	; 35 0x8583 -0.95694
172
+	DCW	-30274	; 36 0x89be -0.92389
173
+	DCW	-28899	; 37 0x8f1d -0.88193
174
+	DCW	-27246	; 38 0x9592 -0.83148
175
+	DCW	-25330	; 39 0x9d0e -0.77301
176
+	DCW	-23170	; 40 0xa57e -0.70709
177
+	DCW	-20788	; 41 0xaecc -0.63440
178
+	DCW	-18205	; 42 0xb8e3 -0.55557
179
+	DCW	-15447	; 43 0xc3a9 -0.47141
180
+	DCW	-12540	; 44 0xcf04 -0.38269
181
+	DCW	-9512	; 45 0xdad8 -0.29028
182
+	DCW	-6393	; 46 0xe707 -0.19510
183
+	DCW	-3212	; 47 0xf374 -0.09802
184
+	DCW	    0	; 48 0x0000  0.00000
185
+	DCW	 3212	; 49 0x0c8c  0.09802
186
+	DCW	 6393	; 50 0x18f9  0.19510
187
+	DCW	 9512	; 51 0x2528  0.29028
188
+	DCW	12540	; 52 0x30fc  0.38269
189
+	DCW	15447	; 53 0x3c57  0.47141
190
+	DCW	18205	; 54 0x471d  0.55557
191
+	DCW	20788	; 55 0x5134  0.63440
192
+	DCW	23170	; 56 0x5a82  0.70709
193
+	DCW	25330	; 57 0x62f2  0.77301
194
+	DCW	27246	; 58 0x6a6e  0.83148
195
+	DCW	28899	; 59 0x70e3  0.88193
196
+	DCW	30274	; 60 0x7642  0.92389
197
+	DCW	31357	; 61 0x7a7d  0.95694
198
+	DCW	32138	; 62 0x7d8a  0.98077
199
+	DCW	32610	; 63 0x7f62  0.99518
200
+TabSin 
201
+	DCW	    0	;  0 0x0000  0.00000
202
+	DCW	 3212	;  1 0x0c8c  0.09802
203
+	DCW	 6393	;  2 0x18f9  0.19510
204
+	DCW	 9512	;  3 0x2528  0.29028
205
+	DCW	12540	;  4 0x30fc  0.38269
206
+	DCW	15447	;  5 0x3c57  0.47141
207
+	DCW	18205	;  6 0x471d  0.55557
208
+	DCW	20788	;  7 0x5134  0.63440
209
+	DCW	23170	;  8 0x5a82  0.70709
210
+	DCW	25330	;  9 0x62f2  0.77301
211
+	DCW	27246	; 10 0x6a6e  0.83148
212
+	DCW	28899	; 11 0x70e3  0.88193
213
+	DCW	30274	; 12 0x7642  0.92389
214
+	DCW	31357	; 13 0x7a7d  0.95694
215
+	DCW	32138	; 14 0x7d8a  0.98077
216
+	DCW	32610	; 15 0x7f62  0.99518
217
+	DCW	32767	; 16 0x7fff  0.99997
218
+	DCW	32610	; 17 0x7f62  0.99518
219
+	DCW	32138	; 18 0x7d8a  0.98077
220
+	DCW	31357	; 19 0x7a7d  0.95694
221
+	DCW	30274	; 20 0x7642  0.92389
222
+	DCW	28899	; 21 0x70e3  0.88193
223
+	DCW	27246	; 22 0x6a6e  0.83148
224
+	DCW	25330	; 23 0x62f2  0.77301
225
+	DCW	23170	; 24 0x5a82  0.70709
226
+	DCW	20788	; 25 0x5134  0.63440
227
+	DCW	18205	; 26 0x471d  0.55557
228
+	DCW	15447	; 27 0x3c57  0.47141
229
+	DCW	12540	; 28 0x30fc  0.38269
230
+	DCW	 9512	; 29 0x2528  0.29028
231
+	DCW	 6393	; 30 0x18f9  0.19510
232
+	DCW	 3212	; 31 0x0c8c  0.09802
233
+	DCW	    0	; 32 0x0000  0.00000
234
+	DCW	-3212	; 33 0xf374 -0.09802
235
+	DCW	-6393	; 34 0xe707 -0.19510
236
+	DCW	-9512	; 35 0xdad8 -0.29028
237
+	DCW	-12540	; 36 0xcf04 -0.38269
238
+	DCW	-15447	; 37 0xc3a9 -0.47141
239
+	DCW	-18205	; 38 0xb8e3 -0.55557
240
+	DCW	-20788	; 39 0xaecc -0.63440
241
+	DCW	-23170	; 40 0xa57e -0.70709
242
+	DCW	-25330	; 41 0x9d0e -0.77301
243
+	DCW	-27246	; 42 0x9592 -0.83148
244
+	DCW	-28899	; 43 0x8f1d -0.88193
245
+	DCW	-30274	; 44 0x89be -0.92389
246
+	DCW	-31357	; 45 0x8583 -0.95694
247
+	DCW	-32138	; 46 0x8276 -0.98077
248
+	DCW	-32610	; 47 0x809e -0.99518
249
+	DCW	-32768	; 48 0x8000 -1.00000
250
+	DCW	-32610	; 49 0x809e -0.99518
251
+	DCW	-32138	; 50 0x8276 -0.98077
252
+	DCW	-31357	; 51 0x8583 -0.95694
253
+	DCW	-30274	; 52 0x89be -0.92389
254
+	DCW	-28899	; 53 0x8f1d -0.88193
255
+	DCW	-27246	; 54 0x9592 -0.83148
256
+	DCW	-25330	; 55 0x9d0e -0.77301
257
+	DCW	-23170	; 56 0xa57e -0.70709
258
+	DCW	-20788	; 57 0xaecc -0.63440
259
+	DCW	-18205	; 58 0xb8e3 -0.55557
260
+	DCW	-15447	; 59 0xc3a9 -0.47141
261
+	DCW	-12540	; 60 0xcf04 -0.38269
262
+	DCW	-9512	; 61 0xdad8 -0.29028
263
+	DCW	-6393	; 62 0xe707 -0.19510
264
+	DCW	-3212	; 63 0xf374 -0.09802
265
+
266
+
267
+		
268
+		
269
+	END	

+ 71
- 0
PjtKEIL_StepDFT/Src/Signal.asm View File

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

+ 37
- 0
PjtKEIL_StepDFT/Src/principal.c View File

@@ -0,0 +1,37 @@
1
+
2
+
3
+#include "DriverJeuLaser.h"
4
+
5
+int DFT_ModuleAuCarre( short int * Signal64ech, char k);
6
+extern short int LeSignal;
7
+
8
+int main(void)
9
+{
10
+
11
+// ===========================================================================
12
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
13
+// ===========================================================================
14
+
15
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
16
+CLOCK_Configure();
17
+
18
+
19
+	
20
+	
21
+
22
+//============================================================================	
23
+	
24
+/// Test
25
+int dft[63];
26
+int v = 0;
27
+for (int i = 0; i < 63; ++i){
28
+	v = DFT_ModuleAuCarre(&LeSignal, i);
29
+	dft[i] = v;
30
+	//printf("%d\n", dft[i]);
31
+}
32
+	
33
+while	(1)
34
+	{
35
+	}
36
+}
37
+

+ 335
- 0
PjtKEIL_StepDFT/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 718
- 0
PjtKEIL_StepDFT/StepDFT.uvoptx View File

@@ -0,0 +1,718 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>1</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint>
157
+        <Bp>
158
+          <Number>0</Number>
159
+          <Type>0</Type>
160
+          <LineNumber>29</LineNumber>
161
+          <EnabledFlag>1</EnabledFlag>
162
+          <Address>134218382</Address>
163
+          <ByteObject>0</ByteObject>
164
+          <HtxType>0</HtxType>
165
+          <ManyObjects>0</ManyObjects>
166
+          <SizeOfObject>0</SizeOfObject>
167
+          <BreakByAccess>0</BreakByAccess>
168
+          <BreakIfRCount>1</BreakIfRCount>
169
+          <Filename>.\Src\principal.c</Filename>
170
+          <ExecCommand></ExecCommand>
171
+          <Expression>\\StepDFT\Src/principal.c\29</Expression>
172
+        </Bp>
173
+      </Breakpoint>
174
+      <Tracepoint>
175
+        <THDelay>0</THDelay>
176
+      </Tracepoint>
177
+      <DebugFlag>
178
+        <trace>0</trace>
179
+        <periodic>1</periodic>
180
+        <aLwin>1</aLwin>
181
+        <aCover>0</aCover>
182
+        <aSer1>0</aSer1>
183
+        <aSer2>0</aSer2>
184
+        <aPa>0</aPa>
185
+        <viewmode>1</viewmode>
186
+        <vrSel>0</vrSel>
187
+        <aSym>0</aSym>
188
+        <aTbox>0</aTbox>
189
+        <AscS1>0</AscS1>
190
+        <AscS2>0</AscS2>
191
+        <AscS3>0</AscS3>
192
+        <aSer3>0</aSer3>
193
+        <eProf>0</eProf>
194
+        <aLa>0</aLa>
195
+        <aPa1>0</aPa1>
196
+        <AscS4>0</AscS4>
197
+        <aSer4>0</aSer4>
198
+        <StkLoc>0</StkLoc>
199
+        <TrcWin>0</TrcWin>
200
+        <newCpu>0</newCpu>
201
+        <uProt>0</uProt>
202
+      </DebugFlag>
203
+      <LintExecutable></LintExecutable>
204
+      <LintConfigFile></LintConfigFile>
205
+      <bLintAuto>0</bLintAuto>
206
+      <bAutoGenD>0</bAutoGenD>
207
+      <LntExFlags>0</LntExFlags>
208
+      <pMisraName></pMisraName>
209
+      <pszMrule></pszMrule>
210
+      <pSingCmds></pSingCmds>
211
+      <pMultCmds></pMultCmds>
212
+      <pMisraNamep></pMisraNamep>
213
+      <pszMrulep></pszMrulep>
214
+      <pSingCmdsp></pSingCmdsp>
215
+      <pMultCmdsp></pMultCmdsp>
216
+      <LogicAnalyzers>
217
+        <Wi>
218
+          <IntNumber>0</IntNumber>
219
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
220
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
221
+        </Wi>
222
+      </LogicAnalyzers>
223
+      <DebugDescription>
224
+        <Enable>1</Enable>
225
+        <EnableFlashSeq>0</EnableFlashSeq>
226
+        <EnableLog>0</EnableLog>
227
+        <Protocol>2</Protocol>
228
+        <DbgClock>10000000</DbgClock>
229
+      </DebugDescription>
230
+    </TargetOption>
231
+  </Target>
232
+
233
+  <Target>
234
+    <TargetName>CibleSondeKEIL</TargetName>
235
+    <ToolsetNumber>0x4</ToolsetNumber>
236
+    <ToolsetName>ARM-ADS</ToolsetName>
237
+    <TargetOption>
238
+      <CLKADS>8000000</CLKADS>
239
+      <OPTTT>
240
+        <gFlags>1</gFlags>
241
+        <BeepAtEnd>1</BeepAtEnd>
242
+        <RunSim>0</RunSim>
243
+        <RunTarget>1</RunTarget>
244
+        <RunAbUc>0</RunAbUc>
245
+      </OPTTT>
246
+      <OPTHX>
247
+        <HexSelection>1</HexSelection>
248
+        <FlashByte>65535</FlashByte>
249
+        <HexRangeLowAddress>0</HexRangeLowAddress>
250
+        <HexRangeHighAddress>0</HexRangeHighAddress>
251
+        <HexOffset>0</HexOffset>
252
+      </OPTHX>
253
+      <OPTLEX>
254
+        <PageWidth>79</PageWidth>
255
+        <PageLength>66</PageLength>
256
+        <TabStop>8</TabStop>
257
+        <ListingPath></ListingPath>
258
+      </OPTLEX>
259
+      <ListingPage>
260
+        <CreateCListing>1</CreateCListing>
261
+        <CreateAListing>1</CreateAListing>
262
+        <CreateLListing>1</CreateLListing>
263
+        <CreateIListing>0</CreateIListing>
264
+        <AsmCond>1</AsmCond>
265
+        <AsmSymb>1</AsmSymb>
266
+        <AsmXref>0</AsmXref>
267
+        <CCond>1</CCond>
268
+        <CCode>0</CCode>
269
+        <CListInc>0</CListInc>
270
+        <CSymb>0</CSymb>
271
+        <LinkerCodeListing>0</LinkerCodeListing>
272
+      </ListingPage>
273
+      <OPTXL>
274
+        <LMap>1</LMap>
275
+        <LComments>1</LComments>
276
+        <LGenerateSymbols>1</LGenerateSymbols>
277
+        <LLibSym>1</LLibSym>
278
+        <LLines>1</LLines>
279
+        <LLocSym>1</LLocSym>
280
+        <LPubSym>1</LPubSym>
281
+        <LXref>0</LXref>
282
+        <LExpSel>0</LExpSel>
283
+      </OPTXL>
284
+      <OPTFL>
285
+        <tvExp>1</tvExp>
286
+        <tvExpOptDlg>0</tvExpOptDlg>
287
+        <IsCurrentTarget>0</IsCurrentTarget>
288
+      </OPTFL>
289
+      <CpuCode>18</CpuCode>
290
+      <DebugOpt>
291
+        <uSim>0</uSim>
292
+        <uTrg>1</uTrg>
293
+        <sLdApp>1</sLdApp>
294
+        <sGomain>1</sGomain>
295
+        <sRbreak>1</sRbreak>
296
+        <sRwatch>1</sRwatch>
297
+        <sRmem>1</sRmem>
298
+        <sRfunc>1</sRfunc>
299
+        <sRbox>1</sRbox>
300
+        <tLdApp>1</tLdApp>
301
+        <tGomain>1</tGomain>
302
+        <tRbreak>1</tRbreak>
303
+        <tRwatch>1</tRwatch>
304
+        <tRmem>1</tRmem>
305
+        <tRfunc>1</tRfunc>
306
+        <tRbox>1</tRbox>
307
+        <tRtrace>1</tRtrace>
308
+        <sRSysVw>1</sRSysVw>
309
+        <tRSysVw>1</tRSysVw>
310
+        <sRunDeb>0</sRunDeb>
311
+        <sLrtime>0</sLrtime>
312
+        <bEvRecOn>1</bEvRecOn>
313
+        <bSchkAxf>0</bSchkAxf>
314
+        <bTchkAxf>0</bTchkAxf>
315
+        <nTsel>0</nTsel>
316
+        <sDll></sDll>
317
+        <sDllPa></sDllPa>
318
+        <sDlgDll></sDlgDll>
319
+        <sDlgPa></sDlgPa>
320
+        <sIfile></sIfile>
321
+        <tDll></tDll>
322
+        <tDllPa></tDllPa>
323
+        <tDlgDll></tDlgDll>
324
+        <tDlgPa></tDlgPa>
325
+        <tIfile></tIfile>
326
+        <pMon>BIN\UL2CM3.DLL</pMon>
327
+      </DebugOpt>
328
+      <TargetDriverDllRegistry>
329
+        <SetRegEntry>
330
+          <Number>0</Number>
331
+          <Key>DLGDARM</Key>
332
+          <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=-1,-1,-1,-1,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>
333
+        </SetRegEntry>
334
+        <SetRegEntry>
335
+          <Number>0</Number>
336
+          <Key>ARMRTXEVENTFLAGS</Key>
337
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
338
+        </SetRegEntry>
339
+        <SetRegEntry>
340
+          <Number>0</Number>
341
+          <Key>DLGTARM</Key>
342
+          <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)</Name>
343
+        </SetRegEntry>
344
+        <SetRegEntry>
345
+          <Number>0</Number>
346
+          <Key>ARMDBGFLAGS</Key>
347
+          <Name>-T0</Name>
348
+        </SetRegEntry>
349
+        <SetRegEntry>
350
+          <Number>0</Number>
351
+          <Key>DLGUARM</Key>
352
+          <Name>(105=-1,-1,-1,-1,0)</Name>
353
+        </SetRegEntry>
354
+        <SetRegEntry>
355
+          <Number>0</Number>
356
+          <Key>UL2CM3</Key>
357
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
358
+        </SetRegEntry>
359
+        <SetRegEntry>
360
+          <Number>0</Number>
361
+          <Key>ST-LINKIII-KEIL_SWO</Key>
362
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
363
+        </SetRegEntry>
364
+      </TargetDriverDllRegistry>
365
+      <Breakpoint/>
366
+      <MemoryWindow1>
367
+        <Mm>
368
+          <WinNumber>1</WinNumber>
369
+          <SubType>257</SubType>
370
+          <ItemText>r0</ItemText>
371
+          <AccSizeX>0</AccSizeX>
372
+        </Mm>
373
+      </MemoryWindow1>
374
+      <Tracepoint>
375
+        <THDelay>0</THDelay>
376
+      </Tracepoint>
377
+      <DebugFlag>
378
+        <trace>0</trace>
379
+        <periodic>1</periodic>
380
+        <aLwin>1</aLwin>
381
+        <aCover>0</aCover>
382
+        <aSer1>0</aSer1>
383
+        <aSer2>0</aSer2>
384
+        <aPa>0</aPa>
385
+        <viewmode>1</viewmode>
386
+        <vrSel>0</vrSel>
387
+        <aSym>0</aSym>
388
+        <aTbox>0</aTbox>
389
+        <AscS1>0</AscS1>
390
+        <AscS2>0</AscS2>
391
+        <AscS3>0</AscS3>
392
+        <aSer3>0</aSer3>
393
+        <eProf>0</eProf>
394
+        <aLa>0</aLa>
395
+        <aPa1>0</aPa1>
396
+        <AscS4>0</AscS4>
397
+        <aSer4>0</aSer4>
398
+        <StkLoc>0</StkLoc>
399
+        <TrcWin>0</TrcWin>
400
+        <newCpu>0</newCpu>
401
+        <uProt>0</uProt>
402
+      </DebugFlag>
403
+      <LintExecutable></LintExecutable>
404
+      <LintConfigFile></LintConfigFile>
405
+      <bLintAuto>0</bLintAuto>
406
+      <bAutoGenD>0</bAutoGenD>
407
+      <LntExFlags>0</LntExFlags>
408
+      <pMisraName></pMisraName>
409
+      <pszMrule></pszMrule>
410
+      <pSingCmds></pSingCmds>
411
+      <pMultCmds></pMultCmds>
412
+      <pMisraNamep></pMisraNamep>
413
+      <pszMrulep></pszMrulep>
414
+      <pSingCmdsp></pSingCmdsp>
415
+      <pMultCmdsp></pMultCmdsp>
416
+      <DebugDescription>
417
+        <Enable>1</Enable>
418
+        <EnableFlashSeq>0</EnableFlashSeq>
419
+        <EnableLog>0</EnableLog>
420
+        <Protocol>2</Protocol>
421
+        <DbgClock>10000000</DbgClock>
422
+      </DebugDescription>
423
+    </TargetOption>
424
+  </Target>
425
+
426
+  <Target>
427
+    <TargetName>CibleSondeST</TargetName>
428
+    <ToolsetNumber>0x4</ToolsetNumber>
429
+    <ToolsetName>ARM-ADS</ToolsetName>
430
+    <TargetOption>
431
+      <CLKADS>8000000</CLKADS>
432
+      <OPTTT>
433
+        <gFlags>1</gFlags>
434
+        <BeepAtEnd>1</BeepAtEnd>
435
+        <RunSim>0</RunSim>
436
+        <RunTarget>1</RunTarget>
437
+        <RunAbUc>0</RunAbUc>
438
+      </OPTTT>
439
+      <OPTHX>
440
+        <HexSelection>1</HexSelection>
441
+        <FlashByte>65535</FlashByte>
442
+        <HexRangeLowAddress>0</HexRangeLowAddress>
443
+        <HexRangeHighAddress>0</HexRangeHighAddress>
444
+        <HexOffset>0</HexOffset>
445
+      </OPTHX>
446
+      <OPTLEX>
447
+        <PageWidth>79</PageWidth>
448
+        <PageLength>66</PageLength>
449
+        <TabStop>8</TabStop>
450
+        <ListingPath></ListingPath>
451
+      </OPTLEX>
452
+      <ListingPage>
453
+        <CreateCListing>1</CreateCListing>
454
+        <CreateAListing>1</CreateAListing>
455
+        <CreateLListing>1</CreateLListing>
456
+        <CreateIListing>0</CreateIListing>
457
+        <AsmCond>1</AsmCond>
458
+        <AsmSymb>1</AsmSymb>
459
+        <AsmXref>0</AsmXref>
460
+        <CCond>1</CCond>
461
+        <CCode>0</CCode>
462
+        <CListInc>0</CListInc>
463
+        <CSymb>0</CSymb>
464
+        <LinkerCodeListing>0</LinkerCodeListing>
465
+      </ListingPage>
466
+      <OPTXL>
467
+        <LMap>1</LMap>
468
+        <LComments>1</LComments>
469
+        <LGenerateSymbols>1</LGenerateSymbols>
470
+        <LLibSym>1</LLibSym>
471
+        <LLines>1</LLines>
472
+        <LLocSym>1</LLocSym>
473
+        <LPubSym>1</LPubSym>
474
+        <LXref>0</LXref>
475
+        <LExpSel>0</LExpSel>
476
+      </OPTXL>
477
+      <OPTFL>
478
+        <tvExp>1</tvExp>
479
+        <tvExpOptDlg>0</tvExpOptDlg>
480
+        <IsCurrentTarget>0</IsCurrentTarget>
481
+      </OPTFL>
482
+      <CpuCode>18</CpuCode>
483
+      <DebugOpt>
484
+        <uSim>0</uSim>
485
+        <uTrg>1</uTrg>
486
+        <sLdApp>1</sLdApp>
487
+        <sGomain>1</sGomain>
488
+        <sRbreak>1</sRbreak>
489
+        <sRwatch>1</sRwatch>
490
+        <sRmem>1</sRmem>
491
+        <sRfunc>1</sRfunc>
492
+        <sRbox>1</sRbox>
493
+        <tLdApp>1</tLdApp>
494
+        <tGomain>1</tGomain>
495
+        <tRbreak>1</tRbreak>
496
+        <tRwatch>1</tRwatch>
497
+        <tRmem>1</tRmem>
498
+        <tRfunc>1</tRfunc>
499
+        <tRbox>1</tRbox>
500
+        <tRtrace>1</tRtrace>
501
+        <sRSysVw>1</sRSysVw>
502
+        <tRSysVw>1</tRSysVw>
503
+        <sRunDeb>0</sRunDeb>
504
+        <sLrtime>0</sLrtime>
505
+        <bEvRecOn>1</bEvRecOn>
506
+        <bSchkAxf>0</bSchkAxf>
507
+        <bTchkAxf>0</bTchkAxf>
508
+        <nTsel>6</nTsel>
509
+        <sDll></sDll>
510
+        <sDllPa></sDllPa>
511
+        <sDlgDll></sDlgDll>
512
+        <sDlgPa></sDlgPa>
513
+        <sIfile></sIfile>
514
+        <tDll></tDll>
515
+        <tDllPa></tDllPa>
516
+        <tDlgDll></tDlgDll>
517
+        <tDlgPa></tDlgPa>
518
+        <tIfile></tIfile>
519
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
520
+      </DebugOpt>
521
+      <TargetDriverDllRegistry>
522
+        <SetRegEntry>
523
+          <Number>0</Number>
524
+          <Key>DLGDARM</Key>
525
+          <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=-1,-1,-1,-1,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>
526
+        </SetRegEntry>
527
+        <SetRegEntry>
528
+          <Number>0</Number>
529
+          <Key>ARMRTXEVENTFLAGS</Key>
530
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
531
+        </SetRegEntry>
532
+        <SetRegEntry>
533
+          <Number>0</Number>
534
+          <Key>DLGTARM</Key>
535
+          <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)</Name>
536
+        </SetRegEntry>
537
+        <SetRegEntry>
538
+          <Number>0</Number>
539
+          <Key>ARMDBGFLAGS</Key>
540
+          <Name>-T0</Name>
541
+        </SetRegEntry>
542
+        <SetRegEntry>
543
+          <Number>0</Number>
544
+          <Key>DLGUARM</Key>
545
+          <Name>(105=-1,-1,-1,-1,0)</Name>
546
+        </SetRegEntry>
547
+        <SetRegEntry>
548
+          <Number>0</Number>
549
+          <Key>UL2CM3</Key>
550
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
551
+        </SetRegEntry>
552
+        <SetRegEntry>
553
+          <Number>0</Number>
554
+          <Key>ST-LINKIII-KEIL_SWO</Key>
555
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
556
+        </SetRegEntry>
557
+      </TargetDriverDllRegistry>
558
+      <Breakpoint/>
559
+      <MemoryWindow1>
560
+        <Mm>
561
+          <WinNumber>1</WinNumber>
562
+          <SubType>257</SubType>
563
+          <ItemText>r0</ItemText>
564
+          <AccSizeX>0</AccSizeX>
565
+        </Mm>
566
+      </MemoryWindow1>
567
+      <Tracepoint>
568
+        <THDelay>0</THDelay>
569
+      </Tracepoint>
570
+      <DebugFlag>
571
+        <trace>0</trace>
572
+        <periodic>1</periodic>
573
+        <aLwin>1</aLwin>
574
+        <aCover>0</aCover>
575
+        <aSer1>0</aSer1>
576
+        <aSer2>0</aSer2>
577
+        <aPa>0</aPa>
578
+        <viewmode>1</viewmode>
579
+        <vrSel>0</vrSel>
580
+        <aSym>0</aSym>
581
+        <aTbox>0</aTbox>
582
+        <AscS1>0</AscS1>
583
+        <AscS2>0</AscS2>
584
+        <AscS3>0</AscS3>
585
+        <aSer3>0</aSer3>
586
+        <eProf>0</eProf>
587
+        <aLa>1</aLa>
588
+        <aPa1>0</aPa1>
589
+        <AscS4>0</AscS4>
590
+        <aSer4>0</aSer4>
591
+        <StkLoc>0</StkLoc>
592
+        <TrcWin>0</TrcWin>
593
+        <newCpu>0</newCpu>
594
+        <uProt>0</uProt>
595
+      </DebugFlag>
596
+      <LintExecutable></LintExecutable>
597
+      <LintConfigFile></LintConfigFile>
598
+      <bLintAuto>0</bLintAuto>
599
+      <bAutoGenD>0</bAutoGenD>
600
+      <LntExFlags>0</LntExFlags>
601
+      <pMisraName></pMisraName>
602
+      <pszMrule></pszMrule>
603
+      <pSingCmds></pSingCmds>
604
+      <pMultCmds></pMultCmds>
605
+      <pMisraNamep></pMisraNamep>
606
+      <pszMrulep></pszMrulep>
607
+      <pSingCmdsp></pSingCmdsp>
608
+      <pMultCmdsp></pMultCmdsp>
609
+      <LogicAnalyzers>
610
+        <Wi>
611
+          <IntNumber>0</IntNumber>
612
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
613
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
614
+        </Wi>
615
+      </LogicAnalyzers>
616
+      <DebugDescription>
617
+        <Enable>1</Enable>
618
+        <EnableFlashSeq>0</EnableFlashSeq>
619
+        <EnableLog>0</EnableLog>
620
+        <Protocol>2</Protocol>
621
+        <DbgClock>10000000</DbgClock>
622
+      </DebugDescription>
623
+    </TargetOption>
624
+  </Target>
625
+
626
+  <Group>
627
+    <GroupName>Sources</GroupName>
628
+    <tvExp>1</tvExp>
629
+    <tvExpOptDlg>0</tvExpOptDlg>
630
+    <cbSel>0</cbSel>
631
+    <RteFlg>0</RteFlg>
632
+    <File>
633
+      <GroupNumber>1</GroupNumber>
634
+      <FileNumber>1</FileNumber>
635
+      <FileType>1</FileType>
636
+      <tvExp>0</tvExp>
637
+      <tvExpOptDlg>0</tvExpOptDlg>
638
+      <bDave2>0</bDave2>
639
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
640
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
641
+      <RteFlg>0</RteFlg>
642
+      <bShared>0</bShared>
643
+    </File>
644
+    <File>
645
+      <GroupNumber>1</GroupNumber>
646
+      <FileNumber>2</FileNumber>
647
+      <FileType>2</FileType>
648
+      <tvExp>0</tvExp>
649
+      <tvExpOptDlg>0</tvExpOptDlg>
650
+      <bDave2>0</bDave2>
651
+      <PathWithFileName>.\Src\Signal.asm</PathWithFileName>
652
+      <FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
653
+      <RteFlg>0</RteFlg>
654
+      <bShared>0</bShared>
655
+    </File>
656
+    <File>
657
+      <GroupNumber>1</GroupNumber>
658
+      <FileNumber>3</FileNumber>
659
+      <FileType>2</FileType>
660
+      <tvExp>0</tvExp>
661
+      <tvExpOptDlg>0</tvExpOptDlg>
662
+      <bDave2>0</bDave2>
663
+      <PathWithFileName>.\Src\DFT.s</PathWithFileName>
664
+      <FilenameWithoutPath>DFT.s</FilenameWithoutPath>
665
+      <RteFlg>0</RteFlg>
666
+      <bShared>0</bShared>
667
+    </File>
668
+  </Group>
669
+
670
+  <Group>
671
+    <GroupName>Sys</GroupName>
672
+    <tvExp>1</tvExp>
673
+    <tvExpOptDlg>0</tvExpOptDlg>
674
+    <cbSel>0</cbSel>
675
+    <RteFlg>0</RteFlg>
676
+    <File>
677
+      <GroupNumber>2</GroupNumber>
678
+      <FileNumber>4</FileNumber>
679
+      <FileType>2</FileType>
680
+      <tvExp>0</tvExp>
681
+      <tvExpOptDlg>0</tvExpOptDlg>
682
+      <bDave2>0</bDave2>
683
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
684
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
685
+      <RteFlg>0</RteFlg>
686
+      <bShared>0</bShared>
687
+    </File>
688
+  </Group>
689
+
690
+  <Group>
691
+    <GroupName>Driver</GroupName>
692
+    <tvExp>1</tvExp>
693
+    <tvExpOptDlg>0</tvExpOptDlg>
694
+    <cbSel>0</cbSel>
695
+    <RteFlg>0</RteFlg>
696
+    <File>
697
+      <GroupNumber>3</GroupNumber>
698
+      <FileNumber>5</FileNumber>
699
+      <FileType>4</FileType>
700
+      <tvExp>0</tvExp>
701
+      <tvExpOptDlg>0</tvExpOptDlg>
702
+      <bDave2>0</bDave2>
703
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
704
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
705
+      <RteFlg>0</RteFlg>
706
+      <bShared>0</bShared>
707
+    </File>
708
+  </Group>
709
+
710
+  <Group>
711
+    <GroupName>::CMSIS</GroupName>
712
+    <tvExp>0</tvExp>
713
+    <tvExpOptDlg>0</tvExpOptDlg>
714
+    <cbSel>0</cbSel>
715
+    <RteFlg>1</RteFlg>
716
+  </Group>
717
+
718
+</ProjectOpt>

+ 1367
- 0
PjtKEIL_StepDFT/StepDFT.uvprojx
File diff suppressed because it is too large
View File


+ 721
- 0
PjtKEIL_StepDeb_1/BacASable.uvoptx View File

@@ -0,0 +1,721 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>0</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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=-1,-1,-1,-1,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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint>
157
+        <Bp>
158
+          <Number>0</Number>
159
+          <Type>0</Type>
160
+          <LineNumber>46</LineNumber>
161
+          <EnabledFlag>1</EnabledFlag>
162
+          <Address>134218700</Address>
163
+          <ByteObject>0</ByteObject>
164
+          <HtxType>0</HtxType>
165
+          <ManyObjects>0</ManyObjects>
166
+          <SizeOfObject>0</SizeOfObject>
167
+          <BreakByAccess>0</BreakByAccess>
168
+          <BreakIfRCount>1</BreakIfRCount>
169
+          <Filename>.\Src\Delay.s</Filename>
170
+          <ExecCommand></ExecCommand>
171
+          <Expression>\\BacASable\Src/Delay.s\46</Expression>
172
+        </Bp>
173
+      </Breakpoint>
174
+      <WatchWindow1>
175
+        <Ww>
176
+          <count>0</count>
177
+          <WinNumber>1</WinNumber>
178
+          <ItemText>VarTime</ItemText>
179
+        </Ww>
180
+      </WatchWindow1>
181
+      <MemoryWindow1>
182
+        <Mm>
183
+          <WinNumber>1</WinNumber>
184
+          <SubType>0</SubType>
185
+          <ItemText>0x20000000</ItemText>
186
+          <AccSizeX>0</AccSizeX>
187
+        </Mm>
188
+      </MemoryWindow1>
189
+      <Tracepoint>
190
+        <THDelay>0</THDelay>
191
+      </Tracepoint>
192
+      <DebugFlag>
193
+        <trace>0</trace>
194
+        <periodic>1</periodic>
195
+        <aLwin>1</aLwin>
196
+        <aCover>0</aCover>
197
+        <aSer1>0</aSer1>
198
+        <aSer2>0</aSer2>
199
+        <aPa>0</aPa>
200
+        <viewmode>1</viewmode>
201
+        <vrSel>0</vrSel>
202
+        <aSym>0</aSym>
203
+        <aTbox>0</aTbox>
204
+        <AscS1>0</AscS1>
205
+        <AscS2>0</AscS2>
206
+        <AscS3>0</AscS3>
207
+        <aSer3>0</aSer3>
208
+        <eProf>0</eProf>
209
+        <aLa>1</aLa>
210
+        <aPa1>0</aPa1>
211
+        <AscS4>0</AscS4>
212
+        <aSer4>0</aSer4>
213
+        <StkLoc>0</StkLoc>
214
+        <TrcWin>0</TrcWin>
215
+        <newCpu>0</newCpu>
216
+        <uProt>0</uProt>
217
+      </DebugFlag>
218
+      <LintExecutable></LintExecutable>
219
+      <LintConfigFile></LintConfigFile>
220
+      <bLintAuto>0</bLintAuto>
221
+      <bAutoGenD>0</bAutoGenD>
222
+      <LntExFlags>0</LntExFlags>
223
+      <pMisraName></pMisraName>
224
+      <pszMrule></pszMrule>
225
+      <pSingCmds></pSingCmds>
226
+      <pMultCmds></pMultCmds>
227
+      <pMisraNamep></pMisraNamep>
228
+      <pszMrulep></pszMrulep>
229
+      <pSingCmdsp></pSingCmdsp>
230
+      <pMultCmdsp></pMultCmdsp>
231
+      <LogicAnalyzers>
232
+        <Wi>
233
+          <IntNumber>0</IntNumber>
234
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
235
+          <SecondString>FF0000000000000000000000000000000000F03F0100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F1800000000000000000000000000000000000000D4030008</SecondString>
236
+        </Wi>
237
+      </LogicAnalyzers>
238
+      <DebugDescription>
239
+        <Enable>1</Enable>
240
+        <EnableFlashSeq>0</EnableFlashSeq>
241
+        <EnableLog>0</EnableLog>
242
+        <Protocol>2</Protocol>
243
+        <DbgClock>10000000</DbgClock>
244
+      </DebugDescription>
245
+    </TargetOption>
246
+  </Target>
247
+
248
+  <Target>
249
+    <TargetName>CibleSondeKEIL</TargetName>
250
+    <ToolsetNumber>0x4</ToolsetNumber>
251
+    <ToolsetName>ARM-ADS</ToolsetName>
252
+    <TargetOption>
253
+      <CLKADS>8000000</CLKADS>
254
+      <OPTTT>
255
+        <gFlags>1</gFlags>
256
+        <BeepAtEnd>1</BeepAtEnd>
257
+        <RunSim>0</RunSim>
258
+        <RunTarget>1</RunTarget>
259
+        <RunAbUc>0</RunAbUc>
260
+      </OPTTT>
261
+      <OPTHX>
262
+        <HexSelection>1</HexSelection>
263
+        <FlashByte>65535</FlashByte>
264
+        <HexRangeLowAddress>0</HexRangeLowAddress>
265
+        <HexRangeHighAddress>0</HexRangeHighAddress>
266
+        <HexOffset>0</HexOffset>
267
+      </OPTHX>
268
+      <OPTLEX>
269
+        <PageWidth>79</PageWidth>
270
+        <PageLength>66</PageLength>
271
+        <TabStop>8</TabStop>
272
+        <ListingPath></ListingPath>
273
+      </OPTLEX>
274
+      <ListingPage>
275
+        <CreateCListing>1</CreateCListing>
276
+        <CreateAListing>1</CreateAListing>
277
+        <CreateLListing>1</CreateLListing>
278
+        <CreateIListing>0</CreateIListing>
279
+        <AsmCond>1</AsmCond>
280
+        <AsmSymb>1</AsmSymb>
281
+        <AsmXref>0</AsmXref>
282
+        <CCond>1</CCond>
283
+        <CCode>0</CCode>
284
+        <CListInc>0</CListInc>
285
+        <CSymb>0</CSymb>
286
+        <LinkerCodeListing>0</LinkerCodeListing>
287
+      </ListingPage>
288
+      <OPTXL>
289
+        <LMap>1</LMap>
290
+        <LComments>1</LComments>
291
+        <LGenerateSymbols>1</LGenerateSymbols>
292
+        <LLibSym>1</LLibSym>
293
+        <LLines>1</LLines>
294
+        <LLocSym>1</LLocSym>
295
+        <LPubSym>1</LPubSym>
296
+        <LXref>0</LXref>
297
+        <LExpSel>0</LExpSel>
298
+      </OPTXL>
299
+      <OPTFL>
300
+        <tvExp>1</tvExp>
301
+        <tvExpOptDlg>0</tvExpOptDlg>
302
+        <IsCurrentTarget>1</IsCurrentTarget>
303
+      </OPTFL>
304
+      <CpuCode>18</CpuCode>
305
+      <DebugOpt>
306
+        <uSim>0</uSim>
307
+        <uTrg>1</uTrg>
308
+        <sLdApp>1</sLdApp>
309
+        <sGomain>1</sGomain>
310
+        <sRbreak>1</sRbreak>
311
+        <sRwatch>1</sRwatch>
312
+        <sRmem>1</sRmem>
313
+        <sRfunc>1</sRfunc>
314
+        <sRbox>1</sRbox>
315
+        <tLdApp>1</tLdApp>
316
+        <tGomain>1</tGomain>
317
+        <tRbreak>1</tRbreak>
318
+        <tRwatch>1</tRwatch>
319
+        <tRmem>1</tRmem>
320
+        <tRfunc>1</tRfunc>
321
+        <tRbox>1</tRbox>
322
+        <tRtrace>1</tRtrace>
323
+        <sRSysVw>1</sRSysVw>
324
+        <tRSysVw>1</tRSysVw>
325
+        <sRunDeb>0</sRunDeb>
326
+        <sLrtime>0</sLrtime>
327
+        <bEvRecOn>1</bEvRecOn>
328
+        <bSchkAxf>0</bSchkAxf>
329
+        <bTchkAxf>0</bTchkAxf>
330
+        <nTsel>0</nTsel>
331
+        <sDll></sDll>
332
+        <sDllPa></sDllPa>
333
+        <sDlgDll></sDlgDll>
334
+        <sDlgPa></sDlgPa>
335
+        <sIfile></sIfile>
336
+        <tDll></tDll>
337
+        <tDllPa></tDllPa>
338
+        <tDlgDll></tDlgDll>
339
+        <tDlgPa></tDlgPa>
340
+        <tIfile></tIfile>
341
+        <pMon>BIN\UL2CM3.DLL</pMon>
342
+      </DebugOpt>
343
+      <TargetDriverDllRegistry>
344
+        <SetRegEntry>
345
+          <Number>0</Number>
346
+          <Key>DLGDARM</Key>
347
+          <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=-1,-1,-1,-1,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>
348
+        </SetRegEntry>
349
+        <SetRegEntry>
350
+          <Number>0</Number>
351
+          <Key>ARMRTXEVENTFLAGS</Key>
352
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
353
+        </SetRegEntry>
354
+        <SetRegEntry>
355
+          <Number>0</Number>
356
+          <Key>DLGTARM</Key>
357
+          <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)</Name>
358
+        </SetRegEntry>
359
+        <SetRegEntry>
360
+          <Number>0</Number>
361
+          <Key>ARMDBGFLAGS</Key>
362
+          <Name>-T0</Name>
363
+        </SetRegEntry>
364
+        <SetRegEntry>
365
+          <Number>0</Number>
366
+          <Key>DLGUARM</Key>
367
+          <Name>(105=-1,-1,-1,-1,0)</Name>
368
+        </SetRegEntry>
369
+        <SetRegEntry>
370
+          <Number>0</Number>
371
+          <Key>UL2CM3</Key>
372
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
373
+        </SetRegEntry>
374
+        <SetRegEntry>
375
+          <Number>0</Number>
376
+          <Key>ST-LINKIII-KEIL_SWO</Key>
377
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
378
+        </SetRegEntry>
379
+      </TargetDriverDllRegistry>
380
+      <Breakpoint/>
381
+      <MemoryWindow1>
382
+        <Mm>
383
+          <WinNumber>1</WinNumber>
384
+          <SubType>257</SubType>
385
+          <ItemText>0x20000000</ItemText>
386
+          <AccSizeX>0</AccSizeX>
387
+        </Mm>
388
+      </MemoryWindow1>
389
+      <Tracepoint>
390
+        <THDelay>0</THDelay>
391
+      </Tracepoint>
392
+      <DebugFlag>
393
+        <trace>0</trace>
394
+        <periodic>1</periodic>
395
+        <aLwin>1</aLwin>
396
+        <aCover>0</aCover>
397
+        <aSer1>0</aSer1>
398
+        <aSer2>0</aSer2>
399
+        <aPa>0</aPa>
400
+        <viewmode>1</viewmode>
401
+        <vrSel>0</vrSel>
402
+        <aSym>0</aSym>
403
+        <aTbox>0</aTbox>
404
+        <AscS1>0</AscS1>
405
+        <AscS2>0</AscS2>
406
+        <AscS3>0</AscS3>
407
+        <aSer3>0</aSer3>
408
+        <eProf>0</eProf>
409
+        <aLa>1</aLa>
410
+        <aPa1>0</aPa1>
411
+        <AscS4>0</AscS4>
412
+        <aSer4>0</aSer4>
413
+        <StkLoc>0</StkLoc>
414
+        <TrcWin>0</TrcWin>
415
+        <newCpu>0</newCpu>
416
+        <uProt>0</uProt>
417
+      </DebugFlag>
418
+      <LintExecutable></LintExecutable>
419
+      <LintConfigFile></LintConfigFile>
420
+      <bLintAuto>0</bLintAuto>
421
+      <bAutoGenD>0</bAutoGenD>
422
+      <LntExFlags>0</LntExFlags>
423
+      <pMisraName></pMisraName>
424
+      <pszMrule></pszMrule>
425
+      <pSingCmds></pSingCmds>
426
+      <pMultCmds></pMultCmds>
427
+      <pMisraNamep></pMisraNamep>
428
+      <pszMrulep></pszMrulep>
429
+      <pSingCmdsp></pSingCmdsp>
430
+      <pMultCmdsp></pMultCmdsp>
431
+      <DebugDescription>
432
+        <Enable>1</Enable>
433
+        <EnableFlashSeq>0</EnableFlashSeq>
434
+        <EnableLog>0</EnableLog>
435
+        <Protocol>2</Protocol>
436
+        <DbgClock>10000000</DbgClock>
437
+      </DebugDescription>
438
+    </TargetOption>
439
+  </Target>
440
+
441
+  <Target>
442
+    <TargetName>CibleSondeST</TargetName>
443
+    <ToolsetNumber>0x4</ToolsetNumber>
444
+    <ToolsetName>ARM-ADS</ToolsetName>
445
+    <TargetOption>
446
+      <CLKADS>8000000</CLKADS>
447
+      <OPTTT>
448
+        <gFlags>1</gFlags>
449
+        <BeepAtEnd>1</BeepAtEnd>
450
+        <RunSim>0</RunSim>
451
+        <RunTarget>1</RunTarget>
452
+        <RunAbUc>0</RunAbUc>
453
+      </OPTTT>
454
+      <OPTHX>
455
+        <HexSelection>1</HexSelection>
456
+        <FlashByte>65535</FlashByte>
457
+        <HexRangeLowAddress>0</HexRangeLowAddress>
458
+        <HexRangeHighAddress>0</HexRangeHighAddress>
459
+        <HexOffset>0</HexOffset>
460
+      </OPTHX>
461
+      <OPTLEX>
462
+        <PageWidth>79</PageWidth>
463
+        <PageLength>66</PageLength>
464
+        <TabStop>8</TabStop>
465
+        <ListingPath></ListingPath>
466
+      </OPTLEX>
467
+      <ListingPage>
468
+        <CreateCListing>1</CreateCListing>
469
+        <CreateAListing>1</CreateAListing>
470
+        <CreateLListing>1</CreateLListing>
471
+        <CreateIListing>0</CreateIListing>
472
+        <AsmCond>1</AsmCond>
473
+        <AsmSymb>1</AsmSymb>
474
+        <AsmXref>0</AsmXref>
475
+        <CCond>1</CCond>
476
+        <CCode>0</CCode>
477
+        <CListInc>0</CListInc>
478
+        <CSymb>0</CSymb>
479
+        <LinkerCodeListing>0</LinkerCodeListing>
480
+      </ListingPage>
481
+      <OPTXL>
482
+        <LMap>1</LMap>
483
+        <LComments>1</LComments>
484
+        <LGenerateSymbols>1</LGenerateSymbols>
485
+        <LLibSym>1</LLibSym>
486
+        <LLines>1</LLines>
487
+        <LLocSym>1</LLocSym>
488
+        <LPubSym>1</LPubSym>
489
+        <LXref>0</LXref>
490
+        <LExpSel>0</LExpSel>
491
+      </OPTXL>
492
+      <OPTFL>
493
+        <tvExp>1</tvExp>
494
+        <tvExpOptDlg>0</tvExpOptDlg>
495
+        <IsCurrentTarget>0</IsCurrentTarget>
496
+      </OPTFL>
497
+      <CpuCode>18</CpuCode>
498
+      <DebugOpt>
499
+        <uSim>0</uSim>
500
+        <uTrg>1</uTrg>
501
+        <sLdApp>1</sLdApp>
502
+        <sGomain>1</sGomain>
503
+        <sRbreak>1</sRbreak>
504
+        <sRwatch>1</sRwatch>
505
+        <sRmem>1</sRmem>
506
+        <sRfunc>1</sRfunc>
507
+        <sRbox>1</sRbox>
508
+        <tLdApp>1</tLdApp>
509
+        <tGomain>1</tGomain>
510
+        <tRbreak>1</tRbreak>
511
+        <tRwatch>1</tRwatch>
512
+        <tRmem>1</tRmem>
513
+        <tRfunc>1</tRfunc>
514
+        <tRbox>1</tRbox>
515
+        <tRtrace>1</tRtrace>
516
+        <sRSysVw>1</sRSysVw>
517
+        <tRSysVw>1</tRSysVw>
518
+        <sRunDeb>0</sRunDeb>
519
+        <sLrtime>0</sLrtime>
520
+        <bEvRecOn>1</bEvRecOn>
521
+        <bSchkAxf>0</bSchkAxf>
522
+        <bTchkAxf>0</bTchkAxf>
523
+        <nTsel>6</nTsel>
524
+        <sDll></sDll>
525
+        <sDllPa></sDllPa>
526
+        <sDlgDll></sDlgDll>
527
+        <sDlgPa></sDlgPa>
528
+        <sIfile></sIfile>
529
+        <tDll></tDll>
530
+        <tDllPa></tDllPa>
531
+        <tDlgDll></tDlgDll>
532
+        <tDlgPa></tDlgPa>
533
+        <tIfile></tIfile>
534
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
535
+      </DebugOpt>
536
+      <TargetDriverDllRegistry>
537
+        <SetRegEntry>
538
+          <Number>0</Number>
539
+          <Key>DLGDARM</Key>
540
+          <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=-1,-1,-1,-1,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>
541
+        </SetRegEntry>
542
+        <SetRegEntry>
543
+          <Number>0</Number>
544
+          <Key>ARMRTXEVENTFLAGS</Key>
545
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
546
+        </SetRegEntry>
547
+        <SetRegEntry>
548
+          <Number>0</Number>
549
+          <Key>DLGTARM</Key>
550
+          <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)</Name>
551
+        </SetRegEntry>
552
+        <SetRegEntry>
553
+          <Number>0</Number>
554
+          <Key>ARMDBGFLAGS</Key>
555
+          <Name>-T0</Name>
556
+        </SetRegEntry>
557
+        <SetRegEntry>
558
+          <Number>0</Number>
559
+          <Key>DLGUARM</Key>
560
+          <Name>(105=-1,-1,-1,-1,0)</Name>
561
+        </SetRegEntry>
562
+        <SetRegEntry>
563
+          <Number>0</Number>
564
+          <Key>UL2CM3</Key>
565
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
566
+        </SetRegEntry>
567
+        <SetRegEntry>
568
+          <Number>0</Number>
569
+          <Key>ST-LINKIII-KEIL_SWO</Key>
570
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
571
+        </SetRegEntry>
572
+      </TargetDriverDllRegistry>
573
+      <Breakpoint/>
574
+      <MemoryWindow1>
575
+        <Mm>
576
+          <WinNumber>1</WinNumber>
577
+          <SubType>257</SubType>
578
+          <ItemText>r0</ItemText>
579
+          <AccSizeX>0</AccSizeX>
580
+        </Mm>
581
+      </MemoryWindow1>
582
+      <Tracepoint>
583
+        <THDelay>0</THDelay>
584
+      </Tracepoint>
585
+      <DebugFlag>
586
+        <trace>0</trace>
587
+        <periodic>1</periodic>
588
+        <aLwin>1</aLwin>
589
+        <aCover>0</aCover>
590
+        <aSer1>0</aSer1>
591
+        <aSer2>0</aSer2>
592
+        <aPa>0</aPa>
593
+        <viewmode>1</viewmode>
594
+        <vrSel>0</vrSel>
595
+        <aSym>0</aSym>
596
+        <aTbox>0</aTbox>
597
+        <AscS1>0</AscS1>
598
+        <AscS2>0</AscS2>
599
+        <AscS3>0</AscS3>
600
+        <aSer3>0</aSer3>
601
+        <eProf>0</eProf>
602
+        <aLa>1</aLa>
603
+        <aPa1>0</aPa1>
604
+        <AscS4>0</AscS4>
605
+        <aSer4>0</aSer4>
606
+        <StkLoc>0</StkLoc>
607
+        <TrcWin>0</TrcWin>
608
+        <newCpu>0</newCpu>
609
+        <uProt>0</uProt>
610
+      </DebugFlag>
611
+      <LintExecutable></LintExecutable>
612
+      <LintConfigFile></LintConfigFile>
613
+      <bLintAuto>0</bLintAuto>
614
+      <bAutoGenD>0</bAutoGenD>
615
+      <LntExFlags>0</LntExFlags>
616
+      <pMisraName></pMisraName>
617
+      <pszMrule></pszMrule>
618
+      <pSingCmds></pSingCmds>
619
+      <pMultCmds></pMultCmds>
620
+      <pMisraNamep></pMisraNamep>
621
+      <pszMrulep></pszMrulep>
622
+      <pSingCmdsp></pSingCmdsp>
623
+      <pMultCmdsp></pMultCmdsp>
624
+      <LogicAnalyzers>
625
+        <Wi>
626
+          <IntNumber>0</IntNumber>
627
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
628
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
629
+        </Wi>
630
+      </LogicAnalyzers>
631
+      <DebugDescription>
632
+        <Enable>1</Enable>
633
+        <EnableFlashSeq>0</EnableFlashSeq>
634
+        <EnableLog>0</EnableLog>
635
+        <Protocol>2</Protocol>
636
+        <DbgClock>10000000</DbgClock>
637
+      </DebugDescription>
638
+    </TargetOption>
639
+  </Target>
640
+
641
+  <Group>
642
+    <GroupName>Sources</GroupName>
643
+    <tvExp>1</tvExp>
644
+    <tvExpOptDlg>0</tvExpOptDlg>
645
+    <cbSel>0</cbSel>
646
+    <RteFlg>0</RteFlg>
647
+    <File>
648
+      <GroupNumber>1</GroupNumber>
649
+      <FileNumber>1</FileNumber>
650
+      <FileType>1</FileType>
651
+      <tvExp>1</tvExp>
652
+      <tvExpOptDlg>0</tvExpOptDlg>
653
+      <bDave2>0</bDave2>
654
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
655
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
656
+      <RteFlg>0</RteFlg>
657
+      <bShared>0</bShared>
658
+    </File>
659
+    <File>
660
+      <GroupNumber>1</GroupNumber>
661
+      <FileNumber>2</FileNumber>
662
+      <FileType>2</FileType>
663
+      <tvExp>0</tvExp>
664
+      <tvExpOptDlg>0</tvExpOptDlg>
665
+      <bDave2>0</bDave2>
666
+      <PathWithFileName>.\Src\Delay.s</PathWithFileName>
667
+      <FilenameWithoutPath>Delay.s</FilenameWithoutPath>
668
+      <RteFlg>0</RteFlg>
669
+      <bShared>0</bShared>
670
+    </File>
671
+  </Group>
672
+
673
+  <Group>
674
+    <GroupName>Sys</GroupName>
675
+    <tvExp>1</tvExp>
676
+    <tvExpOptDlg>0</tvExpOptDlg>
677
+    <cbSel>0</cbSel>
678
+    <RteFlg>0</RteFlg>
679
+    <File>
680
+      <GroupNumber>2</GroupNumber>
681
+      <FileNumber>3</FileNumber>
682
+      <FileType>2</FileType>
683
+      <tvExp>0</tvExp>
684
+      <tvExpOptDlg>0</tvExpOptDlg>
685
+      <bDave2>0</bDave2>
686
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
687
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
688
+      <RteFlg>0</RteFlg>
689
+      <bShared>0</bShared>
690
+    </File>
691
+  </Group>
692
+
693
+  <Group>
694
+    <GroupName>Driver</GroupName>
695
+    <tvExp>1</tvExp>
696
+    <tvExpOptDlg>0</tvExpOptDlg>
697
+    <cbSel>0</cbSel>
698
+    <RteFlg>0</RteFlg>
699
+    <File>
700
+      <GroupNumber>3</GroupNumber>
701
+      <FileNumber>4</FileNumber>
702
+      <FileType>4</FileType>
703
+      <tvExp>0</tvExp>
704
+      <tvExpOptDlg>0</tvExpOptDlg>
705
+      <bDave2>0</bDave2>
706
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
707
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
708
+      <RteFlg>0</RteFlg>
709
+      <bShared>0</bShared>
710
+    </File>
711
+  </Group>
712
+
713
+  <Group>
714
+    <GroupName>::CMSIS</GroupName>
715
+    <tvExp>0</tvExp>
716
+    <tvExpOptDlg>0</tvExpOptDlg>
717
+    <cbSel>0</cbSel>
718
+    <RteFlg>1</RteFlg>
719
+  </Group>
720
+
721
+</ProjectOpt>

+ 1352
- 0
PjtKEIL_StepDeb_1/BacASable.uvprojx
File diff suppressed because it is too large
View File


+ 345
- 0
PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_StepDeb_1/Driver/DriverJeuLaser.lib View File


+ 63
- 0
PjtKEIL_StepDeb_1/Src/Delay.s View File

@@ -0,0 +1,63 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+
9
+
10
+;Section RAM (read write):
11
+	area    maram,data,readwrite
12
+		
13
+VarTime	dcd 0			; VarTime est un entier
14
+
15
+	
16
+; ===============================================================================================
17
+	
18
+;constantes (équivalent du #define en C)
19
+; addr 0x20000000
20
+TimeValue	equ 900000
21
+
22
+
23
+	EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules.
24
+	EXPORT VarTime
25
+		
26
+;Section ROM code (read only) :		
27
+	area    moncode,code,readonly
28
+		
29
+
30
+
31
+; REMARQUE IMPORTANTE 
32
+; Cette manière de créer une temporisation n'est clairement pas 
33
+; la bonne manière de procéder :
34
+; - elle est peu précise
35
+; - la fonction prend tout le temps CPU pour... ne rien faire...
36
+;
37
+; Pour autant, la fonction montre :
38
+; - les boucles en ASM
39
+; - l'accés écr/lec de variable en RAM
40
+; - le mécanisme d'appel / retour sous programme
41
+;
42
+; et donc possède un intérêt pour débuter en ASM pur
43
+
44
+; Temps réel d'exécution : 100,00006 ms
45
+Delay_100ms proc
46
+	
47
+	    ldr r0,=VarTime 		; varTime 
48
+		
49
+		ldr r1,=TimeValue		; r1 := 900000
50
+		str r1,[r0]				; *r0 := 900000
51
+		
52
+BoucleTempo						; LABEL 
53
+		ldr r1,[r0]     		; r1 := 900000
54
+						
55
+		subs r1,#1				; r1 -= 1
56
+		str  r1,[r0]			; *r0 := 900000
57
+		bne	 BoucleTempo		; goto LABEL if r1 > 0
58
+			
59
+		bx lr					; return (pc = lr)
60
+		endp
61
+		
62
+		
63
+	END	

+ 32
- 0
PjtKEIL_StepDeb_1/Src/principal.c View File

@@ -0,0 +1,32 @@
1
+#include "DriverJeuLaser.h"
2
+
3
+extern void Delay_100ms(void);
4
+
5
+
6
+int main(void)
7
+{
8
+
9
+// ===========================================================================
10
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
11
+// ===========================================================================
12
+
13
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
14
+CLOCK_Configure();
15
+
16
+// configuration de PortB.1 (PB1) en sortie push-pull
17
+GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL);
18
+	
19
+	
20
+	
21
+
22
+//============================================================================	
23
+	
24
+	
25
+while	(1)
26
+	{
27
+		Delay_100ms();
28
+		GPIOB_Set(1);
29
+		Delay_100ms();
30
+		GPIOB_Clear(1);
31
+	}
32
+}

+ 335
- 0
PjtKEIL_StepDeb_1/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 714
- 0
PjtKEIL_StepDeb_2/BacASable.uvoptx View File

@@ -0,0 +1,714 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>0</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint>
157
+        <Bp>
158
+          <Number>0</Number>
159
+          <Type>0</Type>
160
+          <LineNumber>30</LineNumber>
161
+          <EnabledFlag>1</EnabledFlag>
162
+          <Address>134220274</Address>
163
+          <ByteObject>0</ByteObject>
164
+          <HtxType>0</HtxType>
165
+          <ManyObjects>0</ManyObjects>
166
+          <SizeOfObject>0</SizeOfObject>
167
+          <BreakByAccess>0</BreakByAccess>
168
+          <BreakIfRCount>1</BreakIfRCount>
169
+          <Filename>.\Src\Cligno.s</Filename>
170
+          <ExecCommand></ExecCommand>
171
+          <Expression>\\BacASable\Src/Cligno.s\30</Expression>
172
+        </Bp>
173
+      </Breakpoint>
174
+      <MemoryWindow1>
175
+        <Mm>
176
+          <WinNumber>1</WinNumber>
177
+          <SubType>257</SubType>
178
+          <ItemText>r0</ItemText>
179
+          <AccSizeX>0</AccSizeX>
180
+        </Mm>
181
+      </MemoryWindow1>
182
+      <Tracepoint>
183
+        <THDelay>0</THDelay>
184
+      </Tracepoint>
185
+      <DebugFlag>
186
+        <trace>0</trace>
187
+        <periodic>1</periodic>
188
+        <aLwin>1</aLwin>
189
+        <aCover>0</aCover>
190
+        <aSer1>0</aSer1>
191
+        <aSer2>0</aSer2>
192
+        <aPa>0</aPa>
193
+        <viewmode>1</viewmode>
194
+        <vrSel>0</vrSel>
195
+        <aSym>0</aSym>
196
+        <aTbox>0</aTbox>
197
+        <AscS1>0</AscS1>
198
+        <AscS2>0</AscS2>
199
+        <AscS3>0</AscS3>
200
+        <aSer3>0</aSer3>
201
+        <eProf>0</eProf>
202
+        <aLa>0</aLa>
203
+        <aPa1>0</aPa1>
204
+        <AscS4>0</AscS4>
205
+        <aSer4>0</aSer4>
206
+        <StkLoc>0</StkLoc>
207
+        <TrcWin>0</TrcWin>
208
+        <newCpu>0</newCpu>
209
+        <uProt>0</uProt>
210
+      </DebugFlag>
211
+      <LintExecutable></LintExecutable>
212
+      <LintConfigFile></LintConfigFile>
213
+      <bLintAuto>0</bLintAuto>
214
+      <bAutoGenD>0</bAutoGenD>
215
+      <LntExFlags>0</LntExFlags>
216
+      <pMisraName></pMisraName>
217
+      <pszMrule></pszMrule>
218
+      <pSingCmds></pSingCmds>
219
+      <pMultCmds></pMultCmds>
220
+      <pMisraNamep></pMisraNamep>
221
+      <pszMrulep></pszMrulep>
222
+      <pSingCmdsp></pSingCmdsp>
223
+      <pMultCmdsp></pMultCmdsp>
224
+      <LogicAnalyzers>
225
+        <Wi>
226
+          <IntNumber>0</IntNumber>
227
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
228
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
229
+        </Wi>
230
+      </LogicAnalyzers>
231
+      <DebugDescription>
232
+        <Enable>1</Enable>
233
+        <EnableFlashSeq>0</EnableFlashSeq>
234
+        <EnableLog>0</EnableLog>
235
+        <Protocol>2</Protocol>
236
+        <DbgClock>10000000</DbgClock>
237
+      </DebugDescription>
238
+    </TargetOption>
239
+  </Target>
240
+
241
+  <Target>
242
+    <TargetName>CibleSondeKEIL</TargetName>
243
+    <ToolsetNumber>0x4</ToolsetNumber>
244
+    <ToolsetName>ARM-ADS</ToolsetName>
245
+    <TargetOption>
246
+      <CLKADS>8000000</CLKADS>
247
+      <OPTTT>
248
+        <gFlags>1</gFlags>
249
+        <BeepAtEnd>1</BeepAtEnd>
250
+        <RunSim>0</RunSim>
251
+        <RunTarget>1</RunTarget>
252
+        <RunAbUc>0</RunAbUc>
253
+      </OPTTT>
254
+      <OPTHX>
255
+        <HexSelection>1</HexSelection>
256
+        <FlashByte>65535</FlashByte>
257
+        <HexRangeLowAddress>0</HexRangeLowAddress>
258
+        <HexRangeHighAddress>0</HexRangeHighAddress>
259
+        <HexOffset>0</HexOffset>
260
+      </OPTHX>
261
+      <OPTLEX>
262
+        <PageWidth>79</PageWidth>
263
+        <PageLength>66</PageLength>
264
+        <TabStop>8</TabStop>
265
+        <ListingPath></ListingPath>
266
+      </OPTLEX>
267
+      <ListingPage>
268
+        <CreateCListing>1</CreateCListing>
269
+        <CreateAListing>1</CreateAListing>
270
+        <CreateLListing>1</CreateLListing>
271
+        <CreateIListing>0</CreateIListing>
272
+        <AsmCond>1</AsmCond>
273
+        <AsmSymb>1</AsmSymb>
274
+        <AsmXref>0</AsmXref>
275
+        <CCond>1</CCond>
276
+        <CCode>0</CCode>
277
+        <CListInc>0</CListInc>
278
+        <CSymb>0</CSymb>
279
+        <LinkerCodeListing>0</LinkerCodeListing>
280
+      </ListingPage>
281
+      <OPTXL>
282
+        <LMap>1</LMap>
283
+        <LComments>1</LComments>
284
+        <LGenerateSymbols>1</LGenerateSymbols>
285
+        <LLibSym>1</LLibSym>
286
+        <LLines>1</LLines>
287
+        <LLocSym>1</LLocSym>
288
+        <LPubSym>1</LPubSym>
289
+        <LXref>0</LXref>
290
+        <LExpSel>0</LExpSel>
291
+      </OPTXL>
292
+      <OPTFL>
293
+        <tvExp>1</tvExp>
294
+        <tvExpOptDlg>0</tvExpOptDlg>
295
+        <IsCurrentTarget>1</IsCurrentTarget>
296
+      </OPTFL>
297
+      <CpuCode>18</CpuCode>
298
+      <DebugOpt>
299
+        <uSim>0</uSim>
300
+        <uTrg>1</uTrg>
301
+        <sLdApp>1</sLdApp>
302
+        <sGomain>1</sGomain>
303
+        <sRbreak>1</sRbreak>
304
+        <sRwatch>1</sRwatch>
305
+        <sRmem>1</sRmem>
306
+        <sRfunc>1</sRfunc>
307
+        <sRbox>1</sRbox>
308
+        <tLdApp>1</tLdApp>
309
+        <tGomain>1</tGomain>
310
+        <tRbreak>1</tRbreak>
311
+        <tRwatch>1</tRwatch>
312
+        <tRmem>1</tRmem>
313
+        <tRfunc>1</tRfunc>
314
+        <tRbox>1</tRbox>
315
+        <tRtrace>1</tRtrace>
316
+        <sRSysVw>1</sRSysVw>
317
+        <tRSysVw>1</tRSysVw>
318
+        <sRunDeb>0</sRunDeb>
319
+        <sLrtime>0</sLrtime>
320
+        <bEvRecOn>1</bEvRecOn>
321
+        <bSchkAxf>0</bSchkAxf>
322
+        <bTchkAxf>0</bTchkAxf>
323
+        <nTsel>0</nTsel>
324
+        <sDll></sDll>
325
+        <sDllPa></sDllPa>
326
+        <sDlgDll></sDlgDll>
327
+        <sDlgPa></sDlgPa>
328
+        <sIfile></sIfile>
329
+        <tDll></tDll>
330
+        <tDllPa></tDllPa>
331
+        <tDlgDll></tDlgDll>
332
+        <tDlgPa></tDlgPa>
333
+        <tIfile></tIfile>
334
+        <pMon>BIN\UL2CM3.DLL</pMon>
335
+      </DebugOpt>
336
+      <TargetDriverDllRegistry>
337
+        <SetRegEntry>
338
+          <Number>0</Number>
339
+          <Key>DLGDARM</Key>
340
+          <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=-1,-1,-1,-1,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>
341
+        </SetRegEntry>
342
+        <SetRegEntry>
343
+          <Number>0</Number>
344
+          <Key>ARMRTXEVENTFLAGS</Key>
345
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
346
+        </SetRegEntry>
347
+        <SetRegEntry>
348
+          <Number>0</Number>
349
+          <Key>DLGTARM</Key>
350
+          <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)</Name>
351
+        </SetRegEntry>
352
+        <SetRegEntry>
353
+          <Number>0</Number>
354
+          <Key>ARMDBGFLAGS</Key>
355
+          <Name>-T0</Name>
356
+        </SetRegEntry>
357
+        <SetRegEntry>
358
+          <Number>0</Number>
359
+          <Key>DLGUARM</Key>
360
+          <Name>(105=-1,-1,-1,-1,0)</Name>
361
+        </SetRegEntry>
362
+        <SetRegEntry>
363
+          <Number>0</Number>
364
+          <Key>UL2CM3</Key>
365
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
366
+        </SetRegEntry>
367
+        <SetRegEntry>
368
+          <Number>0</Number>
369
+          <Key>ST-LINKIII-KEIL_SWO</Key>
370
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
371
+        </SetRegEntry>
372
+      </TargetDriverDllRegistry>
373
+      <Breakpoint/>
374
+      <MemoryWindow1>
375
+        <Mm>
376
+          <WinNumber>1</WinNumber>
377
+          <SubType>257</SubType>
378
+          <ItemText>r0</ItemText>
379
+          <AccSizeX>0</AccSizeX>
380
+        </Mm>
381
+      </MemoryWindow1>
382
+      <Tracepoint>
383
+        <THDelay>0</THDelay>
384
+      </Tracepoint>
385
+      <DebugFlag>
386
+        <trace>0</trace>
387
+        <periodic>1</periodic>
388
+        <aLwin>1</aLwin>
389
+        <aCover>0</aCover>
390
+        <aSer1>0</aSer1>
391
+        <aSer2>0</aSer2>
392
+        <aPa>0</aPa>
393
+        <viewmode>1</viewmode>
394
+        <vrSel>0</vrSel>
395
+        <aSym>0</aSym>
396
+        <aTbox>0</aTbox>
397
+        <AscS1>0</AscS1>
398
+        <AscS2>0</AscS2>
399
+        <AscS3>0</AscS3>
400
+        <aSer3>0</aSer3>
401
+        <eProf>0</eProf>
402
+        <aLa>0</aLa>
403
+        <aPa1>0</aPa1>
404
+        <AscS4>0</AscS4>
405
+        <aSer4>0</aSer4>
406
+        <StkLoc>0</StkLoc>
407
+        <TrcWin>0</TrcWin>
408
+        <newCpu>0</newCpu>
409
+        <uProt>0</uProt>
410
+      </DebugFlag>
411
+      <LintExecutable></LintExecutable>
412
+      <LintConfigFile></LintConfigFile>
413
+      <bLintAuto>0</bLintAuto>
414
+      <bAutoGenD>0</bAutoGenD>
415
+      <LntExFlags>0</LntExFlags>
416
+      <pMisraName></pMisraName>
417
+      <pszMrule></pszMrule>
418
+      <pSingCmds></pSingCmds>
419
+      <pMultCmds></pMultCmds>
420
+      <pMisraNamep></pMisraNamep>
421
+      <pszMrulep></pszMrulep>
422
+      <pSingCmdsp></pSingCmdsp>
423
+      <pMultCmdsp></pMultCmdsp>
424
+      <DebugDescription>
425
+        <Enable>1</Enable>
426
+        <EnableFlashSeq>0</EnableFlashSeq>
427
+        <EnableLog>0</EnableLog>
428
+        <Protocol>2</Protocol>
429
+        <DbgClock>10000000</DbgClock>
430
+      </DebugDescription>
431
+    </TargetOption>
432
+  </Target>
433
+
434
+  <Target>
435
+    <TargetName>CibleSondeST</TargetName>
436
+    <ToolsetNumber>0x4</ToolsetNumber>
437
+    <ToolsetName>ARM-ADS</ToolsetName>
438
+    <TargetOption>
439
+      <CLKADS>8000000</CLKADS>
440
+      <OPTTT>
441
+        <gFlags>1</gFlags>
442
+        <BeepAtEnd>1</BeepAtEnd>
443
+        <RunSim>0</RunSim>
444
+        <RunTarget>1</RunTarget>
445
+        <RunAbUc>0</RunAbUc>
446
+      </OPTTT>
447
+      <OPTHX>
448
+        <HexSelection>1</HexSelection>
449
+        <FlashByte>65535</FlashByte>
450
+        <HexRangeLowAddress>0</HexRangeLowAddress>
451
+        <HexRangeHighAddress>0</HexRangeHighAddress>
452
+        <HexOffset>0</HexOffset>
453
+      </OPTHX>
454
+      <OPTLEX>
455
+        <PageWidth>79</PageWidth>
456
+        <PageLength>66</PageLength>
457
+        <TabStop>8</TabStop>
458
+        <ListingPath></ListingPath>
459
+      </OPTLEX>
460
+      <ListingPage>
461
+        <CreateCListing>1</CreateCListing>
462
+        <CreateAListing>1</CreateAListing>
463
+        <CreateLListing>1</CreateLListing>
464
+        <CreateIListing>0</CreateIListing>
465
+        <AsmCond>1</AsmCond>
466
+        <AsmSymb>1</AsmSymb>
467
+        <AsmXref>0</AsmXref>
468
+        <CCond>1</CCond>
469
+        <CCode>0</CCode>
470
+        <CListInc>0</CListInc>
471
+        <CSymb>0</CSymb>
472
+        <LinkerCodeListing>0</LinkerCodeListing>
473
+      </ListingPage>
474
+      <OPTXL>
475
+        <LMap>1</LMap>
476
+        <LComments>1</LComments>
477
+        <LGenerateSymbols>1</LGenerateSymbols>
478
+        <LLibSym>1</LLibSym>
479
+        <LLines>1</LLines>
480
+        <LLocSym>1</LLocSym>
481
+        <LPubSym>1</LPubSym>
482
+        <LXref>0</LXref>
483
+        <LExpSel>0</LExpSel>
484
+      </OPTXL>
485
+      <OPTFL>
486
+        <tvExp>1</tvExp>
487
+        <tvExpOptDlg>0</tvExpOptDlg>
488
+        <IsCurrentTarget>0</IsCurrentTarget>
489
+      </OPTFL>
490
+      <CpuCode>18</CpuCode>
491
+      <DebugOpt>
492
+        <uSim>0</uSim>
493
+        <uTrg>1</uTrg>
494
+        <sLdApp>1</sLdApp>
495
+        <sGomain>1</sGomain>
496
+        <sRbreak>1</sRbreak>
497
+        <sRwatch>1</sRwatch>
498
+        <sRmem>1</sRmem>
499
+        <sRfunc>1</sRfunc>
500
+        <sRbox>1</sRbox>
501
+        <tLdApp>1</tLdApp>
502
+        <tGomain>1</tGomain>
503
+        <tRbreak>1</tRbreak>
504
+        <tRwatch>1</tRwatch>
505
+        <tRmem>1</tRmem>
506
+        <tRfunc>1</tRfunc>
507
+        <tRbox>1</tRbox>
508
+        <tRtrace>1</tRtrace>
509
+        <sRSysVw>1</sRSysVw>
510
+        <tRSysVw>1</tRSysVw>
511
+        <sRunDeb>0</sRunDeb>
512
+        <sLrtime>0</sLrtime>
513
+        <bEvRecOn>1</bEvRecOn>
514
+        <bSchkAxf>0</bSchkAxf>
515
+        <bTchkAxf>0</bTchkAxf>
516
+        <nTsel>6</nTsel>
517
+        <sDll></sDll>
518
+        <sDllPa></sDllPa>
519
+        <sDlgDll></sDlgDll>
520
+        <sDlgPa></sDlgPa>
521
+        <sIfile></sIfile>
522
+        <tDll></tDll>
523
+        <tDllPa></tDllPa>
524
+        <tDlgDll></tDlgDll>
525
+        <tDlgPa></tDlgPa>
526
+        <tIfile></tIfile>
527
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
528
+      </DebugOpt>
529
+      <TargetDriverDllRegistry>
530
+        <SetRegEntry>
531
+          <Number>0</Number>
532
+          <Key>DLGDARM</Key>
533
+          <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=-1,-1,-1,-1,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>
534
+        </SetRegEntry>
535
+        <SetRegEntry>
536
+          <Number>0</Number>
537
+          <Key>ARMRTXEVENTFLAGS</Key>
538
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
539
+        </SetRegEntry>
540
+        <SetRegEntry>
541
+          <Number>0</Number>
542
+          <Key>DLGTARM</Key>
543
+          <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)</Name>
544
+        </SetRegEntry>
545
+        <SetRegEntry>
546
+          <Number>0</Number>
547
+          <Key>ARMDBGFLAGS</Key>
548
+          <Name>-T0</Name>
549
+        </SetRegEntry>
550
+        <SetRegEntry>
551
+          <Number>0</Number>
552
+          <Key>DLGUARM</Key>
553
+          <Name>(105=-1,-1,-1,-1,0)</Name>
554
+        </SetRegEntry>
555
+        <SetRegEntry>
556
+          <Number>0</Number>
557
+          <Key>UL2CM3</Key>
558
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
559
+        </SetRegEntry>
560
+        <SetRegEntry>
561
+          <Number>0</Number>
562
+          <Key>ST-LINKIII-KEIL_SWO</Key>
563
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
564
+        </SetRegEntry>
565
+      </TargetDriverDllRegistry>
566
+      <Breakpoint/>
567
+      <MemoryWindow1>
568
+        <Mm>
569
+          <WinNumber>1</WinNumber>
570
+          <SubType>257</SubType>
571
+          <ItemText>r0</ItemText>
572
+          <AccSizeX>0</AccSizeX>
573
+        </Mm>
574
+      </MemoryWindow1>
575
+      <Tracepoint>
576
+        <THDelay>0</THDelay>
577
+      </Tracepoint>
578
+      <DebugFlag>
579
+        <trace>0</trace>
580
+        <periodic>1</periodic>
581
+        <aLwin>1</aLwin>
582
+        <aCover>0</aCover>
583
+        <aSer1>0</aSer1>
584
+        <aSer2>0</aSer2>
585
+        <aPa>0</aPa>
586
+        <viewmode>1</viewmode>
587
+        <vrSel>0</vrSel>
588
+        <aSym>0</aSym>
589
+        <aTbox>0</aTbox>
590
+        <AscS1>0</AscS1>
591
+        <AscS2>0</AscS2>
592
+        <AscS3>0</AscS3>
593
+        <aSer3>0</aSer3>
594
+        <eProf>0</eProf>
595
+        <aLa>1</aLa>
596
+        <aPa1>0</aPa1>
597
+        <AscS4>0</AscS4>
598
+        <aSer4>0</aSer4>
599
+        <StkLoc>0</StkLoc>
600
+        <TrcWin>0</TrcWin>
601
+        <newCpu>0</newCpu>
602
+        <uProt>0</uProt>
603
+      </DebugFlag>
604
+      <LintExecutable></LintExecutable>
605
+      <LintConfigFile></LintConfigFile>
606
+      <bLintAuto>0</bLintAuto>
607
+      <bAutoGenD>0</bAutoGenD>
608
+      <LntExFlags>0</LntExFlags>
609
+      <pMisraName></pMisraName>
610
+      <pszMrule></pszMrule>
611
+      <pSingCmds></pSingCmds>
612
+      <pMultCmds></pMultCmds>
613
+      <pMisraNamep></pMisraNamep>
614
+      <pszMrulep></pszMrulep>
615
+      <pSingCmdsp></pSingCmdsp>
616
+      <pMultCmdsp></pMultCmdsp>
617
+      <LogicAnalyzers>
618
+        <Wi>
619
+          <IntNumber>0</IntNumber>
620
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
621
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
622
+        </Wi>
623
+      </LogicAnalyzers>
624
+      <DebugDescription>
625
+        <Enable>1</Enable>
626
+        <EnableFlashSeq>0</EnableFlashSeq>
627
+        <EnableLog>0</EnableLog>
628
+        <Protocol>2</Protocol>
629
+        <DbgClock>10000000</DbgClock>
630
+      </DebugDescription>
631
+    </TargetOption>
632
+  </Target>
633
+
634
+  <Group>
635
+    <GroupName>Sources</GroupName>
636
+    <tvExp>1</tvExp>
637
+    <tvExpOptDlg>0</tvExpOptDlg>
638
+    <cbSel>0</cbSel>
639
+    <RteFlg>0</RteFlg>
640
+    <File>
641
+      <GroupNumber>1</GroupNumber>
642
+      <FileNumber>1</FileNumber>
643
+      <FileType>1</FileType>
644
+      <tvExp>0</tvExp>
645
+      <tvExpOptDlg>0</tvExpOptDlg>
646
+      <bDave2>0</bDave2>
647
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
648
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
649
+      <RteFlg>0</RteFlg>
650
+      <bShared>0</bShared>
651
+    </File>
652
+    <File>
653
+      <GroupNumber>1</GroupNumber>
654
+      <FileNumber>2</FileNumber>
655
+      <FileType>2</FileType>
656
+      <tvExp>0</tvExp>
657
+      <tvExpOptDlg>0</tvExpOptDlg>
658
+      <bDave2>0</bDave2>
659
+      <PathWithFileName>.\Src\Cligno.s</PathWithFileName>
660
+      <FilenameWithoutPath>Cligno.s</FilenameWithoutPath>
661
+      <RteFlg>0</RteFlg>
662
+      <bShared>0</bShared>
663
+    </File>
664
+  </Group>
665
+
666
+  <Group>
667
+    <GroupName>Sys</GroupName>
668
+    <tvExp>1</tvExp>
669
+    <tvExpOptDlg>0</tvExpOptDlg>
670
+    <cbSel>0</cbSel>
671
+    <RteFlg>0</RteFlg>
672
+    <File>
673
+      <GroupNumber>2</GroupNumber>
674
+      <FileNumber>3</FileNumber>
675
+      <FileType>2</FileType>
676
+      <tvExp>0</tvExp>
677
+      <tvExpOptDlg>0</tvExpOptDlg>
678
+      <bDave2>0</bDave2>
679
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
680
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
681
+      <RteFlg>0</RteFlg>
682
+      <bShared>0</bShared>
683
+    </File>
684
+  </Group>
685
+
686
+  <Group>
687
+    <GroupName>Driver</GroupName>
688
+    <tvExp>1</tvExp>
689
+    <tvExpOptDlg>0</tvExpOptDlg>
690
+    <cbSel>0</cbSel>
691
+    <RteFlg>0</RteFlg>
692
+    <File>
693
+      <GroupNumber>3</GroupNumber>
694
+      <FileNumber>4</FileNumber>
695
+      <FileType>4</FileType>
696
+      <tvExp>0</tvExp>
697
+      <tvExpOptDlg>0</tvExpOptDlg>
698
+      <bDave2>0</bDave2>
699
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
700
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
701
+      <RteFlg>0</RteFlg>
702
+      <bShared>0</bShared>
703
+    </File>
704
+  </Group>
705
+
706
+  <Group>
707
+    <GroupName>::CMSIS</GroupName>
708
+    <tvExp>0</tvExp>
709
+    <tvExpOptDlg>0</tvExpOptDlg>
710
+    <cbSel>0</cbSel>
711
+    <RteFlg>1</RteFlg>
712
+  </Group>
713
+
714
+</ProjectOpt>

+ 1352
- 0
PjtKEIL_StepDeb_2/BacASable.uvprojx
File diff suppressed because it is too large
View File


+ 345
- 0
PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_StepDeb_2/Driver/DriverJeuLaser.lib View File


+ 54
- 0
PjtKEIL_StepDeb_2/Src/Cligno.s View File

@@ -0,0 +1,54 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+
9
+
10
+;Section RAM (read write):
11
+	area    maram,data,readwrite
12
+
13
+FlagCligno	dcd 0
14
+		
15
+	export timer_callback
16
+	extern GPIOB_Set
17
+	extern GPIOB_Clear
18
+	
19
+; ===============================================================================================
20
+	
21
+
22
+
23
+		
24
+;Section ROM code (read only) :		
25
+	area    moncode,code,readonly
26
+; écrire le code ici		
27
+
28
+timer_callback
29
+	push {lr}
30
+	ldr r2,=FlagCligno
31
+	ldr r1, [r2]
32
+	
33
+	cmp r1, #1
34
+	beq active_gpio
35
+	
36
+	; ELSE
37
+	mov r0, #1
38
+	bl GPIOB_Clear
39
+	mov r1, #1
40
+	str r1, [r2]
41
+	pop {pc}
42
+
43
+active_gpio
44
+	; IF = 1
45
+	mov r0, #1
46
+	bl GPIOB_Set
47
+	mov r1, #0
48
+	str r1, [r2]
49
+	pop {pc}
50
+	
51
+
52
+		
53
+		
54
+	END	

+ 66
- 0
PjtKEIL_StepDeb_2/Src/principal.c View File

@@ -0,0 +1,66 @@
1
+
2
+
3
+#include "DriverJeuLaser.h"
4
+
5
+void timer_callback(void);
6
+
7
+int main(void)
8
+{
9
+
10
+// ===========================================================================
11
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
12
+// ===========================================================================
13
+
14
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
15
+CLOCK_Configure();
16
+
17
+// configuration du Timer 4 en débordement 100ms
18
+	
19
+//** Placez votre code là ** // 
20
+	
21
+	// T = 1/72 000 000
22
+	Timer_1234_Init_ff( TIM4, 7200000);
23
+	Active_IT_Debordement_Timer( TIM4, 2, timer_callback);
24
+	
25
+	
26
+// Activation des interruptions issues du Timer 4
27
+// Association de la fonction à exécuter lors de l'interruption : timer_callback
28
+// cette fonction (si écrite en ASM) doit être conforme à l'AAPCS
29
+	
30
+//** Placez votre code là ** // 	
31
+	
32
+	
33
+	
34
+// configuration de PortB.1 (PB1) en sortie push-pull
35
+GPIO_Configure(GPIOB, 1, OUTPUT, OUTPUT_PPULL);
36
+	
37
+	
38
+	
39
+
40
+//============================================================================	
41
+	
42
+	
43
+while	(1)
44
+	{
45
+	}
46
+}
47
+
48
+/*
49
+char FlagCligno;
50
+
51
+void timer_callback(void)
52
+{
53
+	if (FlagCligno==1)
54
+	{
55
+		FlagCligno=0;
56
+		GPIOB_Set(1);
57
+	}
58
+	else
59
+	{
60
+		FlagCligno=1;
61
+		GPIOB_Clear(1);
62
+	}
63
+		
64
+}
65
+*/
66
+

+ 335
- 0
PjtKEIL_StepDeb_2/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 78
- 0
PjtKEIL_StepFinal/Driver/Affichage_Valise.h View File

@@ -0,0 +1,78 @@
1
+
2
+/* Fichier devant contenir l'ensemble de fichiers utiles pour le projet LaserQuest
3
+et qui concenent l'affichage sur la valise */
4
+/* mais non disponible en version source pour les étudiants.						*/
5
+
6
+#ifndef _AFFICHAGE_VALISE_H__
7
+#define _AFFICHAGE_VALISE_H__
8
+#include "stm32f10x.h"
9
+
10
+
11
+/**
12
+	* @brief  Initialise les périphériques nécessaires à l'affichage sur la Mallette
13
+	*					et gère la cible active. S'utilise aussi avec les ùmodules affichages simple (pas de mallette)
14
+  * @note   Utilise TIM1, PA5, PA6 pour les cibles, PC7 à PC9 pour SPI émulé
15
+	*					 utilise aussi une interruption sut TIM1, prio 8.
16
+	* @param  none
17
+  * @retval None
18
+  */
19
+void Init_Affichage(void);
20
+
21
+
22
+/**
23
+	* @brief  Prépare l'affichage 2 digit sur l'afficheur demandé
24
+  * @note   Exemple : Prepare_Afficheur(2, 99); 
25
+	*         prépare l'affichage de la valeur 99 sur l'afficheur n°2
26
+	* 			  L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
27
+	* @param  char Aff : de 1 à 4 ; char Valeur de 0 à 99
28
+  * @retval None
29
+  */
30
+void Prepare_Afficheur(char Aff, char Valeur);
31
+
32
+
33
+
34
+void Prepare_Set_Point_Unite(char Aff);
35
+void Prepare_Clear_Point_Unite(char Aff);
36
+
37
+
38
+/**
39
+	* @brief  Prépare l'allumage de la LED demandée
40
+  * @note   Exemple : Prepare_Set_LED(LED_Cible_2); 
41
+	*         prépare l'allumage de la LED correspondant à la cible n°2
42
+	*					L'action est différée à l'exécution de Mise_A_Jour_Afficheurs_LED()
43
+	* @param  voir #define ci-dessous
44
+  * @retval None
45
+  */
46
+void Prepare_Set_LED(char LED);
47
+void Prepare_Clear_LED(char LED);
48
+
49
+
50
+/**
51
+	* @brief  Effectue l'action d'écriture dans le module d'affichage
52
+	*					à partir de tout ce qui a été préparé auparavant.
53
+  * @note   
54
+	* @param  None
55
+  * @retval None
56
+  */
57
+void Mise_A_Jour_Afficheurs_LED(void);
58
+
59
+/**
60
+	* @brief  Spécifie le capteut actif, à savoir celui effectivement relié
61
+	*					aux sorties disponibles sur la malette
62
+  * @note   Exemple : Choix_Capteur(1)        
63
+	* @param  1 à 4
64
+  * @retval None
65
+  */
66
+void Choix_Capteur(char Capteur);
67
+// define utile pour la fonction Prepare_Set_LED et Prepare_Clear_LED
68
+#define LED_LCD_R 5
69
+#define LED_LCD_V  4
70
+#define LED_Cible_4 3
71
+#define LED_Cible_3 2
72
+#define LED_Cible_2 1
73
+#define LED_Cible_1 0
74
+
75
+
76
+
77
+#endif
78
+

+ 345
- 0
PjtKEIL_StepFinal/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_StepFinal/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_StepFinal/Driver/DriverJeuLaser.lib View File


+ 269
- 0
PjtKEIL_StepFinal/Src/DFT.s View File

@@ -0,0 +1,269 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+	
9
+	extern LeSignal
10
+	export DFT_ModuleAuCarre
11
+
12
+
13
+;Section RAM (read write):
14
+	area    maram,data,readwrite
15
+		
16
+
17
+	
18
+; ===============================================================================================
19
+	
20
+
21
+
22
+		
23
+;Section ROM code (read only) :		
24
+	area    moncode,code,readonly
25
+; écrire le code ici	
26
+
27
+; TODO LA PROCHAINE FOIS:
28
+; - Partie Im. copier coller
29
+; - Module (somme quadratique)
30
+; - Tester avec formule page 6
31
+
32
+
33
+; Calcul de la partie réelle i.e.
34
+; SUM(0, M-1): x(n).cos(-2pikn/M)
35
+; Retourne Xreal(k), normé en 5.27
36
+partie_reelle proc
37
+	push {r4, r5, r6, lr}
38
+	; r0 := =LeSignal
39
+	; r1 := k
40
+	ldr r2, =0	; indice boucle
41
+	ldr r3, =0	; X(k)
42
+	
43
+; boucle for r
44
+for_r
45
+	; Calcul de cos(...) fonction de k*n
46
+	ldr r4, =TabCos
47
+	mul r6, r1, r2		; k*n
48
+	and r6, r6, #63		; modulo 64
49
+	lsl r6, #1 			; DCW => 2 octets / valeur
50
+	ldrsh r5, [r4, r6]	; cos(2.pi.k.n/M)
51
+	
52
+	; Récupération de x(n) (r4 utilisable)
53
+	lsl r6, r2, #1
54
+	ldrsh r4, [r0, r6]	; récupération de x(n)
55
+	
56
+	; Ajout à la somme x(n) 4.12 et cos en 1.15, sortie en 5.27
57
+	mul r4, r5			; x(n) * cos(...)
58
+	adds r3, r4			; x(n) += x(n) * cos(...)
59
+	
60
+	add r2, #1 
61
+	cmp r2, #64
62
+	bne for_r
63
+; fin for r
64
+	
65
+	mov r0, r3
66
+	pop {r4, r5, r6, pc}
67
+	endp
68
+		
69
+; Retourne Xim(k), normé en 5.27
70
+partie_imaginaire proc
71
+	push {r4, r5, r6, lr}
72
+	; r0 := =LeSignal
73
+	; r1 := k
74
+	ldr r2, =0	; indice boucle
75
+	ldr r3, =0	; X(k)
76
+	
77
+; boucle for i
78
+for_i
79
+	; Calcul de sin(...) fonction de k*n
80
+	ldr r4, =TabSin
81
+	mul r6, r1, r2		; k*n
82
+	and r6, r6, #63		; modulo 64
83
+	lsl r6, #1 			; DCW => 2 octets / valeur
84
+	ldrsh r5, [r4, r6]	; sin(2.pi.k.n/M)
85
+	
86
+	; Récupération de x(n) (r4 utilisable)
87
+	lsl r6, r2, #1
88
+	ldrsh r4, [r0, r6]	; récupération de x(n)
89
+	
90
+	; Ajout à la somme
91
+	mul r4, r5
92
+	adds r3, r4
93
+	
94
+	add r2, #1 
95
+	cmp r2, #64
96
+	bne for_i
97
+; fin for i
98
+	
99
+	mov r0, r3
100
+	pop {r4, r5, r6, pc}
101
+	endp
102
+
103
+; Retourne le module en 10.22
104
+DFT_ModuleAuCarre proc
105
+	push{r4, r5, lr}
106
+	mov r5, r0
107
+	mov r4, r1
108
+	
109
+	bl partie_reelle
110
+	mov r1, r4
111
+	mov r4, r0
112
+	mov r0, r5
113
+	bl partie_imaginaire
114
+	mov r1, r4
115
+	
116
+	; Re : r0 et Im : r1 en 5.27
117
+	asr r0, #16
118
+	asr r1, #16
119
+	
120
+	; Re : r0 et Im : r1 en 5.11
121
+	mul r0, r0
122
+	mul r1, r1
123
+	
124
+	; Re : r0 et Im : r1 en 10.22
125
+	add r0, r1
126
+	
127
+	pop{r4, r5, pc}
128
+	endp
129
+
130
+
131
+;Section ROM code (read only) :		
132
+	AREA Trigo, DATA, READONLY
133
+; codage fractionnaire 1.15
134
+
135
+TabCos
136
+	DCW	32767	;  0 0x7fff  0.99997
137
+	DCW	32610	;  1 0x7f62  0.99518
138
+	DCW	32138	;  2 0x7d8a  0.98077
139
+	DCW	31357	;  3 0x7a7d  0.95694
140
+	DCW	30274	;  4 0x7642  0.92389
141
+	DCW	28899	;  5 0x70e3  0.88193
142
+	DCW	27246	;  6 0x6a6e  0.83148
143
+	DCW	25330	;  7 0x62f2  0.77301
144
+	DCW	23170	;  8 0x5a82  0.70709
145
+	DCW	20788	;  9 0x5134  0.63440
146
+	DCW	18205	; 10 0x471d  0.55557
147
+	DCW	15447	; 11 0x3c57  0.47141
148
+	DCW	12540	; 12 0x30fc  0.38269
149
+	DCW	 9512	; 13 0x2528  0.29028
150
+	DCW	 6393	; 14 0x18f9  0.19510
151
+	DCW	 3212	; 15 0x0c8c  0.09802
152
+	DCW	    0	; 16 0x0000  0.00000
153
+	DCW	-3212	; 17 0xf374 -0.09802
154
+	DCW	-6393	; 18 0xe707 -0.19510
155
+	DCW	-9512	; 19 0xdad8 -0.29028
156
+	DCW	-12540	; 20 0xcf04 -0.38269
157
+	DCW	-15447	; 21 0xc3a9 -0.47141
158
+	DCW	-18205	; 22 0xb8e3 -0.55557
159
+	DCW	-20788	; 23 0xaecc -0.63440
160
+	DCW	-23170	; 24 0xa57e -0.70709
161
+	DCW	-25330	; 25 0x9d0e -0.77301
162
+	DCW	-27246	; 26 0x9592 -0.83148
163
+	DCW	-28899	; 27 0x8f1d -0.88193
164
+	DCW	-30274	; 28 0x89be -0.92389
165
+	DCW	-31357	; 29 0x8583 -0.95694
166
+	DCW	-32138	; 30 0x8276 -0.98077
167
+	DCW	-32610	; 31 0x809e -0.99518
168
+	DCW	-32768	; 32 0x8000 -1.00000
169
+	DCW	-32610	; 33 0x809e -0.99518
170
+	DCW	-32138	; 34 0x8276 -0.98077
171
+	DCW	-31357	; 35 0x8583 -0.95694
172
+	DCW	-30274	; 36 0x89be -0.92389
173
+	DCW	-28899	; 37 0x8f1d -0.88193
174
+	DCW	-27246	; 38 0x9592 -0.83148
175
+	DCW	-25330	; 39 0x9d0e -0.77301
176
+	DCW	-23170	; 40 0xa57e -0.70709
177
+	DCW	-20788	; 41 0xaecc -0.63440
178
+	DCW	-18205	; 42 0xb8e3 -0.55557
179
+	DCW	-15447	; 43 0xc3a9 -0.47141
180
+	DCW	-12540	; 44 0xcf04 -0.38269
181
+	DCW	-9512	; 45 0xdad8 -0.29028
182
+	DCW	-6393	; 46 0xe707 -0.19510
183
+	DCW	-3212	; 47 0xf374 -0.09802
184
+	DCW	    0	; 48 0x0000  0.00000
185
+	DCW	 3212	; 49 0x0c8c  0.09802
186
+	DCW	 6393	; 50 0x18f9  0.19510
187
+	DCW	 9512	; 51 0x2528  0.29028
188
+	DCW	12540	; 52 0x30fc  0.38269
189
+	DCW	15447	; 53 0x3c57  0.47141
190
+	DCW	18205	; 54 0x471d  0.55557
191
+	DCW	20788	; 55 0x5134  0.63440
192
+	DCW	23170	; 56 0x5a82  0.70709
193
+	DCW	25330	; 57 0x62f2  0.77301
194
+	DCW	27246	; 58 0x6a6e  0.83148
195
+	DCW	28899	; 59 0x70e3  0.88193
196
+	DCW	30274	; 60 0x7642  0.92389
197
+	DCW	31357	; 61 0x7a7d  0.95694
198
+	DCW	32138	; 62 0x7d8a  0.98077
199
+	DCW	32610	; 63 0x7f62  0.99518
200
+TabSin 
201
+	DCW	    0	;  0 0x0000  0.00000
202
+	DCW	 3212	;  1 0x0c8c  0.09802
203
+	DCW	 6393	;  2 0x18f9  0.19510
204
+	DCW	 9512	;  3 0x2528  0.29028
205
+	DCW	12540	;  4 0x30fc  0.38269
206
+	DCW	15447	;  5 0x3c57  0.47141
207
+	DCW	18205	;  6 0x471d  0.55557
208
+	DCW	20788	;  7 0x5134  0.63440
209
+	DCW	23170	;  8 0x5a82  0.70709
210
+	DCW	25330	;  9 0x62f2  0.77301
211
+	DCW	27246	; 10 0x6a6e  0.83148
212
+	DCW	28899	; 11 0x70e3  0.88193
213
+	DCW	30274	; 12 0x7642  0.92389
214
+	DCW	31357	; 13 0x7a7d  0.95694
215
+	DCW	32138	; 14 0x7d8a  0.98077
216
+	DCW	32610	; 15 0x7f62  0.99518
217
+	DCW	32767	; 16 0x7fff  0.99997
218
+	DCW	32610	; 17 0x7f62  0.99518
219
+	DCW	32138	; 18 0x7d8a  0.98077
220
+	DCW	31357	; 19 0x7a7d  0.95694
221
+	DCW	30274	; 20 0x7642  0.92389
222
+	DCW	28899	; 21 0x70e3  0.88193
223
+	DCW	27246	; 22 0x6a6e  0.83148
224
+	DCW	25330	; 23 0x62f2  0.77301
225
+	DCW	23170	; 24 0x5a82  0.70709
226
+	DCW	20788	; 25 0x5134  0.63440
227
+	DCW	18205	; 26 0x471d  0.55557
228
+	DCW	15447	; 27 0x3c57  0.47141
229
+	DCW	12540	; 28 0x30fc  0.38269
230
+	DCW	 9512	; 29 0x2528  0.29028
231
+	DCW	 6393	; 30 0x18f9  0.19510
232
+	DCW	 3212	; 31 0x0c8c  0.09802
233
+	DCW	    0	; 32 0x0000  0.00000
234
+	DCW	-3212	; 33 0xf374 -0.09802
235
+	DCW	-6393	; 34 0xe707 -0.19510
236
+	DCW	-9512	; 35 0xdad8 -0.29028
237
+	DCW	-12540	; 36 0xcf04 -0.38269
238
+	DCW	-15447	; 37 0xc3a9 -0.47141
239
+	DCW	-18205	; 38 0xb8e3 -0.55557
240
+	DCW	-20788	; 39 0xaecc -0.63440
241
+	DCW	-23170	; 40 0xa57e -0.70709
242
+	DCW	-25330	; 41 0x9d0e -0.77301
243
+	DCW	-27246	; 42 0x9592 -0.83148
244
+	DCW	-28899	; 43 0x8f1d -0.88193
245
+	DCW	-30274	; 44 0x89be -0.92389
246
+	DCW	-31357	; 45 0x8583 -0.95694
247
+	DCW	-32138	; 46 0x8276 -0.98077
248
+	DCW	-32610	; 47 0x809e -0.99518
249
+	DCW	-32768	; 48 0x8000 -1.00000
250
+	DCW	-32610	; 49 0x809e -0.99518
251
+	DCW	-32138	; 50 0x8276 -0.98077
252
+	DCW	-31357	; 51 0x8583 -0.95694
253
+	DCW	-30274	; 52 0x89be -0.92389
254
+	DCW	-28899	; 53 0x8f1d -0.88193
255
+	DCW	-27246	; 54 0x9592 -0.83148
256
+	DCW	-25330	; 55 0x9d0e -0.77301
257
+	DCW	-23170	; 56 0xa57e -0.70709
258
+	DCW	-20788	; 57 0xaecc -0.63440
259
+	DCW	-18205	; 58 0xb8e3 -0.55557
260
+	DCW	-15447	; 59 0xc3a9 -0.47141
261
+	DCW	-12540	; 60 0xcf04 -0.38269
262
+	DCW	-9512	; 61 0xdad8 -0.29028
263
+	DCW	-6393	; 62 0xe707 -0.19510
264
+	DCW	-3212	; 63 0xf374 -0.09802
265
+
266
+
267
+		
268
+		
269
+	END	

+ 11
- 0
PjtKEIL_StepFinal/Src/GestionSon.h View File

@@ -0,0 +1,11 @@
1
+#ifndef GESTIONSON_H
2
+#define GESTIONSON_H
3
+
4
+// Permet de jouer le son "Bruit de verre"
5
+void StartSon();
6
+
7
+// Fonction utilitaire qui doit être 
8
+// appellée tous les 6 552 ticks
9
+void CallbackSon();
10
+
11
+#endif

+ 81
- 0
PjtKEIL_StepFinal/Src/GestionSon.s View File

@@ -0,0 +1,81 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+
9
+	extern Son
10
+	extern PWM_Set_Value_TIM3_Ch3
11
+	extern Active_IT_Debordement_Timer
12
+	
13
+	extern Run_Timer
14
+	extern Bloque_Timer
15
+	extern TIM4
16
+
17
+;Section RAM (read write):
18
+	area    maram,data,readwrite
19
+		
20
+			
21
+	
22
+; ===============================================================================================
23
+
24
+	export SortieSon
25
+SortieSon 	DCW	0
26
+offset		DCD 11024
27
+
28
+		
29
+;Section ROM code (read only) :		
30
+	area    moncode,code,readonly
31
+; écrire le code ici		
32
+
33
+	export CallbackSon		
34
+CallbackSon proc
35
+	push {lr}
36
+	ldr r0, =Son
37
+	ldr r3, =offset
38
+	ldr r2, [r3]			; r2 contient l'offset
39
+	ldrsh r0, [r0, r2] 		; r0 contient l'adresse à lire
40
+	
41
+	ldr r1, =11024
42
+	cmp r2, r1
43
+	bgt stop
44
+	add r2, #2
45
+	push {r2}
46
+	
47
+	; Normalisation
48
+	mov r2, #91
49
+	sdiv r0, r0, r2
50
+	add r0, #360
51
+	
52
+	; Output
53
+	ldr r3, =SortieSon
54
+	strh r0, [r3]
55
+	bl PWM_Set_Value_TIM3_Ch3
56
+	
57
+	pop {r2}
58
+	
59
+return
60
+	ldr r3, =offset
61
+	str r2, [r3]
62
+	pop {pc}
63
+	
64
+stop
65
+	b return
66
+	
67
+	endp
68
+		
69
+	
70
+	export StartSon
71
+StartSon proc
72
+	push{lr}
73
+	mov r2, #0
74
+	ldr r3, =offset
75
+	str r2, [r3]
76
+	bl CallbackSon
77
+	pop{pc}
78
+	
79
+	endp
80
+	
81
+	END	

+ 71
- 0
PjtKEIL_StepFinal/Src/Signal.asm View File

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

+ 5527
- 0
PjtKEIL_StepFinal/Src/bruitverre.asm
File diff suppressed because it is too large
View File


+ 116
- 0
PjtKEIL_StepFinal/Src/principal.c View File

@@ -0,0 +1,116 @@
1
+
2
+
3
+#include "DriverJeuLaser.h"
4
+#include "GestionSon.h"
5
+#include "Affichage_Valise.h"
6
+
7
+#define TIMEOUT 100
8
+
9
+int DFT_ModuleAuCarre( short int * Signal64ech, char k);
10
+extern short int LeSignal;
11
+
12
+short int dma_buf[64];
13
+int dft[64];
14
+int dft_joueur[6];
15
+int tab_score[6];
16
+int timeout[6];
17
+
18
+int n_led = 0;
19
+int n_cible = 1;
20
+
21
+void Maj_Cible() {
22
+	Prepare_Clear_LED(n_led);
23
+	
24
+	n_led++;
25
+	n_cible++;
26
+	if (n_cible > 4) {
27
+		n_cible = 1;
28
+	}
29
+	if (n_led > 3) {
30
+		n_led = 0;
31
+	}
32
+	
33
+	Prepare_Set_LED(n_led);
34
+	Choix_Capteur(n_cible);
35
+}
36
+
37
+
38
+void Manage_Tick() {
39
+	Start_DMA1(64);
40
+	Wait_On_End_Of_DMA1();
41
+	
42
+	dft_joueur[0] = DFT_ModuleAuCarre((short *)&dma_buf, 17);
43
+	dft_joueur[1] = DFT_ModuleAuCarre((short *)&dma_buf, 18);
44
+	dft_joueur[2] = DFT_ModuleAuCarre((short *)&dma_buf, 19);
45
+	dft_joueur[3] = DFT_ModuleAuCarre((short *)&dma_buf, 20);
46
+	dft_joueur[4] = DFT_ModuleAuCarre((short *)&dma_buf, 23);
47
+	dft_joueur[5] = DFT_ModuleAuCarre((short *)&dma_buf, 24);
48
+	
49
+	Stop_DMA1;
50
+	
51
+	Mise_A_Jour_Afficheurs_LED();
52
+	
53
+	for (int j = 0; j < 4; ++j) {
54
+		if (timeout[j] > 0){
55
+				timeout[j]--;
56
+		}
57
+		else if (dft_joueur[j] >= 0x0100000) {
58
+			tab_score[j]++;
59
+			timeout[j] = TIMEOUT;
60
+			StartSon();
61
+			Prepare_Afficheur(j+1,tab_score[j]);
62
+			Maj_Cible();
63
+		}
64
+	}
65
+}
66
+
67
+int main(void)
68
+{
69
+
70
+// ===========================================================================
71
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
72
+// ===========================================================================
73
+
74
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
75
+CLOCK_Configure();
76
+	
77
+// SysTick (tick tt les 5 ms avec un clock à 72MHz)
78
+Systick_Period_ff( 360000 );
79
+Systick_Prio_IT( 9, Manage_Tick );
80
+//Systick_Prio_IT( , Manage_Aff );
81
+SysTick_On;
82
+SysTick_Enable_IT;
83
+	
84
+// ADC
85
+Init_TimingADC_ActiveADC_ff( ADC1, 72 );
86
+Single_Channel_ADC( ADC1, 2 );
87
+Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
88
+Init_ADC1_DMA1( 0, dma_buf );
89
+	
90
+// Config Son
91
+GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
92
+Timer_1234_Init_ff(TIM4, 6552);
93
+Active_IT_Debordement_Timer( TIM4, 2, CallbackSon);
94
+PWM_Init_ff( TIM3, 3, 720);
95
+
96
+
97
+// Config affichage
98
+Init_Affichage();
99
+
100
+// Config score
101
+for (int j = 0; j < 6; ++j) {
102
+	tab_score[j] = 0;
103
+	timeout[j] = TIMEOUT;
104
+}
105
+
106
+Prepare_Set_LED(0);
107
+Choix_Capteur(1);
108
+
109
+//============================================================================	
110
+
111
+
112
+while	(1)
113
+	{
114
+	}
115
+}
116
+

+ 335
- 0
PjtKEIL_StepFinal/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 803
- 0
PjtKEIL_StepFinal/StepDFT.uvoptx View File

@@ -0,0 +1,803 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>0</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint/>
157
+      <Tracepoint>
158
+        <THDelay>0</THDelay>
159
+      </Tracepoint>
160
+      <DebugFlag>
161
+        <trace>0</trace>
162
+        <periodic>1</periodic>
163
+        <aLwin>1</aLwin>
164
+        <aCover>0</aCover>
165
+        <aSer1>0</aSer1>
166
+        <aSer2>0</aSer2>
167
+        <aPa>0</aPa>
168
+        <viewmode>1</viewmode>
169
+        <vrSel>0</vrSel>
170
+        <aSym>0</aSym>
171
+        <aTbox>0</aTbox>
172
+        <AscS1>0</AscS1>
173
+        <AscS2>0</AscS2>
174
+        <AscS3>0</AscS3>
175
+        <aSer3>0</aSer3>
176
+        <eProf>0</eProf>
177
+        <aLa>0</aLa>
178
+        <aPa1>0</aPa1>
179
+        <AscS4>0</AscS4>
180
+        <aSer4>0</aSer4>
181
+        <StkLoc>0</StkLoc>
182
+        <TrcWin>0</TrcWin>
183
+        <newCpu>0</newCpu>
184
+        <uProt>0</uProt>
185
+      </DebugFlag>
186
+      <LintExecutable></LintExecutable>
187
+      <LintConfigFile></LintConfigFile>
188
+      <bLintAuto>0</bLintAuto>
189
+      <bAutoGenD>0</bAutoGenD>
190
+      <LntExFlags>0</LntExFlags>
191
+      <pMisraName></pMisraName>
192
+      <pszMrule></pszMrule>
193
+      <pSingCmds></pSingCmds>
194
+      <pMultCmds></pMultCmds>
195
+      <pMisraNamep></pMisraNamep>
196
+      <pszMrulep></pszMrulep>
197
+      <pSingCmdsp></pSingCmdsp>
198
+      <pMultCmdsp></pMultCmdsp>
199
+      <LogicAnalyzers>
200
+        <Wi>
201
+          <IntNumber>0</IntNumber>
202
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
203
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
204
+        </Wi>
205
+      </LogicAnalyzers>
206
+      <DebugDescription>
207
+        <Enable>1</Enable>
208
+        <EnableFlashSeq>0</EnableFlashSeq>
209
+        <EnableLog>0</EnableLog>
210
+        <Protocol>2</Protocol>
211
+        <DbgClock>10000000</DbgClock>
212
+      </DebugDescription>
213
+    </TargetOption>
214
+  </Target>
215
+
216
+  <Target>
217
+    <TargetName>CibleSondeKEIL</TargetName>
218
+    <ToolsetNumber>0x4</ToolsetNumber>
219
+    <ToolsetName>ARM-ADS</ToolsetName>
220
+    <TargetOption>
221
+      <CLKADS>8000000</CLKADS>
222
+      <OPTTT>
223
+        <gFlags>1</gFlags>
224
+        <BeepAtEnd>1</BeepAtEnd>
225
+        <RunSim>0</RunSim>
226
+        <RunTarget>1</RunTarget>
227
+        <RunAbUc>0</RunAbUc>
228
+      </OPTTT>
229
+      <OPTHX>
230
+        <HexSelection>1</HexSelection>
231
+        <FlashByte>65535</FlashByte>
232
+        <HexRangeLowAddress>0</HexRangeLowAddress>
233
+        <HexRangeHighAddress>0</HexRangeHighAddress>
234
+        <HexOffset>0</HexOffset>
235
+      </OPTHX>
236
+      <OPTLEX>
237
+        <PageWidth>79</PageWidth>
238
+        <PageLength>66</PageLength>
239
+        <TabStop>8</TabStop>
240
+        <ListingPath></ListingPath>
241
+      </OPTLEX>
242
+      <ListingPage>
243
+        <CreateCListing>1</CreateCListing>
244
+        <CreateAListing>1</CreateAListing>
245
+        <CreateLListing>1</CreateLListing>
246
+        <CreateIListing>0</CreateIListing>
247
+        <AsmCond>1</AsmCond>
248
+        <AsmSymb>1</AsmSymb>
249
+        <AsmXref>0</AsmXref>
250
+        <CCond>1</CCond>
251
+        <CCode>0</CCode>
252
+        <CListInc>0</CListInc>
253
+        <CSymb>0</CSymb>
254
+        <LinkerCodeListing>0</LinkerCodeListing>
255
+      </ListingPage>
256
+      <OPTXL>
257
+        <LMap>1</LMap>
258
+        <LComments>1</LComments>
259
+        <LGenerateSymbols>1</LGenerateSymbols>
260
+        <LLibSym>1</LLibSym>
261
+        <LLines>1</LLines>
262
+        <LLocSym>1</LLocSym>
263
+        <LPubSym>1</LPubSym>
264
+        <LXref>0</LXref>
265
+        <LExpSel>0</LExpSel>
266
+      </OPTXL>
267
+      <OPTFL>
268
+        <tvExp>1</tvExp>
269
+        <tvExpOptDlg>0</tvExpOptDlg>
270
+        <IsCurrentTarget>1</IsCurrentTarget>
271
+      </OPTFL>
272
+      <CpuCode>18</CpuCode>
273
+      <DebugOpt>
274
+        <uSim>0</uSim>
275
+        <uTrg>1</uTrg>
276
+        <sLdApp>1</sLdApp>
277
+        <sGomain>1</sGomain>
278
+        <sRbreak>1</sRbreak>
279
+        <sRwatch>1</sRwatch>
280
+        <sRmem>1</sRmem>
281
+        <sRfunc>1</sRfunc>
282
+        <sRbox>1</sRbox>
283
+        <tLdApp>1</tLdApp>
284
+        <tGomain>1</tGomain>
285
+        <tRbreak>1</tRbreak>
286
+        <tRwatch>1</tRwatch>
287
+        <tRmem>1</tRmem>
288
+        <tRfunc>1</tRfunc>
289
+        <tRbox>1</tRbox>
290
+        <tRtrace>1</tRtrace>
291
+        <sRSysVw>1</sRSysVw>
292
+        <tRSysVw>1</tRSysVw>
293
+        <sRunDeb>0</sRunDeb>
294
+        <sLrtime>0</sLrtime>
295
+        <bEvRecOn>1</bEvRecOn>
296
+        <bSchkAxf>0</bSchkAxf>
297
+        <bTchkAxf>0</bTchkAxf>
298
+        <nTsel>0</nTsel>
299
+        <sDll></sDll>
300
+        <sDllPa></sDllPa>
301
+        <sDlgDll></sDlgDll>
302
+        <sDlgPa></sDlgPa>
303
+        <sIfile></sIfile>
304
+        <tDll></tDll>
305
+        <tDllPa></tDllPa>
306
+        <tDlgDll></tDlgDll>
307
+        <tDlgPa></tDlgPa>
308
+        <tIfile></tIfile>
309
+        <pMon>BIN\UL2CM3.DLL</pMon>
310
+      </DebugOpt>
311
+      <TargetDriverDllRegistry>
312
+        <SetRegEntry>
313
+          <Number>0</Number>
314
+          <Key>DLGDARM</Key>
315
+          <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=-1,-1,-1,-1,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>
316
+        </SetRegEntry>
317
+        <SetRegEntry>
318
+          <Number>0</Number>
319
+          <Key>ARMRTXEVENTFLAGS</Key>
320
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
321
+        </SetRegEntry>
322
+        <SetRegEntry>
323
+          <Number>0</Number>
324
+          <Key>DLGTARM</Key>
325
+          <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)</Name>
326
+        </SetRegEntry>
327
+        <SetRegEntry>
328
+          <Number>0</Number>
329
+          <Key>ARMDBGFLAGS</Key>
330
+          <Name>-T0</Name>
331
+        </SetRegEntry>
332
+        <SetRegEntry>
333
+          <Number>0</Number>
334
+          <Key>DLGUARM</Key>
335
+          <Name>(105=-1,-1,-1,-1,0)</Name>
336
+        </SetRegEntry>
337
+        <SetRegEntry>
338
+          <Number>0</Number>
339
+          <Key>UL2CM3</Key>
340
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
341
+        </SetRegEntry>
342
+        <SetRegEntry>
343
+          <Number>0</Number>
344
+          <Key>ST-LINKIII-KEIL_SWO</Key>
345
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
346
+        </SetRegEntry>
347
+      </TargetDriverDllRegistry>
348
+      <Breakpoint/>
349
+      <WatchWindow1>
350
+        <Ww>
351
+          <count>0</count>
352
+          <WinNumber>1</WinNumber>
353
+          <ItemText>tab_score[0]</ItemText>
354
+        </Ww>
355
+        <Ww>
356
+          <count>1</count>
357
+          <WinNumber>1</WinNumber>
358
+          <ItemText>tab_score[1]</ItemText>
359
+        </Ww>
360
+        <Ww>
361
+          <count>2</count>
362
+          <WinNumber>1</WinNumber>
363
+          <ItemText>tab_score[2]</ItemText>
364
+        </Ww>
365
+        <Ww>
366
+          <count>3</count>
367
+          <WinNumber>1</WinNumber>
368
+          <ItemText>tab_score[3]</ItemText>
369
+        </Ww>
370
+        <Ww>
371
+          <count>4</count>
372
+          <WinNumber>1</WinNumber>
373
+          <ItemText>dft_joueur[0]</ItemText>
374
+        </Ww>
375
+        <Ww>
376
+          <count>5</count>
377
+          <WinNumber>1</WinNumber>
378
+          <ItemText>dft_joueur[1]</ItemText>
379
+        </Ww>
380
+        <Ww>
381
+          <count>6</count>
382
+          <WinNumber>1</WinNumber>
383
+          <ItemText>dft_joueur[2]</ItemText>
384
+        </Ww>
385
+        <Ww>
386
+          <count>7</count>
387
+          <WinNumber>1</WinNumber>
388
+          <ItemText>dft_joueur[3]</ItemText>
389
+        </Ww>
390
+      </WatchWindow1>
391
+      <MemoryWindow1>
392
+        <Mm>
393
+          <WinNumber>1</WinNumber>
394
+          <SubType>257</SubType>
395
+          <ItemText>r0</ItemText>
396
+          <AccSizeX>0</AccSizeX>
397
+        </Mm>
398
+      </MemoryWindow1>
399
+      <Tracepoint>
400
+        <THDelay>0</THDelay>
401
+      </Tracepoint>
402
+      <DebugFlag>
403
+        <trace>0</trace>
404
+        <periodic>1</periodic>
405
+        <aLwin>1</aLwin>
406
+        <aCover>0</aCover>
407
+        <aSer1>0</aSer1>
408
+        <aSer2>0</aSer2>
409
+        <aPa>0</aPa>
410
+        <viewmode>1</viewmode>
411
+        <vrSel>0</vrSel>
412
+        <aSym>0</aSym>
413
+        <aTbox>0</aTbox>
414
+        <AscS1>0</AscS1>
415
+        <AscS2>0</AscS2>
416
+        <AscS3>0</AscS3>
417
+        <aSer3>0</aSer3>
418
+        <eProf>0</eProf>
419
+        <aLa>0</aLa>
420
+        <aPa1>0</aPa1>
421
+        <AscS4>0</AscS4>
422
+        <aSer4>0</aSer4>
423
+        <StkLoc>0</StkLoc>
424
+        <TrcWin>0</TrcWin>
425
+        <newCpu>0</newCpu>
426
+        <uProt>0</uProt>
427
+      </DebugFlag>
428
+      <LintExecutable></LintExecutable>
429
+      <LintConfigFile></LintConfigFile>
430
+      <bLintAuto>0</bLintAuto>
431
+      <bAutoGenD>0</bAutoGenD>
432
+      <LntExFlags>0</LntExFlags>
433
+      <pMisraName></pMisraName>
434
+      <pszMrule></pszMrule>
435
+      <pSingCmds></pSingCmds>
436
+      <pMultCmds></pMultCmds>
437
+      <pMisraNamep></pMisraNamep>
438
+      <pszMrulep></pszMrulep>
439
+      <pSingCmdsp></pSingCmdsp>
440
+      <pMultCmdsp></pMultCmdsp>
441
+      <DebugDescription>
442
+        <Enable>1</Enable>
443
+        <EnableFlashSeq>0</EnableFlashSeq>
444
+        <EnableLog>0</EnableLog>
445
+        <Protocol>2</Protocol>
446
+        <DbgClock>10000000</DbgClock>
447
+      </DebugDescription>
448
+    </TargetOption>
449
+  </Target>
450
+
451
+  <Target>
452
+    <TargetName>CibleSondeST</TargetName>
453
+    <ToolsetNumber>0x4</ToolsetNumber>
454
+    <ToolsetName>ARM-ADS</ToolsetName>
455
+    <TargetOption>
456
+      <CLKADS>8000000</CLKADS>
457
+      <OPTTT>
458
+        <gFlags>1</gFlags>
459
+        <BeepAtEnd>1</BeepAtEnd>
460
+        <RunSim>0</RunSim>
461
+        <RunTarget>1</RunTarget>
462
+        <RunAbUc>0</RunAbUc>
463
+      </OPTTT>
464
+      <OPTHX>
465
+        <HexSelection>1</HexSelection>
466
+        <FlashByte>65535</FlashByte>
467
+        <HexRangeLowAddress>0</HexRangeLowAddress>
468
+        <HexRangeHighAddress>0</HexRangeHighAddress>
469
+        <HexOffset>0</HexOffset>
470
+      </OPTHX>
471
+      <OPTLEX>
472
+        <PageWidth>79</PageWidth>
473
+        <PageLength>66</PageLength>
474
+        <TabStop>8</TabStop>
475
+        <ListingPath></ListingPath>
476
+      </OPTLEX>
477
+      <ListingPage>
478
+        <CreateCListing>1</CreateCListing>
479
+        <CreateAListing>1</CreateAListing>
480
+        <CreateLListing>1</CreateLListing>
481
+        <CreateIListing>0</CreateIListing>
482
+        <AsmCond>1</AsmCond>
483
+        <AsmSymb>1</AsmSymb>
484
+        <AsmXref>0</AsmXref>
485
+        <CCond>1</CCond>
486
+        <CCode>0</CCode>
487
+        <CListInc>0</CListInc>
488
+        <CSymb>0</CSymb>
489
+        <LinkerCodeListing>0</LinkerCodeListing>
490
+      </ListingPage>
491
+      <OPTXL>
492
+        <LMap>1</LMap>
493
+        <LComments>1</LComments>
494
+        <LGenerateSymbols>1</LGenerateSymbols>
495
+        <LLibSym>1</LLibSym>
496
+        <LLines>1</LLines>
497
+        <LLocSym>1</LLocSym>
498
+        <LPubSym>1</LPubSym>
499
+        <LXref>0</LXref>
500
+        <LExpSel>0</LExpSel>
501
+      </OPTXL>
502
+      <OPTFL>
503
+        <tvExp>1</tvExp>
504
+        <tvExpOptDlg>0</tvExpOptDlg>
505
+        <IsCurrentTarget>0</IsCurrentTarget>
506
+      </OPTFL>
507
+      <CpuCode>18</CpuCode>
508
+      <DebugOpt>
509
+        <uSim>0</uSim>
510
+        <uTrg>1</uTrg>
511
+        <sLdApp>1</sLdApp>
512
+        <sGomain>1</sGomain>
513
+        <sRbreak>1</sRbreak>
514
+        <sRwatch>1</sRwatch>
515
+        <sRmem>1</sRmem>
516
+        <sRfunc>1</sRfunc>
517
+        <sRbox>1</sRbox>
518
+        <tLdApp>1</tLdApp>
519
+        <tGomain>1</tGomain>
520
+        <tRbreak>1</tRbreak>
521
+        <tRwatch>1</tRwatch>
522
+        <tRmem>1</tRmem>
523
+        <tRfunc>1</tRfunc>
524
+        <tRbox>1</tRbox>
525
+        <tRtrace>1</tRtrace>
526
+        <sRSysVw>1</sRSysVw>
527
+        <tRSysVw>1</tRSysVw>
528
+        <sRunDeb>0</sRunDeb>
529
+        <sLrtime>0</sLrtime>
530
+        <bEvRecOn>1</bEvRecOn>
531
+        <bSchkAxf>0</bSchkAxf>
532
+        <bTchkAxf>0</bTchkAxf>
533
+        <nTsel>6</nTsel>
534
+        <sDll></sDll>
535
+        <sDllPa></sDllPa>
536
+        <sDlgDll></sDlgDll>
537
+        <sDlgPa></sDlgPa>
538
+        <sIfile></sIfile>
539
+        <tDll></tDll>
540
+        <tDllPa></tDllPa>
541
+        <tDlgDll></tDlgDll>
542
+        <tDlgPa></tDlgPa>
543
+        <tIfile></tIfile>
544
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
545
+      </DebugOpt>
546
+      <TargetDriverDllRegistry>
547
+        <SetRegEntry>
548
+          <Number>0</Number>
549
+          <Key>DLGDARM</Key>
550
+          <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=-1,-1,-1,-1,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>
551
+        </SetRegEntry>
552
+        <SetRegEntry>
553
+          <Number>0</Number>
554
+          <Key>ARMRTXEVENTFLAGS</Key>
555
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
556
+        </SetRegEntry>
557
+        <SetRegEntry>
558
+          <Number>0</Number>
559
+          <Key>DLGTARM</Key>
560
+          <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)</Name>
561
+        </SetRegEntry>
562
+        <SetRegEntry>
563
+          <Number>0</Number>
564
+          <Key>ARMDBGFLAGS</Key>
565
+          <Name>-T0</Name>
566
+        </SetRegEntry>
567
+        <SetRegEntry>
568
+          <Number>0</Number>
569
+          <Key>DLGUARM</Key>
570
+          <Name>(105=-1,-1,-1,-1,0)</Name>
571
+        </SetRegEntry>
572
+        <SetRegEntry>
573
+          <Number>0</Number>
574
+          <Key>UL2CM3</Key>
575
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
576
+        </SetRegEntry>
577
+        <SetRegEntry>
578
+          <Number>0</Number>
579
+          <Key>ST-LINKIII-KEIL_SWO</Key>
580
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
581
+        </SetRegEntry>
582
+      </TargetDriverDllRegistry>
583
+      <Breakpoint/>
584
+      <MemoryWindow1>
585
+        <Mm>
586
+          <WinNumber>1</WinNumber>
587
+          <SubType>257</SubType>
588
+          <ItemText>r0</ItemText>
589
+          <AccSizeX>0</AccSizeX>
590
+        </Mm>
591
+      </MemoryWindow1>
592
+      <Tracepoint>
593
+        <THDelay>0</THDelay>
594
+      </Tracepoint>
595
+      <DebugFlag>
596
+        <trace>0</trace>
597
+        <periodic>1</periodic>
598
+        <aLwin>1</aLwin>
599
+        <aCover>0</aCover>
600
+        <aSer1>0</aSer1>
601
+        <aSer2>0</aSer2>
602
+        <aPa>0</aPa>
603
+        <viewmode>1</viewmode>
604
+        <vrSel>0</vrSel>
605
+        <aSym>0</aSym>
606
+        <aTbox>0</aTbox>
607
+        <AscS1>0</AscS1>
608
+        <AscS2>0</AscS2>
609
+        <AscS3>0</AscS3>
610
+        <aSer3>0</aSer3>
611
+        <eProf>0</eProf>
612
+        <aLa>1</aLa>
613
+        <aPa1>0</aPa1>
614
+        <AscS4>0</AscS4>
615
+        <aSer4>0</aSer4>
616
+        <StkLoc>0</StkLoc>
617
+        <TrcWin>0</TrcWin>
618
+        <newCpu>0</newCpu>
619
+        <uProt>0</uProt>
620
+      </DebugFlag>
621
+      <LintExecutable></LintExecutable>
622
+      <LintConfigFile></LintConfigFile>
623
+      <bLintAuto>0</bLintAuto>
624
+      <bAutoGenD>0</bAutoGenD>
625
+      <LntExFlags>0</LntExFlags>
626
+      <pMisraName></pMisraName>
627
+      <pszMrule></pszMrule>
628
+      <pSingCmds></pSingCmds>
629
+      <pMultCmds></pMultCmds>
630
+      <pMisraNamep></pMisraNamep>
631
+      <pszMrulep></pszMrulep>
632
+      <pSingCmdsp></pSingCmdsp>
633
+      <pMultCmdsp></pMultCmdsp>
634
+      <LogicAnalyzers>
635
+        <Wi>
636
+          <IntNumber>0</IntNumber>
637
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
638
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
639
+        </Wi>
640
+      </LogicAnalyzers>
641
+      <DebugDescription>
642
+        <Enable>1</Enable>
643
+        <EnableFlashSeq>0</EnableFlashSeq>
644
+        <EnableLog>0</EnableLog>
645
+        <Protocol>2</Protocol>
646
+        <DbgClock>10000000</DbgClock>
647
+      </DebugDescription>
648
+    </TargetOption>
649
+  </Target>
650
+
651
+  <Group>
652
+    <GroupName>Sources</GroupName>
653
+    <tvExp>1</tvExp>
654
+    <tvExpOptDlg>0</tvExpOptDlg>
655
+    <cbSel>0</cbSel>
656
+    <RteFlg>0</RteFlg>
657
+    <File>
658
+      <GroupNumber>1</GroupNumber>
659
+      <FileNumber>1</FileNumber>
660
+      <FileType>1</FileType>
661
+      <tvExp>0</tvExp>
662
+      <tvExpOptDlg>0</tvExpOptDlg>
663
+      <bDave2>0</bDave2>
664
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
665
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
666
+      <RteFlg>0</RteFlg>
667
+      <bShared>0</bShared>
668
+    </File>
669
+    <File>
670
+      <GroupNumber>1</GroupNumber>
671
+      <FileNumber>2</FileNumber>
672
+      <FileType>2</FileType>
673
+      <tvExp>0</tvExp>
674
+      <tvExpOptDlg>0</tvExpOptDlg>
675
+      <bDave2>0</bDave2>
676
+      <PathWithFileName>.\Src\Signal.asm</PathWithFileName>
677
+      <FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
678
+      <RteFlg>0</RteFlg>
679
+      <bShared>0</bShared>
680
+    </File>
681
+    <File>
682
+      <GroupNumber>1</GroupNumber>
683
+      <FileNumber>3</FileNumber>
684
+      <FileType>2</FileType>
685
+      <tvExp>0</tvExp>
686
+      <tvExpOptDlg>0</tvExpOptDlg>
687
+      <bDave2>0</bDave2>
688
+      <PathWithFileName>.\Src\DFT.s</PathWithFileName>
689
+      <FilenameWithoutPath>DFT.s</FilenameWithoutPath>
690
+      <RteFlg>0</RteFlg>
691
+      <bShared>0</bShared>
692
+    </File>
693
+    <File>
694
+      <GroupNumber>1</GroupNumber>
695
+      <FileNumber>4</FileNumber>
696
+      <FileType>2</FileType>
697
+      <tvExp>0</tvExp>
698
+      <tvExpOptDlg>0</tvExpOptDlg>
699
+      <bDave2>0</bDave2>
700
+      <PathWithFileName>.\Src\bruitverre.asm</PathWithFileName>
701
+      <FilenameWithoutPath>bruitverre.asm</FilenameWithoutPath>
702
+      <RteFlg>0</RteFlg>
703
+      <bShared>0</bShared>
704
+    </File>
705
+    <File>
706
+      <GroupNumber>1</GroupNumber>
707
+      <FileNumber>5</FileNumber>
708
+      <FileType>5</FileType>
709
+      <tvExp>0</tvExp>
710
+      <tvExpOptDlg>0</tvExpOptDlg>
711
+      <bDave2>0</bDave2>
712
+      <PathWithFileName>.\Src\GestionSon.h</PathWithFileName>
713
+      <FilenameWithoutPath>GestionSon.h</FilenameWithoutPath>
714
+      <RteFlg>0</RteFlg>
715
+      <bShared>0</bShared>
716
+    </File>
717
+    <File>
718
+      <GroupNumber>1</GroupNumber>
719
+      <FileNumber>6</FileNumber>
720
+      <FileType>2</FileType>
721
+      <tvExp>0</tvExp>
722
+      <tvExpOptDlg>0</tvExpOptDlg>
723
+      <bDave2>0</bDave2>
724
+      <PathWithFileName>.\Src\GestionSon.s</PathWithFileName>
725
+      <FilenameWithoutPath>GestionSon.s</FilenameWithoutPath>
726
+      <RteFlg>0</RteFlg>
727
+      <bShared>0</bShared>
728
+    </File>
729
+  </Group>
730
+
731
+  <Group>
732
+    <GroupName>Sys</GroupName>
733
+    <tvExp>1</tvExp>
734
+    <tvExpOptDlg>0</tvExpOptDlg>
735
+    <cbSel>0</cbSel>
736
+    <RteFlg>0</RteFlg>
737
+    <File>
738
+      <GroupNumber>2</GroupNumber>
739
+      <FileNumber>7</FileNumber>
740
+      <FileType>2</FileType>
741
+      <tvExp>0</tvExp>
742
+      <tvExpOptDlg>0</tvExpOptDlg>
743
+      <bDave2>0</bDave2>
744
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
745
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
746
+      <RteFlg>0</RteFlg>
747
+      <bShared>0</bShared>
748
+    </File>
749
+  </Group>
750
+
751
+  <Group>
752
+    <GroupName>Driver</GroupName>
753
+    <tvExp>1</tvExp>
754
+    <tvExpOptDlg>0</tvExpOptDlg>
755
+    <cbSel>0</cbSel>
756
+    <RteFlg>0</RteFlg>
757
+    <File>
758
+      <GroupNumber>3</GroupNumber>
759
+      <FileNumber>8</FileNumber>
760
+      <FileType>4</FileType>
761
+      <tvExp>0</tvExp>
762
+      <tvExpOptDlg>0</tvExpOptDlg>
763
+      <bDave2>0</bDave2>
764
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
765
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
766
+      <RteFlg>0</RteFlg>
767
+      <bShared>0</bShared>
768
+    </File>
769
+    <File>
770
+      <GroupNumber>3</GroupNumber>
771
+      <FileNumber>9</FileNumber>
772
+      <FileType>5</FileType>
773
+      <tvExp>0</tvExp>
774
+      <tvExpOptDlg>0</tvExpOptDlg>
775
+      <bDave2>0</bDave2>
776
+      <PathWithFileName>.\Driver\Affichage_Valise.h</PathWithFileName>
777
+      <FilenameWithoutPath>Affichage_Valise.h</FilenameWithoutPath>
778
+      <RteFlg>0</RteFlg>
779
+      <bShared>0</bShared>
780
+    </File>
781
+    <File>
782
+      <GroupNumber>3</GroupNumber>
783
+      <FileNumber>10</FileNumber>
784
+      <FileType>3</FileType>
785
+      <tvExp>0</tvExp>
786
+      <tvExpOptDlg>0</tvExpOptDlg>
787
+      <bDave2>0</bDave2>
788
+      <PathWithFileName>.\Obj\affichage_valise.o</PathWithFileName>
789
+      <FilenameWithoutPath>affichage_valise.o</FilenameWithoutPath>
790
+      <RteFlg>0</RteFlg>
791
+      <bShared>0</bShared>
792
+    </File>
793
+  </Group>
794
+
795
+  <Group>
796
+    <GroupName>::CMSIS</GroupName>
797
+    <tvExp>0</tvExp>
798
+    <tvExpOptDlg>0</tvExpOptDlg>
799
+    <cbSel>0</cbSel>
800
+    <RteFlg>1</RteFlg>
801
+  </Group>
802
+
803
+</ProjectOpt>

+ 1442
- 0
PjtKEIL_StepFinal/StepDFT.uvprojx
File diff suppressed because it is too large
View File


+ 345
- 0
PjtKEIL_StepSon/Driver/DriverJeuLaser.h View File

@@ -0,0 +1,345 @@
1
+/**
2
+ * Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+ *
4
+ * GPIO - ADC - Sequenceur - System Timer - PWM - 72 MHz
5
+ * Modifs :
6
+ * enlèvement de tout ce qui est inutile dans le .h 
7
+ * ajout de fonctions GPIO dans le .c pour utilisation en ASM ou en C :
8
+ *  - GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
9
+ *  - GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
10
+ * 
11
+ * ajout d'une fonction qui impose une valeur de PWM (TIM3_CCR3)
12
+ * PWM_Set_Value_On_TIM3_C3( int Val) 
13
+ * permet en ASM ou en C de fixer la valeur de PWM 
14
+ 
15
+ * Ajout de commentaires
16
+ 
17
+ */
18
+#ifndef DRIVERJEULASER_H__
19
+#define DRIVERJEULASER_H__
20
+
21
+#include "stm32f10x.h"
22
+
23
+//**********************************************************************************************************
24
+//---------------------          CONFIGURATION CLOCK DU STM32         --------------------------------------
25
+//**********************************************************************************************************
26
+
27
+/**
28
+	* @brief  Configure l'ensemble des horloges du uC
29
+  * @note   horloge systeme (config statique a 72 MHz pour le STM32F103)
30
+	* @param  None
31
+  * @retval None
32
+  */
33
+void CLOCK_Configure(void);
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+//**********************************************************************************************************
45
+//---------------------          LES TIMERS GENERAL PURPOSE TIM1 à TIM 4      ------------------------------
46
+//**********************************************************************************************************
47
+
48
+/**
49
+	* @brief  Configure un Timer TIM1 à TIM4 avec une périodicité donnée
50
+  * @note   L' horloge des 4 timers a une fréquence de 72MHz
51
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
52
+	* @param  Durée_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
53
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
54
+  * @retval None
55
+  */
56
+void Timer_1234_Init_ff( TIM_TypeDef *Timer, u32 Duree_ticks );
57
+
58
+/**
59
+ * Macros de base pour utiliser les timers
60
+ */
61
+ // bloque le timer
62
+#define Bloque_Timer(Timer) Timer->CR1=(Timer->CR1)&~(1<<0)
63
+// Lance timer
64
+#define Run_Timer(Timer) Timer->CR1=(Timer->CR1)|(1<<0)
65
+
66
+
67
+
68
+/**
69
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement d'un timer
70
+  * @note   
71
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
72
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
73
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
74
+  * @retval None
75
+  */
76
+void Active_IT_Debordement_Timer( TIM_TypeDef *Timer, char Prio, void (*IT_function)(void) );
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+//*********************************************************************************************************
89
+//---------------------               PWM   TIM1 to TIM 4                   ------------------------------
90
+//*********************************************************************************************************
91
+
92
+/**
93
+	* @brief  Configure un timer en PWM 
94
+  * @note   
95
+	* @param  *Timer = TIM1 ou TIM2 ou TIM3 ou TIM4
96
+	* @param  voie : un des 4 canaux possibles 1 à 4.
97
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
98
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
99
+  * @retval Retourne la période  en tick (normalement la même que le param d'entrée sauf si PSC utilisé
100
+  */
101
+unsigned short int PWM_Init_ff( TIM_TypeDef *Timer, char Voie, u32 Periode_ticks );
102
+
103
+
104
+
105
+/**
106
+	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
107
+	* est donc : rcy = Thaut_ticks / Periode_ticks
108
+  * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
109
+	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
110
+  * @retval None
111
+  */
112
+void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+//**********************************************************************************************************
123
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
124
+//**********************************************************************************************************
125
+
126
+/**
127
+	* @brief  Configure le timer Systick avec une périodicité donnée
128
+  * @note   Ce timer ne peut servir qu'à créer des temporisations ou générer des interruption
129
+	*         ce n'est pas à proprement parler un périphérique, il fait partie du Cortex M3
130
+	*         Ce timer est un 24 bits 
131
+	* @param  Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour établir la périodicité
132
+	*          La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
133
+  * @retval None
134
+  */
135
+void Systick_Period_ff( unsigned int Periode_ticks );
136
+
137
+
138
+
139
+/**
140
+	* @brief  Associe une fonction d'interruption (callback) lors du débordement du Systick
141
+  * @note   
142
+	* @param  Prio : niveau de priorité de l'interruption (0 -> priorité max, 15 ->  priorité min)
143
+	* @param  IT_function : le nom de la fonction Callback à appeler lors de l'interruption
144
+  * @retval None
145
+  */
146
+void Systick_Prio_IT( char Prio, void (*Systick_function)(void) );
147
+
148
+
149
+/**
150
+ * Macros de base pour utiliser le Systick 
151
+ */
152
+#define  SysTick_On ((SysTick->CTRL)=(SysTick->CTRL)|1<<0)
153
+#define  SysTick_Off ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<0))
154
+#define  SysTick_Enable_IT ((SysTick->CTRL)=(SysTick->CTRL)|1<<1)
155
+#define  SysTick_Disable_IT ((SysTick->CTRL)=(SysTick->CTRL)& ~(1<<1))
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+//**********************************************************************************************************
171
+//---------------------          LE SYSTICK TIMER, Part of Cortex M3          ------------------------------
172
+//**********************************************************************************************************
173
+
174
+/**
175
+	* @brief  Active l'ADC du STM32, configure la durée de prélèvement de l'échantillon (temps
176
+	* de fermeture du switch d'acquisition
177
+  * @note   
178
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
179
+	* @param  Duree_Ech_ticks : dirée de fermeture du switch d'échantillonnage en Tick d'horloge CPU
180
+	*         exemple pour 1µs on choisira 72.
181
+  * @retval Nombre de Tick réellement pris en compte
182
+  */
183
+unsigned int Init_TimingADC_ActiveADC_ff( ADC_TypeDef * ADC, u32 Duree_Ech_ticks );
184
+
185
+
186
+/**
187
+	* @brief  Sélectionne la voie à convertir
188
+  * @note   Attention, la voie va de 0 à 15 et n'est pas directement lié au n°de GPIO
189
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
190
+	* @param  Voie_ADC : 1 à 15
191
+  * @retval None
192
+  */
193
+void Single_Channel_ADC( ADC_TypeDef * ADC, char Voie_ADC );
194
+
195
+
196
+
197
+
198
+
199
+/**
200
+	* @brief  Permet lier le déclenchement au débordement d'un timer, spécifie également
201
+	*         la période de débordement du timer 
202
+  * @note   pas besoin de régler le timer avec une autre fonction dédiée timer
203
+	* @param  ADC : précise de quel ADC il s'agit, ADC1 ou ADC2
204
+	* @param  Source : indique le timer qui déclenche l'ADC choix dans les define ci-dessous
205
+	* @param	Periode_ticks : nombre de pas (tick) comptés à 72 MHz pour faire déborder le timer 
206
+	*         La période de débordement du Timer est donc T = Durée_ticks * Tck, avec Tck = 1/72 000 000
207
+  * @retval None
208
+  */
209
+
210
+// param pour Source :
211
+#define TIM1_CC1 0
212
+#define TIM1_CC2 1
213
+#define TIM1_CC3 2
214
+#define TIM2_CC2 3
215
+#define TIM4_CC4 5
216
+void Init_Conversion_On_Trig_Timer_ff( ADC_TypeDef * ADC, char Source, u32 Periode_ticks );
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+//**********************************************************************************************************
233
+//---------------------           ANALOG INPUT  ADC & DMA                     ------------------------------
234
+//**********************************************************************************************************
235
+
236
+/**
237
+	* @brief  Permer de lier l'ADC à un tableau en RAM pour une DMA 
238
+  * @note   
239
+	* @param  Circ : circular. Si '0', en fin de DMA le ptr d'@ reste inchangé
240
+	*         si '1' le ptr d'@ se recale à celle du début.
241
+	* @param  Ptr_Table_DMA : contient l'@ de début de zone RAM à écrire
242
+	* @retval None
243
+  */
244
+void Init_ADC1_DMA1(char Circ, short int *Ptr_Table_DMA);
245
+
246
+
247
+
248
+
249
+
250
+/**
251
+	* @brief  Lance une DMA sur le nombre de points spécifie. Les resultats seront stockes
252
+	*         dans la zone de RAM écrite est indiquée lors de l'appel de la fonction  Init_ADC1_DMA1 
253
+  * @note   
254
+	* @param  NbEchDMA est le nombre d'échantillons à stocker.
255
+	* @retval None
256
+  */
257
+void Start_DMA1( u16 NbEchDMA );
258
+
259
+// arret DMA
260
+#define  Stop_DMA1 DMA1_Channel1->CCR =(DMA1_Channel1->CCR) &~0x1;
261
+
262
+
263
+/**
264
+	* @brief  Attend la fin d'un cycle de DMA. la duree depend de la periode d'acquisition 
265
+	* et du nombre d'echantillons
266
+  * @note   fonction d'attente (bloquante) 
267
+	* @param  None
268
+	* @retval None
269
+  */
270
+void Wait_On_End_Of_DMA1(void);
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+//**********************************************************************************************************
280
+//---------------------                   GPIO                                ------------------------------
281
+//**********************************************************************************************************
282
+
283
+/**
284
+	* @brief  Initialisation d'un GPIO (A à C), pin x. 
285
+  *  			peut être configuré :
286
+	*  			-> Input ou output
287
+	*       -> architecture technologique (push-pull, open drain...)
288
+	
289
+  * @note   
290
+	* @param  Port : GPIOA, GPIOB, GPIOC
291
+	* @param  Broche : 0 à 15
292
+	* @param  Sens : INPUT ou OUTPUT
293
+	* @param  Techno : voir define ci dessous
294
+	* @retval 1 erreur, 0 si OK
295
+  */
296
+
297
+// Sens
298
+#define INPUT   'i'
299
+#define OUTPUT  'o'
300
+
301
+// Techno pour pin en entrée (INPUT)
302
+#define ANALOG              0
303
+#define INPUT_FLOATING      1
304
+#define INPUT_PULL_DOWN_UP  2
305
+
306
+// Techno pour pin en sortie (OUTPUT)
307
+#define OUTPUT_PPULL    0
308
+#define OUTPUT_OPDRAIN  1
309
+#define ALT_PPULL       2
310
+#define ALT_OPDRAIN     3
311
+
312
+// Exemple :
313
+// Port_IO_Init(GPIOB, 8, OUTPUT, OUTPUT_PPULL);
314
+// Place le bit 8 du port B en sortie Push-pull
315
+char GPIO_Configure(GPIO_TypeDef * Port, int Broche, int Sens, int Techno);
316
+
317
+
318
+/**
319
+	* @brief  Mise à 1 d'une broche GPIO	
320
+  * @note   Une fonction par GPIO
321
+	* @param  Broche : 0 à 15
322
+	* @retval None
323
+  */
324
+
325
+void GPIOA_Set(char Broche);
326
+void GPIOB_Set(char Broche);
327
+void GPIOC_Set(char Broche);
328
+
329
+
330
+
331
+/**
332
+	* @brief  Mise à 0 d'une broche GPIO	
333
+  * @note   Une fonction par GPIO
334
+	* @param  Broche : 0 à 15
335
+	* @retval None
336
+  */
337
+
338
+void GPIOA_Clear(char Broche);
339
+void GPIOB_Clear(char Broche);
340
+void GPIOC_Clear(char Broche);
341
+
342
+
343
+#endif
344
+
345
+

+ 56
- 0
PjtKEIL_StepSon/Driver/DriverJeuLaser.inc View File

@@ -0,0 +1,56 @@
1
+
2
+; Bibliotheque DriverJeuLaser (ancienne gassp72 adaptée 2021 - TR)
3
+; Accès en aux fonctions suivantes :
4
+; GPIO :
5
+; GPIOA_Set(char Broche), GPIOB_Set(char Broche), GPIOC_Set(char Broche)
6
+; GPIOA_Clear(char Broche), GPIOB_Clear(char Broche), GPIOC_Clear(char Broche)
7
+  
8
+; PWM :
9
+;/**
10
+;	* @brief  Fixe une valeur de PWM, Val, en tick horloge. La rapport cyclique effectif
11
+;	* est donc : rcy = Thaut_ticks / Periode_ticks
12
+; * @note   spécifique Jeu Laser, PWM liée exclusivement au TIM3, chan3
13
+;	* @param  Thaut_ticks : durée de l'état haut d'une impulsion en Ticks
14
+;  * @retval None
15
+; */
16
+
17
+;void PWM_Set_Value_TIM3_Ch3( unsigned short int Thaut_ticks);
18
+	import PWM_Set_Value_TIM3_Ch3
19
+
20
+
21
+
22
+;/**
23
+;	* @brief  Mise à 1 d'une broche GPIO	
24
+;  * @note   Une fonction par GPIO
25
+;	* @param  Broche : 0 à 15
26
+;	* @retval None
27
+; */
28
+
29
+;void GPIOA_Set(char Broche);
30
+	import GPIOA_Set
31
+
32
+;void GPIOB_Set(char Broche);
33
+	import GPIOB_Set
34
+
35
+;void GPIOC_Set(char Broche);
36
+	import GPIOC_Set
37
+
38
+
39
+
40
+;/**
41
+;	* @brief  Mise à 0 d'une broche GPIO	
42
+;  * @note   Une fonction par GPIO
43
+;	* @param  Broche : 0 à 15
44
+;	* @retval None
45
+;  */
46
+
47
+;void GPIOA_Clear(char Broche);
48
+	import GPIOA_Clear
49
+
50
+;void GPIOB_Clear(char Broche);
51
+	import GPIOB_Clear
52
+
53
+;void GPIOC_Clear(char Broche);
54
+	import GPIOC_Clear
55
+
56
+	end

BIN
PjtKEIL_StepSon/Driver/DriverJeuLaser.lib View File


+ 11
- 0
PjtKEIL_StepSon/Src/GestionSon.h View File

@@ -0,0 +1,11 @@
1
+#ifndef GESTIONSON_H
2
+#define GESTIONSON_H
3
+
4
+// Permet de jouer le son "Bruit de verre"
5
+void StartSon();
6
+
7
+// Fonction utilitaire qui doit être 
8
+// appellée tous les 6 552 ticks
9
+void CallbackSon();
10
+
11
+#endif

+ 81
- 0
PjtKEIL_StepSon/Src/GestionSon.s View File

@@ -0,0 +1,81 @@
1
+	PRESERVE8
2
+	THUMB   
3
+		
4
+
5
+; ====================== zone de réservation de données,  ======================================
6
+;Section RAM (read only) :
7
+	area    mesdata,data,readonly
8
+
9
+	extern Son
10
+	extern PWM_Set_Value_TIM3_Ch3
11
+	extern Active_IT_Debordement_Timer
12
+	
13
+	extern Run_Timer
14
+	extern Bloque_Timer
15
+	extern TIM4
16
+
17
+;Section RAM (read write):
18
+	area    maram,data,readwrite
19
+		
20
+			
21
+	
22
+; ===============================================================================================
23
+
24
+	export SortieSon
25
+SortieSon 	DCW	0
26
+offset		DCD 11024
27
+
28
+		
29
+;Section ROM code (read only) :		
30
+	area    moncode,code,readonly
31
+; écrire le code ici		
32
+
33
+	export CallbackSon		
34
+CallbackSon proc
35
+	push {lr}
36
+	ldr r0, =Son
37
+	ldr r3, =offset
38
+	ldr r2, [r3]			; r2 contient l'offset
39
+	ldrsh r0, [r0, r2] 		; r0 contient l'adresse à lire
40
+	add r2, #2
41
+	
42
+	ldr r1, =11024
43
+	cmp r2, r1
44
+	bgt stop
45
+	push {r2}
46
+	
47
+	; Normalisation
48
+	mov r2, #91
49
+	sdiv r0, r0, r2
50
+	add r0, #360
51
+	
52
+	; Output
53
+	ldr r3, =SortieSon
54
+	strh r0, [r3]
55
+	bl PWM_Set_Value_TIM3_Ch3
56
+	
57
+	pop {r2}
58
+	
59
+return
60
+	ldr r3, =offset
61
+	str r2, [r3]
62
+	pop {pc}
63
+	
64
+stop
65
+	b return
66
+	
67
+	endp
68
+		
69
+	
70
+	export StartSon
71
+StartSon proc
72
+	push{lr}
73
+	mov r2, #0
74
+	ldr r3, =offset
75
+	str r2, [r3]
76
+	bl CallbackSon
77
+	pop{pc}
78
+	
79
+	endp
80
+	
81
+	END	

+ 5527
- 0
PjtKEIL_StepSon/Src/bruitverre.asm
File diff suppressed because it is too large
View File


+ 36
- 0
PjtKEIL_StepSon/Src/principal.c View File

@@ -0,0 +1,36 @@
1
+
2
+
3
+#include "DriverJeuLaser.h"
4
+#include "GestionSon.h"
5
+
6
+int main(void)
7
+{
8
+
9
+// ===========================================================================
10
+// ============= INIT PERIPH (faites qu'une seule fois)  =====================
11
+// ===========================================================================
12
+
13
+// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
14
+CLOCK_Configure();
15
+GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL);
16
+	
17
+// On calcul la période : 0,000091 / (1 / 72M) = 6 552
18
+Timer_1234_Init_ff(TIM4, 6552);
19
+	
20
+// Comment mettre cette fonction dans un code ASM ??
21
+Active_IT_Debordement_Timer( TIM4, 2, CallbackSon);
22
+	
23
+PWM_Init_ff( TIM3, 3, 720);
24
+//PWM_Set_Value_TIM3_Ch3(360);
25
+
26
+
27
+	
28
+
29
+//============================================================================	
30
+	for (int i = 0; i < 5000000; ++i){;}
31
+	StartSon();
32
+	while	(1)
33
+		{
34
+		}
35
+}
36
+

+ 335
- 0
PjtKEIL_StepSon/Src/startup-rvds.s View File

@@ -0,0 +1,335 @@
1
+;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
2
+;* File Name          : startup_stm32f10x_md.s
3
+;* Author             : MCD Application Team
4
+;* Version            : V3.5.0
5
+;* Date               : 11-March-2011
6
+;* Description        : STM32F10x Medium Density Devices vector table for MDK-ARM 
7
+;*                      toolchain.  
8
+;*                      This module performs:
9
+;*                      - Set the initial SP
10
+;*                      - Set the initial PC == Reset_Handler
11
+;*                      - Set the vector table entries with the exceptions ISR address
12
+;*                      - Configure the clock system
13
+;*                      - Branches to __main in the C library (which eventually
14
+;*                        calls main()).
15
+;*                      After Reset the CortexM3 processor is in Thread mode,
16
+;*                      priority is Privileged, and the Stack is set to Main.
17
+;* <<< Use Configuration Wizard in Context Menu >>>   
18
+;*******************************************************************************
19
+; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
20
+; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
21
+; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
22
+; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
23
+; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
24
+; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
25
+;*******************************************************************************
26
+
27
+; Amount of memory (in bytes) allocated for Stack
28
+; Tailor this value to your application needs
29
+; <h> Stack Configuration
30
+;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31
+; </h>
32
+
33
+Stack_Size      EQU     0x00000400
34
+
35
+                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36
+Stack_Mem       SPACE   Stack_Size
37
+__initial_sp
38
+
39
+
40
+; <h> Heap Configuration
41
+;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42
+; </h>
43
+
44
+Heap_Size       EQU     0x00000200
45
+
46
+                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47
+__heap_base
48
+Heap_Mem        SPACE   Heap_Size
49
+__heap_limit
50
+
51
+                PRESERVE8
52
+                THUMB
53
+
54
+
55
+; Vector Table Mapped to Address 0 at Reset
56
+                AREA    RESET, DATA, READONLY
57
+                EXPORT  __Vectors
58
+                EXPORT  __Vectors_End
59
+                EXPORT  __Vectors_Size
60
+
61
+__Vectors       DCD     __initial_sp               ; Top of Stack
62
+                DCD     Reset_Handler              ; Reset Handler
63
+                DCD     NMI_Handler                ; NMI Handler
64
+                DCD     HardFault_Handler          ; Hard Fault Handler
65
+                DCD     MemManage_Handler          ; MPU Fault Handler
66
+                DCD     BusFault_Handler           ; Bus Fault Handler
67
+                DCD     UsageFault_Handler         ; Usage Fault Handler
68
+                DCD     0                          ; Reserved
69
+                DCD     0                          ; Reserved
70
+                DCD     0                          ; Reserved
71
+                DCD     0                          ; Reserved
72
+                DCD     SVC_Handler                ; SVCall Handler
73
+                DCD     DebugMon_Handler           ; Debug Monitor Handler
74
+                DCD     0                          ; Reserved
75
+                DCD     PendSV_Handler             ; PendSV Handler
76
+                DCD     SysTick_Handler            ; SysTick Handler
77
+
78
+                ; External Interrupts
79
+                DCD     WWDG_IRQHandler            ; Window Watchdog
80
+                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
81
+                DCD     TAMPER_IRQHandler          ; Tamper
82
+                DCD     RTC_IRQHandler             ; RTC
83
+                DCD     FLASH_IRQHandler           ; Flash
84
+                DCD     RCC_IRQHandler             ; RCC
85
+                DCD     EXTI0_IRQHandler           ; EXTI Line 0
86
+                DCD     EXTI1_IRQHandler           ; EXTI Line 1
87
+                DCD     EXTI2_IRQHandler           ; EXTI Line 2
88
+                DCD     EXTI3_IRQHandler           ; EXTI Line 3
89
+                DCD     EXTI4_IRQHandler           ; EXTI Line 4
90
+                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
91
+                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
92
+                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
93
+                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
94
+                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
95
+                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
96
+                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
97
+                DCD     ADC1_2_IRQHandler          ; ADC1_2
98
+                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
99
+                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
100
+                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
101
+                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
102
+                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
103
+                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
104
+                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
105
+                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
106
+                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
107
+                DCD     TIM2_IRQHandler            ; TIM2
108
+                DCD     TIM3_IRQHandler            ; TIM3
109
+                DCD     TIM4_IRQHandler            ; TIM4
110
+                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
111
+                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
112
+                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
113
+                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
114
+                DCD     SPI1_IRQHandler            ; SPI1
115
+                DCD     SPI2_IRQHandler            ; SPI2
116
+                DCD     USART1_IRQHandler          ; USART1
117
+                DCD     USART2_IRQHandler          ; USART2
118
+                DCD     USART3_IRQHandler          ; USART3
119
+                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
120
+                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
121
+                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
122
+__Vectors_End
123
+
124
+__Vectors_Size  EQU  __Vectors_End - __Vectors
125
+
126
+                AREA    |.text|, CODE, READONLY
127
+
128
+; Reset handler
129
+Reset_Handler    PROC
130
+                 EXPORT  Reset_Handler             [WEAK]
131
+     IMPORT  __main
132
+     
133
+                 LDR     R0, =SystemInit
134
+                 BLX     R0
135
+
136
+;
137
+; Enable UsageFault, MemFault and Busfault interrupts
138
+;
139
+_SHCSR			EQU     0xE000ED24		; SHCSR is located at address 0xE000ED24
140
+				LDR.W	R0, =_SHCSR				
141
+				LDR 	R1, [R0]				; Read CPACR
142
+				ORR 	R1, R1, #(0x7 << 16)	; Set bits 16,17,18 to enable usagefault, busfault, memfault interrupts
143
+				STR 	R1, [R0]				; Write back the modified value to the CPACR
144
+				DSB								; Wait for store to complete
145
+
146
+;
147
+; Set priority grouping (PRIGROUP) in AIRCR to 3 (16 levels for group priority and 0 for subpriority)
148
+;
149
+_AIRCR			EQU		0xE000ED0C
150
+_AIRCR_VAL		EQU		0x05FA0300
151
+				LDR.W	R0, =_AIRCR
152
+				LDR.W	R1, =_AIRCR_VAL
153
+				STR		R1,[R0]
154
+		
155
+;
156
+; Finaly, jump to main function (void main (void))
157
+;
158
+                LDR     R0, =__main
159
+                BX      R0
160
+                ENDP
161
+
162
+SystemInit		PROC				 
163
+				EXPORT  SystemInit                    [WEAK]    
164
+				BX		LR
165
+				ENDP
166
+
167
+; Dummy Exception Handlers (infinite loops which can be modified)
168
+
169
+NMI_Handler     PROC
170
+                EXPORT  NMI_Handler                [WEAK]
171
+                B       .
172
+                ENDP
173
+HardFault_Handler\
174
+                PROC
175
+                EXPORT  HardFault_Handler          [WEAK]
176
+                B       .
177
+                ENDP
178
+MemManage_Handler\
179
+                PROC
180
+                EXPORT  MemManage_Handler          [WEAK]
181
+                B       .
182
+                ENDP
183
+BusFault_Handler\
184
+                PROC
185
+                EXPORT  BusFault_Handler           [WEAK]
186
+                B       .
187
+                ENDP
188
+UsageFault_Handler\
189
+                PROC
190
+                EXPORT  UsageFault_Handler         [WEAK]
191
+                B       .
192
+                ENDP
193
+SVC_Handler     PROC
194
+                EXPORT  SVC_Handler                [WEAK]
195
+                B       .
196
+                ENDP
197
+DebugMon_Handler\
198
+                PROC
199
+                EXPORT  DebugMon_Handler           [WEAK]
200
+                B       .
201
+                ENDP
202
+PendSV_Handler  PROC
203
+                EXPORT  PendSV_Handler             [WEAK]
204
+                B       .
205
+                ENDP
206
+SysTick_Handler PROC
207
+                EXPORT  SysTick_Handler            [WEAK]
208
+                B       .
209
+                ENDP
210
+
211
+Default_Handler PROC
212
+
213
+                EXPORT  WWDG_IRQHandler            [WEAK]
214
+                EXPORT  PVD_IRQHandler             [WEAK]
215
+                EXPORT  TAMPER_IRQHandler          [WEAK]
216
+                EXPORT  RTC_IRQHandler             [WEAK]
217
+                EXPORT  FLASH_IRQHandler           [WEAK]
218
+                EXPORT  RCC_IRQHandler             [WEAK]
219
+                EXPORT  EXTI0_IRQHandler           [WEAK]
220
+                EXPORT  EXTI1_IRQHandler           [WEAK]
221
+                EXPORT  EXTI2_IRQHandler           [WEAK]
222
+                EXPORT  EXTI3_IRQHandler           [WEAK]
223
+                EXPORT  EXTI4_IRQHandler           [WEAK]
224
+                EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
225
+                EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
226
+                EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
227
+                EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
228
+                EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
229
+                EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
230
+                EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
231
+                EXPORT  ADC1_2_IRQHandler          [WEAK]
232
+                EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
233
+                EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
234
+                EXPORT  CAN1_RX1_IRQHandler        [WEAK]
235
+                EXPORT  CAN1_SCE_IRQHandler        [WEAK]
236
+                EXPORT  EXTI9_5_IRQHandler         [WEAK]
237
+                EXPORT  TIM1_BRK_IRQHandler        [WEAK]
238
+                EXPORT  TIM1_UP_IRQHandler         [WEAK]
239
+                EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
240
+                EXPORT  TIM1_CC_IRQHandler         [WEAK]
241
+                EXPORT  TIM2_IRQHandler            [WEAK]
242
+                EXPORT  TIM3_IRQHandler            [WEAK]
243
+                EXPORT  TIM4_IRQHandler            [WEAK]
244
+                EXPORT  I2C1_EV_IRQHandler         [WEAK]
245
+                EXPORT  I2C1_ER_IRQHandler         [WEAK]
246
+                EXPORT  I2C2_EV_IRQHandler         [WEAK]
247
+                EXPORT  I2C2_ER_IRQHandler         [WEAK]
248
+                EXPORT  SPI1_IRQHandler            [WEAK]
249
+                EXPORT  SPI2_IRQHandler            [WEAK]
250
+                EXPORT  USART1_IRQHandler          [WEAK]
251
+                EXPORT  USART2_IRQHandler          [WEAK]
252
+                EXPORT  USART3_IRQHandler          [WEAK]
253
+                EXPORT  EXTI15_10_IRQHandler       [WEAK]
254
+                EXPORT  RTCAlarm_IRQHandler        [WEAK]
255
+                EXPORT  USBWakeUp_IRQHandler       [WEAK]
256
+
257
+WWDG_IRQHandler
258
+PVD_IRQHandler
259
+TAMPER_IRQHandler
260
+RTC_IRQHandler
261
+FLASH_IRQHandler
262
+RCC_IRQHandler
263
+EXTI0_IRQHandler
264
+EXTI1_IRQHandler
265
+EXTI2_IRQHandler
266
+EXTI3_IRQHandler
267
+EXTI4_IRQHandler
268
+DMA1_Channel1_IRQHandler
269
+DMA1_Channel2_IRQHandler
270
+DMA1_Channel3_IRQHandler
271
+DMA1_Channel4_IRQHandler
272
+DMA1_Channel5_IRQHandler
273
+DMA1_Channel6_IRQHandler
274
+DMA1_Channel7_IRQHandler
275
+ADC1_2_IRQHandler
276
+USB_HP_CAN1_TX_IRQHandler
277
+USB_LP_CAN1_RX0_IRQHandler
278
+CAN1_RX1_IRQHandler
279
+CAN1_SCE_IRQHandler
280
+EXTI9_5_IRQHandler
281
+TIM1_BRK_IRQHandler
282
+TIM1_UP_IRQHandler
283
+TIM1_TRG_COM_IRQHandler
284
+TIM1_CC_IRQHandler
285
+TIM2_IRQHandler
286
+TIM3_IRQHandler
287
+TIM4_IRQHandler
288
+I2C1_EV_IRQHandler
289
+I2C1_ER_IRQHandler
290
+I2C2_EV_IRQHandler
291
+I2C2_ER_IRQHandler
292
+SPI1_IRQHandler
293
+SPI2_IRQHandler
294
+USART1_IRQHandler
295
+USART2_IRQHandler
296
+USART3_IRQHandler
297
+EXTI15_10_IRQHandler
298
+RTCAlarm_IRQHandler
299
+USBWakeUp_IRQHandler
300
+
301
+                B       .
302
+
303
+                ENDP
304
+
305
+                ALIGN
306
+
307
+;*******************************************************************************
308
+; User Stack and Heap initialization
309
+;*******************************************************************************
310
+                 IF      :DEF:__MICROLIB           
311
+                
312
+                 EXPORT  __initial_sp
313
+                 EXPORT  __heap_base
314
+                 EXPORT  __heap_limit
315
+                
316
+                 ELSE
317
+                
318
+                 IMPORT  __use_two_region_memory
319
+                 EXPORT  __user_initial_stackheap
320
+                 
321
+__user_initial_stackheap
322
+
323
+                 LDR     R0, =  Heap_Mem
324
+                 LDR     R1, =(Stack_Mem + Stack_Size)
325
+                 LDR     R2, = (Heap_Mem +  Heap_Size)
326
+                 LDR     R3, = Stack_Mem
327
+                 BX      LR
328
+
329
+                 ALIGN
330
+
331
+                 ENDIF
332
+
333
+                 END
334
+
335
+;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****

+ 745
- 0
PjtKEIL_StepSon/StepSon.uvoptx View File

@@ -0,0 +1,745 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
2
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
3
+
4
+  <SchemaVersion>1.0</SchemaVersion>
5
+
6
+  <Header>### uVision Project, (C) Keil Software</Header>
7
+
8
+  <Extensions>
9
+    <cExt>*.c</cExt>
10
+    <aExt>*.s*; *.src; *.a*</aExt>
11
+    <oExt>*.obj; *.o</oExt>
12
+    <lExt>*.lib</lExt>
13
+    <tExt>*.txt; *.h; *.inc</tExt>
14
+    <pExt>*.plm</pExt>
15
+    <CppX>*.cpp</CppX>
16
+    <nMigrate>0</nMigrate>
17
+  </Extensions>
18
+
19
+  <DaveTm>
20
+    <dwLowDateTime>0</dwLowDateTime>
21
+    <dwHighDateTime>0</dwHighDateTime>
22
+  </DaveTm>
23
+
24
+  <Target>
25
+    <TargetName>Simu</TargetName>
26
+    <ToolsetNumber>0x4</ToolsetNumber>
27
+    <ToolsetName>ARM-ADS</ToolsetName>
28
+    <TargetOption>
29
+      <CLKADS>8000000</CLKADS>
30
+      <OPTTT>
31
+        <gFlags>1</gFlags>
32
+        <BeepAtEnd>1</BeepAtEnd>
33
+        <RunSim>0</RunSim>
34
+        <RunTarget>1</RunTarget>
35
+        <RunAbUc>0</RunAbUc>
36
+      </OPTTT>
37
+      <OPTHX>
38
+        <HexSelection>1</HexSelection>
39
+        <FlashByte>65535</FlashByte>
40
+        <HexRangeLowAddress>0</HexRangeLowAddress>
41
+        <HexRangeHighAddress>0</HexRangeHighAddress>
42
+        <HexOffset>0</HexOffset>
43
+      </OPTHX>
44
+      <OPTLEX>
45
+        <PageWidth>79</PageWidth>
46
+        <PageLength>66</PageLength>
47
+        <TabStop>8</TabStop>
48
+        <ListingPath></ListingPath>
49
+      </OPTLEX>
50
+      <ListingPage>
51
+        <CreateCListing>1</CreateCListing>
52
+        <CreateAListing>1</CreateAListing>
53
+        <CreateLListing>1</CreateLListing>
54
+        <CreateIListing>0</CreateIListing>
55
+        <AsmCond>1</AsmCond>
56
+        <AsmSymb>1</AsmSymb>
57
+        <AsmXref>0</AsmXref>
58
+        <CCond>1</CCond>
59
+        <CCode>0</CCode>
60
+        <CListInc>0</CListInc>
61
+        <CSymb>0</CSymb>
62
+        <LinkerCodeListing>0</LinkerCodeListing>
63
+      </ListingPage>
64
+      <OPTXL>
65
+        <LMap>1</LMap>
66
+        <LComments>1</LComments>
67
+        <LGenerateSymbols>1</LGenerateSymbols>
68
+        <LLibSym>1</LLibSym>
69
+        <LLines>1</LLines>
70
+        <LLocSym>1</LLocSym>
71
+        <LPubSym>1</LPubSym>
72
+        <LXref>0</LXref>
73
+        <LExpSel>0</LExpSel>
74
+      </OPTXL>
75
+      <OPTFL>
76
+        <tvExp>1</tvExp>
77
+        <tvExpOptDlg>0</tvExpOptDlg>
78
+        <IsCurrentTarget>0</IsCurrentTarget>
79
+      </OPTFL>
80
+      <CpuCode>18</CpuCode>
81
+      <DebugOpt>
82
+        <uSim>1</uSim>
83
+        <uTrg>0</uTrg>
84
+        <sLdApp>1</sLdApp>
85
+        <sGomain>1</sGomain>
86
+        <sRbreak>1</sRbreak>
87
+        <sRwatch>1</sRwatch>
88
+        <sRmem>1</sRmem>
89
+        <sRfunc>1</sRfunc>
90
+        <sRbox>1</sRbox>
91
+        <tLdApp>1</tLdApp>
92
+        <tGomain>1</tGomain>
93
+        <tRbreak>1</tRbreak>
94
+        <tRwatch>1</tRwatch>
95
+        <tRmem>1</tRmem>
96
+        <tRfunc>1</tRfunc>
97
+        <tRbox>1</tRbox>
98
+        <tRtrace>1</tRtrace>
99
+        <sRSysVw>1</sRSysVw>
100
+        <tRSysVw>1</tRSysVw>
101
+        <sRunDeb>0</sRunDeb>
102
+        <sLrtime>0</sLrtime>
103
+        <bEvRecOn>1</bEvRecOn>
104
+        <bSchkAxf>0</bSchkAxf>
105
+        <bTchkAxf>0</bTchkAxf>
106
+        <nTsel>6</nTsel>
107
+        <sDll></sDll>
108
+        <sDllPa></sDllPa>
109
+        <sDlgDll></sDlgDll>
110
+        <sDlgPa></sDlgPa>
111
+        <sIfile></sIfile>
112
+        <tDll></tDll>
113
+        <tDllPa></tDllPa>
114
+        <tDlgDll></tDlgDll>
115
+        <tDlgPa></tDlgPa>
116
+        <tIfile></tIfile>
117
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
118
+      </DebugOpt>
119
+      <TargetDriverDllRegistry>
120
+        <SetRegEntry>
121
+          <Number>0</Number>
122
+          <Key>DLGDARM</Key>
123
+          <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>
124
+        </SetRegEntry>
125
+        <SetRegEntry>
126
+          <Number>0</Number>
127
+          <Key>ARMRTXEVENTFLAGS</Key>
128
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
129
+        </SetRegEntry>
130
+        <SetRegEntry>
131
+          <Number>0</Number>
132
+          <Key>DLGTARM</Key>
133
+          <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)</Name>
134
+        </SetRegEntry>
135
+        <SetRegEntry>
136
+          <Number>0</Number>
137
+          <Key>ARMDBGFLAGS</Key>
138
+          <Name>-T0</Name>
139
+        </SetRegEntry>
140
+        <SetRegEntry>
141
+          <Number>0</Number>
142
+          <Key>DLGUARM</Key>
143
+          <Name>(105=-1,-1,-1,-1,0)</Name>
144
+        </SetRegEntry>
145
+        <SetRegEntry>
146
+          <Number>0</Number>
147
+          <Key>UL2CM3</Key>
148
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
149
+        </SetRegEntry>
150
+        <SetRegEntry>
151
+          <Number>0</Number>
152
+          <Key>ST-LINKIII-KEIL_SWO</Key>
153
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
154
+        </SetRegEntry>
155
+      </TargetDriverDllRegistry>
156
+      <Breakpoint/>
157
+      <WatchWindow1>
158
+        <Ww>
159
+          <count>0</count>
160
+          <WinNumber>1</WinNumber>
161
+          <ItemText>SortieSon</ItemText>
162
+        </Ww>
163
+      </WatchWindow1>
164
+      <MemoryWindow1>
165
+        <Mm>
166
+          <WinNumber>1</WinNumber>
167
+          <SubType>257</SubType>
168
+          <ItemText>r0</ItemText>
169
+          <AccSizeX>0</AccSizeX>
170
+        </Mm>
171
+      </MemoryWindow1>
172
+      <Tracepoint>
173
+        <THDelay>0</THDelay>
174
+      </Tracepoint>
175
+      <DebugFlag>
176
+        <trace>0</trace>
177
+        <periodic>1</periodic>
178
+        <aLwin>1</aLwin>
179
+        <aCover>0</aCover>
180
+        <aSer1>0</aSer1>
181
+        <aSer2>0</aSer2>
182
+        <aPa>0</aPa>
183
+        <viewmode>1</viewmode>
184
+        <vrSel>0</vrSel>
185
+        <aSym>0</aSym>
186
+        <aTbox>0</aTbox>
187
+        <AscS1>0</AscS1>
188
+        <AscS2>0</AscS2>
189
+        <AscS3>0</AscS3>
190
+        <aSer3>0</aSer3>
191
+        <eProf>0</eProf>
192
+        <aLa>1</aLa>
193
+        <aPa1>0</aPa1>
194
+        <AscS4>0</AscS4>
195
+        <aSer4>0</aSer4>
196
+        <StkLoc>0</StkLoc>
197
+        <TrcWin>0</TrcWin>
198
+        <newCpu>0</newCpu>
199
+        <uProt>0</uProt>
200
+      </DebugFlag>
201
+      <LintExecutable></LintExecutable>
202
+      <LintConfigFile></LintConfigFile>
203
+      <bLintAuto>0</bLintAuto>
204
+      <bAutoGenD>0</bAutoGenD>
205
+      <LntExFlags>0</LntExFlags>
206
+      <pMisraName></pMisraName>
207
+      <pszMrule></pszMrule>
208
+      <pSingCmds></pSingCmds>
209
+      <pMultCmds></pMultCmds>
210
+      <pMisraNamep></pMisraNamep>
211
+      <pszMrulep></pszMrulep>
212
+      <pSingCmdsp></pSingCmdsp>
213
+      <pMultCmdsp></pMultCmdsp>
214
+      <LogicAnalyzers>
215
+        <Wi>
216
+          <IntNumber>0</IntNumber>
217
+          <FirstString>`SortieSon</FirstString>
218
+          <SecondString>000080000000000000000000000000000078864000000000000000000000000000000000536F72746965536F6E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000E03F1600000000000000000000000000000000000000B8080008</SecondString>
219
+        </Wi>
220
+        <Wi>
221
+          <IntNumber>1</IntNumber>
222
+          <FirstString>((portb &amp; 0x00000001) &amp; 0x1) &gt;&gt; 0</FirstString>
223
+          <SecondString>00800000000000000000000000000000E0FFEF400100000000000000000000000000000028706F72746220262030783030303030303031290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000000000000000E03F1600000000000000000000000000000000000000820A0008</SecondString>
224
+        </Wi>
225
+      </LogicAnalyzers>
226
+      <DebugDescription>
227
+        <Enable>1</Enable>
228
+        <EnableFlashSeq>0</EnableFlashSeq>
229
+        <EnableLog>0</EnableLog>
230
+        <Protocol>2</Protocol>
231
+        <DbgClock>10000000</DbgClock>
232
+      </DebugDescription>
233
+    </TargetOption>
234
+  </Target>
235
+
236
+  <Target>
237
+    <TargetName>CibleSondeKEIL</TargetName>
238
+    <ToolsetNumber>0x4</ToolsetNumber>
239
+    <ToolsetName>ARM-ADS</ToolsetName>
240
+    <TargetOption>
241
+      <CLKADS>8000000</CLKADS>
242
+      <OPTTT>
243
+        <gFlags>1</gFlags>
244
+        <BeepAtEnd>1</BeepAtEnd>
245
+        <RunSim>0</RunSim>
246
+        <RunTarget>1</RunTarget>
247
+        <RunAbUc>0</RunAbUc>
248
+      </OPTTT>
249
+      <OPTHX>
250
+        <HexSelection>1</HexSelection>
251
+        <FlashByte>65535</FlashByte>
252
+        <HexRangeLowAddress>0</HexRangeLowAddress>
253
+        <HexRangeHighAddress>0</HexRangeHighAddress>
254
+        <HexOffset>0</HexOffset>
255
+      </OPTHX>
256
+      <OPTLEX>
257
+        <PageWidth>79</PageWidth>
258
+        <PageLength>66</PageLength>
259
+        <TabStop>8</TabStop>
260
+        <ListingPath></ListingPath>
261
+      </OPTLEX>
262
+      <ListingPage>
263
+        <CreateCListing>1</CreateCListing>
264
+        <CreateAListing>1</CreateAListing>
265
+        <CreateLListing>1</CreateLListing>
266
+        <CreateIListing>0</CreateIListing>
267
+        <AsmCond>1</AsmCond>
268
+        <AsmSymb>1</AsmSymb>
269
+        <AsmXref>0</AsmXref>
270
+        <CCond>1</CCond>
271
+        <CCode>0</CCode>
272
+        <CListInc>0</CListInc>
273
+        <CSymb>0</CSymb>
274
+        <LinkerCodeListing>0</LinkerCodeListing>
275
+      </ListingPage>
276
+      <OPTXL>
277
+        <LMap>1</LMap>
278
+        <LComments>1</LComments>
279
+        <LGenerateSymbols>1</LGenerateSymbols>
280
+        <LLibSym>1</LLibSym>
281
+        <LLines>1</LLines>
282
+        <LLocSym>1</LLocSym>
283
+        <LPubSym>1</LPubSym>
284
+        <LXref>0</LXref>
285
+        <LExpSel>0</LExpSel>
286
+      </OPTXL>
287
+      <OPTFL>
288
+        <tvExp>1</tvExp>
289
+        <tvExpOptDlg>0</tvExpOptDlg>
290
+        <IsCurrentTarget>1</IsCurrentTarget>
291
+      </OPTFL>
292
+      <CpuCode>18</CpuCode>
293
+      <DebugOpt>
294
+        <uSim>0</uSim>
295
+        <uTrg>1</uTrg>
296
+        <sLdApp>1</sLdApp>
297
+        <sGomain>1</sGomain>
298
+        <sRbreak>1</sRbreak>
299
+        <sRwatch>1</sRwatch>
300
+        <sRmem>1</sRmem>
301
+        <sRfunc>1</sRfunc>
302
+        <sRbox>1</sRbox>
303
+        <tLdApp>1</tLdApp>
304
+        <tGomain>1</tGomain>
305
+        <tRbreak>1</tRbreak>
306
+        <tRwatch>1</tRwatch>
307
+        <tRmem>1</tRmem>
308
+        <tRfunc>1</tRfunc>
309
+        <tRbox>1</tRbox>
310
+        <tRtrace>1</tRtrace>
311
+        <sRSysVw>1</sRSysVw>
312
+        <tRSysVw>1</tRSysVw>
313
+        <sRunDeb>0</sRunDeb>
314
+        <sLrtime>0</sLrtime>
315
+        <bEvRecOn>1</bEvRecOn>
316
+        <bSchkAxf>0</bSchkAxf>
317
+        <bTchkAxf>0</bTchkAxf>
318
+        <nTsel>0</nTsel>
319
+        <sDll></sDll>
320
+        <sDllPa></sDllPa>
321
+        <sDlgDll></sDlgDll>
322
+        <sDlgPa></sDlgPa>
323
+        <sIfile></sIfile>
324
+        <tDll></tDll>
325
+        <tDllPa></tDllPa>
326
+        <tDlgDll></tDlgDll>
327
+        <tDlgPa></tDlgPa>
328
+        <tIfile></tIfile>
329
+        <pMon>BIN\UL2CM3.DLL</pMon>
330
+      </DebugOpt>
331
+      <TargetDriverDllRegistry>
332
+        <SetRegEntry>
333
+          <Number>0</Number>
334
+          <Key>DLGDARM</Key>
335
+          <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=-1,-1,-1,-1,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>
336
+        </SetRegEntry>
337
+        <SetRegEntry>
338
+          <Number>0</Number>
339
+          <Key>ARMRTXEVENTFLAGS</Key>
340
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
341
+        </SetRegEntry>
342
+        <SetRegEntry>
343
+          <Number>0</Number>
344
+          <Key>DLGTARM</Key>
345
+          <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)</Name>
346
+        </SetRegEntry>
347
+        <SetRegEntry>
348
+          <Number>0</Number>
349
+          <Key>ARMDBGFLAGS</Key>
350
+          <Name>-T0</Name>
351
+        </SetRegEntry>
352
+        <SetRegEntry>
353
+          <Number>0</Number>
354
+          <Key>DLGUARM</Key>
355
+          <Name>(105=-1,-1,-1,-1,0)</Name>
356
+        </SetRegEntry>
357
+        <SetRegEntry>
358
+          <Number>0</Number>
359
+          <Key>UL2CM3</Key>
360
+          <Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
361
+        </SetRegEntry>
362
+        <SetRegEntry>
363
+          <Number>0</Number>
364
+          <Key>ST-LINKIII-KEIL_SWO</Key>
365
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
366
+        </SetRegEntry>
367
+      </TargetDriverDllRegistry>
368
+      <Breakpoint/>
369
+      <WatchWindow1>
370
+        <Ww>
371
+          <count>0</count>
372
+          <WinNumber>1</WinNumber>
373
+          <ItemText>SortieSon</ItemText>
374
+        </Ww>
375
+        <Ww>
376
+          <count>1</count>
377
+          <WinNumber>1</WinNumber>
378
+          <ItemText>TIM4</ItemText>
379
+        </Ww>
380
+      </WatchWindow1>
381
+      <MemoryWindow1>
382
+        <Mm>
383
+          <WinNumber>1</WinNumber>
384
+          <SubType>257</SubType>
385
+          <ItemText>r0</ItemText>
386
+          <AccSizeX>0</AccSizeX>
387
+        </Mm>
388
+      </MemoryWindow1>
389
+      <Tracepoint>
390
+        <THDelay>0</THDelay>
391
+      </Tracepoint>
392
+      <DebugFlag>
393
+        <trace>0</trace>
394
+        <periodic>1</periodic>
395
+        <aLwin>1</aLwin>
396
+        <aCover>0</aCover>
397
+        <aSer1>0</aSer1>
398
+        <aSer2>0</aSer2>
399
+        <aPa>0</aPa>
400
+        <viewmode>1</viewmode>
401
+        <vrSel>0</vrSel>
402
+        <aSym>0</aSym>
403
+        <aTbox>0</aTbox>
404
+        <AscS1>0</AscS1>
405
+        <AscS2>0</AscS2>
406
+        <AscS3>0</AscS3>
407
+        <aSer3>0</aSer3>
408
+        <eProf>0</eProf>
409
+        <aLa>1</aLa>
410
+        <aPa1>0</aPa1>
411
+        <AscS4>0</AscS4>
412
+        <aSer4>0</aSer4>
413
+        <StkLoc>0</StkLoc>
414
+        <TrcWin>0</TrcWin>
415
+        <newCpu>0</newCpu>
416
+        <uProt>0</uProt>
417
+      </DebugFlag>
418
+      <LintExecutable></LintExecutable>
419
+      <LintConfigFile></LintConfigFile>
420
+      <bLintAuto>0</bLintAuto>
421
+      <bAutoGenD>0</bAutoGenD>
422
+      <LntExFlags>0</LntExFlags>
423
+      <pMisraName></pMisraName>
424
+      <pszMrule></pszMrule>
425
+      <pSingCmds></pSingCmds>
426
+      <pMultCmds></pMultCmds>
427
+      <pMisraNamep></pMisraNamep>
428
+      <pszMrulep></pszMrulep>
429
+      <pSingCmdsp></pSingCmdsp>
430
+      <pMultCmdsp></pMultCmdsp>
431
+      <DebugDescription>
432
+        <Enable>1</Enable>
433
+        <EnableFlashSeq>0</EnableFlashSeq>
434
+        <EnableLog>0</EnableLog>
435
+        <Protocol>2</Protocol>
436
+        <DbgClock>10000000</DbgClock>
437
+      </DebugDescription>
438
+    </TargetOption>
439
+  </Target>
440
+
441
+  <Target>
442
+    <TargetName>CibleSondeST</TargetName>
443
+    <ToolsetNumber>0x4</ToolsetNumber>
444
+    <ToolsetName>ARM-ADS</ToolsetName>
445
+    <TargetOption>
446
+      <CLKADS>8000000</CLKADS>
447
+      <OPTTT>
448
+        <gFlags>1</gFlags>
449
+        <BeepAtEnd>1</BeepAtEnd>
450
+        <RunSim>0</RunSim>
451
+        <RunTarget>1</RunTarget>
452
+        <RunAbUc>0</RunAbUc>
453
+      </OPTTT>
454
+      <OPTHX>
455
+        <HexSelection>1</HexSelection>
456
+        <FlashByte>65535</FlashByte>
457
+        <HexRangeLowAddress>0</HexRangeLowAddress>
458
+        <HexRangeHighAddress>0</HexRangeHighAddress>
459
+        <HexOffset>0</HexOffset>
460
+      </OPTHX>
461
+      <OPTLEX>
462
+        <PageWidth>79</PageWidth>
463
+        <PageLength>66</PageLength>
464
+        <TabStop>8</TabStop>
465
+        <ListingPath></ListingPath>
466
+      </OPTLEX>
467
+      <ListingPage>
468
+        <CreateCListing>1</CreateCListing>
469
+        <CreateAListing>1</CreateAListing>
470
+        <CreateLListing>1</CreateLListing>
471
+        <CreateIListing>0</CreateIListing>
472
+        <AsmCond>1</AsmCond>
473
+        <AsmSymb>1</AsmSymb>
474
+        <AsmXref>0</AsmXref>
475
+        <CCond>1</CCond>
476
+        <CCode>0</CCode>
477
+        <CListInc>0</CListInc>
478
+        <CSymb>0</CSymb>
479
+        <LinkerCodeListing>0</LinkerCodeListing>
480
+      </ListingPage>
481
+      <OPTXL>
482
+        <LMap>1</LMap>
483
+        <LComments>1</LComments>
484
+        <LGenerateSymbols>1</LGenerateSymbols>
485
+        <LLibSym>1</LLibSym>
486
+        <LLines>1</LLines>
487
+        <LLocSym>1</LLocSym>
488
+        <LPubSym>1</LPubSym>
489
+        <LXref>0</LXref>
490
+        <LExpSel>0</LExpSel>
491
+      </OPTXL>
492
+      <OPTFL>
493
+        <tvExp>1</tvExp>
494
+        <tvExpOptDlg>0</tvExpOptDlg>
495
+        <IsCurrentTarget>0</IsCurrentTarget>
496
+      </OPTFL>
497
+      <CpuCode>18</CpuCode>
498
+      <DebugOpt>
499
+        <uSim>0</uSim>
500
+        <uTrg>1</uTrg>
501
+        <sLdApp>1</sLdApp>
502
+        <sGomain>1</sGomain>
503
+        <sRbreak>1</sRbreak>
504
+        <sRwatch>1</sRwatch>
505
+        <sRmem>1</sRmem>
506
+        <sRfunc>1</sRfunc>
507
+        <sRbox>1</sRbox>
508
+        <tLdApp>1</tLdApp>
509
+        <tGomain>1</tGomain>
510
+        <tRbreak>1</tRbreak>
511
+        <tRwatch>1</tRwatch>
512
+        <tRmem>1</tRmem>
513
+        <tRfunc>1</tRfunc>
514
+        <tRbox>1</tRbox>
515
+        <tRtrace>1</tRtrace>
516
+        <sRSysVw>1</sRSysVw>
517
+        <tRSysVw>1</tRSysVw>
518
+        <sRunDeb>0</sRunDeb>
519
+        <sLrtime>0</sLrtime>
520
+        <bEvRecOn>1</bEvRecOn>
521
+        <bSchkAxf>0</bSchkAxf>
522
+        <bTchkAxf>0</bTchkAxf>
523
+        <nTsel>6</nTsel>
524
+        <sDll></sDll>
525
+        <sDllPa></sDllPa>
526
+        <sDlgDll></sDlgDll>
527
+        <sDlgPa></sDlgPa>
528
+        <sIfile></sIfile>
529
+        <tDll></tDll>
530
+        <tDllPa></tDllPa>
531
+        <tDlgDll></tDlgDll>
532
+        <tDlgPa></tDlgPa>
533
+        <tIfile></tIfile>
534
+        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
535
+      </DebugOpt>
536
+      <TargetDriverDllRegistry>
537
+        <SetRegEntry>
538
+          <Number>0</Number>
539
+          <Key>DLGDARM</Key>
540
+          <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=-1,-1,-1,-1,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>
541
+        </SetRegEntry>
542
+        <SetRegEntry>
543
+          <Number>0</Number>
544
+          <Key>ARMRTXEVENTFLAGS</Key>
545
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
546
+        </SetRegEntry>
547
+        <SetRegEntry>
548
+          <Number>0</Number>
549
+          <Key>DLGTARM</Key>
550
+          <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)</Name>
551
+        </SetRegEntry>
552
+        <SetRegEntry>
553
+          <Number>0</Number>
554
+          <Key>ARMDBGFLAGS</Key>
555
+          <Name>-T0</Name>
556
+        </SetRegEntry>
557
+        <SetRegEntry>
558
+          <Number>0</Number>
559
+          <Key>DLGUARM</Key>
560
+          <Name>(105=-1,-1,-1,-1,0)</Name>
561
+        </SetRegEntry>
562
+        <SetRegEntry>
563
+          <Number>0</Number>
564
+          <Key>UL2CM3</Key>
565
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
566
+        </SetRegEntry>
567
+        <SetRegEntry>
568
+          <Number>0</Number>
569
+          <Key>ST-LINKIII-KEIL_SWO</Key>
570
+          <Name>-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
571
+        </SetRegEntry>
572
+      </TargetDriverDllRegistry>
573
+      <Breakpoint/>
574
+      <MemoryWindow1>
575
+        <Mm>
576
+          <WinNumber>1</WinNumber>
577
+          <SubType>257</SubType>
578
+          <ItemText>r0</ItemText>
579
+          <AccSizeX>0</AccSizeX>
580
+        </Mm>
581
+      </MemoryWindow1>
582
+      <Tracepoint>
583
+        <THDelay>0</THDelay>
584
+      </Tracepoint>
585
+      <DebugFlag>
586
+        <trace>0</trace>
587
+        <periodic>1</periodic>
588
+        <aLwin>1</aLwin>
589
+        <aCover>0</aCover>
590
+        <aSer1>0</aSer1>
591
+        <aSer2>0</aSer2>
592
+        <aPa>0</aPa>
593
+        <viewmode>1</viewmode>
594
+        <vrSel>0</vrSel>
595
+        <aSym>0</aSym>
596
+        <aTbox>0</aTbox>
597
+        <AscS1>0</AscS1>
598
+        <AscS2>0</AscS2>
599
+        <AscS3>0</AscS3>
600
+        <aSer3>0</aSer3>
601
+        <eProf>0</eProf>
602
+        <aLa>1</aLa>
603
+        <aPa1>0</aPa1>
604
+        <AscS4>0</AscS4>
605
+        <aSer4>0</aSer4>
606
+        <StkLoc>0</StkLoc>
607
+        <TrcWin>0</TrcWin>
608
+        <newCpu>0</newCpu>
609
+        <uProt>0</uProt>
610
+      </DebugFlag>
611
+      <LintExecutable></LintExecutable>
612
+      <LintConfigFile></LintConfigFile>
613
+      <bLintAuto>0</bLintAuto>
614
+      <bAutoGenD>0</bAutoGenD>
615
+      <LntExFlags>0</LntExFlags>
616
+      <pMisraName></pMisraName>
617
+      <pszMrule></pszMrule>
618
+      <pSingCmds></pSingCmds>
619
+      <pMultCmds></pMultCmds>
620
+      <pMisraNamep></pMisraNamep>
621
+      <pszMrulep></pszMrulep>
622
+      <pSingCmdsp></pSingCmdsp>
623
+      <pMultCmdsp></pMultCmdsp>
624
+      <LogicAnalyzers>
625
+        <Wi>
626
+          <IntNumber>0</IntNumber>
627
+          <FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
628
+          <SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008</SecondString>
629
+        </Wi>
630
+      </LogicAnalyzers>
631
+      <DebugDescription>
632
+        <Enable>1</Enable>
633
+        <EnableFlashSeq>0</EnableFlashSeq>
634
+        <EnableLog>0</EnableLog>
635
+        <Protocol>2</Protocol>
636
+        <DbgClock>10000000</DbgClock>
637
+      </DebugDescription>
638
+    </TargetOption>
639
+  </Target>
640
+
641
+  <Group>
642
+    <GroupName>Sources</GroupName>
643
+    <tvExp>1</tvExp>
644
+    <tvExpOptDlg>0</tvExpOptDlg>
645
+    <cbSel>0</cbSel>
646
+    <RteFlg>0</RteFlg>
647
+    <File>
648
+      <GroupNumber>1</GroupNumber>
649
+      <FileNumber>1</FileNumber>
650
+      <FileType>1</FileType>
651
+      <tvExp>0</tvExp>
652
+      <tvExpOptDlg>0</tvExpOptDlg>
653
+      <bDave2>0</bDave2>
654
+      <PathWithFileName>.\Src\principal.c</PathWithFileName>
655
+      <FilenameWithoutPath>principal.c</FilenameWithoutPath>
656
+      <RteFlg>0</RteFlg>
657
+      <bShared>0</bShared>
658
+    </File>
659
+    <File>
660
+      <GroupNumber>1</GroupNumber>
661
+      <FileNumber>2</FileNumber>
662
+      <FileType>2</FileType>
663
+      <tvExp>0</tvExp>
664
+      <tvExpOptDlg>0</tvExpOptDlg>
665
+      <bDave2>0</bDave2>
666
+      <PathWithFileName>.\Src\bruitverre.asm</PathWithFileName>
667
+      <FilenameWithoutPath>bruitverre.asm</FilenameWithoutPath>
668
+      <RteFlg>0</RteFlg>
669
+      <bShared>0</bShared>
670
+    </File>
671
+    <File>
672
+      <GroupNumber>1</GroupNumber>
673
+      <FileNumber>3</FileNumber>
674
+      <FileType>2</FileType>
675
+      <tvExp>0</tvExp>
676
+      <tvExpOptDlg>0</tvExpOptDlg>
677
+      <bDave2>0</bDave2>
678
+      <PathWithFileName>.\Src\GestionSon.s</PathWithFileName>
679
+      <FilenameWithoutPath>GestionSon.s</FilenameWithoutPath>
680
+      <RteFlg>0</RteFlg>
681
+      <bShared>0</bShared>
682
+    </File>
683
+    <File>
684
+      <GroupNumber>1</GroupNumber>
685
+      <FileNumber>4</FileNumber>
686
+      <FileType>5</FileType>
687
+      <tvExp>0</tvExp>
688
+      <tvExpOptDlg>0</tvExpOptDlg>
689
+      <bDave2>0</bDave2>
690
+      <PathWithFileName>.\Src\GestionSon.h</PathWithFileName>
691
+      <FilenameWithoutPath>GestionSon.h</FilenameWithoutPath>
692
+      <RteFlg>0</RteFlg>
693
+      <bShared>0</bShared>
694
+    </File>
695
+  </Group>
696
+
697
+  <Group>
698
+    <GroupName>Sys</GroupName>
699
+    <tvExp>1</tvExp>
700
+    <tvExpOptDlg>0</tvExpOptDlg>
701
+    <cbSel>0</cbSel>
702
+    <RteFlg>0</RteFlg>
703
+    <File>
704
+      <GroupNumber>2</GroupNumber>
705
+      <FileNumber>5</FileNumber>
706
+      <FileType>2</FileType>
707
+      <tvExp>0</tvExp>
708
+      <tvExpOptDlg>0</tvExpOptDlg>
709
+      <bDave2>0</bDave2>
710
+      <PathWithFileName>.\Src\startup-rvds.s</PathWithFileName>
711
+      <FilenameWithoutPath>startup-rvds.s</FilenameWithoutPath>
712
+      <RteFlg>0</RteFlg>
713
+      <bShared>0</bShared>
714
+    </File>
715
+  </Group>
716
+
717
+  <Group>
718
+    <GroupName>Driver</GroupName>
719
+    <tvExp>1</tvExp>
720
+    <tvExpOptDlg>0</tvExpOptDlg>
721
+    <cbSel>0</cbSel>
722
+    <RteFlg>0</RteFlg>
723
+    <File>
724
+      <GroupNumber>3</GroupNumber>
725
+      <FileNumber>6</FileNumber>
726
+      <FileType>4</FileType>
727
+      <tvExp>0</tvExp>
728
+      <tvExpOptDlg>0</tvExpOptDlg>
729
+      <bDave2>0</bDave2>
730
+      <PathWithFileName>.\Driver\DriverJeuLaser.lib</PathWithFileName>
731
+      <FilenameWithoutPath>DriverJeuLaser.lib</FilenameWithoutPath>
732
+      <RteFlg>0</RteFlg>
733
+      <bShared>0</bShared>
734
+    </File>
735
+  </Group>
736
+
737
+  <Group>
738
+    <GroupName>::CMSIS</GroupName>
739
+    <tvExp>0</tvExp>
740
+    <tvExpOptDlg>0</tvExpOptDlg>
741
+    <cbSel>0</cbSel>
742
+    <RteFlg>1</RteFlg>
743
+  </Group>
744
+
745
+</ProjectOpt>

+ 1382
- 0
PjtKEIL_StepSon/StepSon.uvprojx
File diff suppressed because it is too large
View File


+ 39
- 0
README.md View File

@@ -0,0 +1,39 @@
1
+# Répertoire de travail pour le BE CHTI
2
+
3
+Ce répertoire contient les fichiers clés de nos travaux réalisés pour le bureau d'étude CHTI à l'INSA de Toulouse. Ce répertoire est privé.
4
+
5
+## À propos
6
+Le code de ce github est le firmware que nous avons créé pour BE CHTI et qui est flashé sur la carte SM32H103. Cette carte est responsable du traitement du signal, de la gestion du son et de le gestion de l'affichage. La dernière version du firmware permet à 4 joueurs de jouer en même temps avec des cibles changeantes au cours du temps. Le score est correctement géré et chaque joueur est reconnu.
7
+
8
+## Avancement
9
+* Prise en main 1 : **fait**.
10
+* Prise en main 2 : **fait**.
11
+* Gestion du son : **fait**.
12
+* DFT : **fait**.
13
+* DFT signal réel : **fait**.
14
+* Finalisation : **fait**
15
+	* Gestion du score : **fait**
16
+	* Gestion du son : **fait**
17
+	* Affichage : **fait**
18
+	* Malette : **fait**
19
+
20
+## Tests des étapes
21
+### Test du son
22
+Le bon fonctionnement de la gestion du son a été observé aussi bien du côté logiciel que lors de test sur le matériel. On a également pu vérifier que le son ne se lançait qu'une seule fois et qu'il était possible de le déclancher sur demande à n'importe quel moment. 
23
+
24
+### Test de la DFT
25
+Un test a été effectué sur le signal donné (cosinus sur une periode) et on obtient une rais majoritaire de rang k=1 avec X(k=1) = 255.98. Cela correspond bien à la valeur attendue d'après les calculs de fin de sujet. 
26
+
27
+### Test de la DFT sur un signal réel
28
+On a effectué des tests à partir d'un GBF en regardant les raies intéressantes pour notre projet. Les résultats sont bons. Exemple des valeurs relevées pour un signal d'amplitude 1 Vpp à 90kHz :
29
+![Test de la DFT](images/test_dft.png)
30
+
31
+### Test de la partie finale
32
+On a effectué un test à partir d'un GBF en mode burst. Le programme se comporte comme prévu et est capble de compter les scores (sans doublons). Un son est également joué au moment du burst.
33
+![Test score](images/test_score.png)
34
+
35
+### Assemblage final
36
+On a pu assembler l'ensemble du projet, rajouter une fonction de jeu et l'ensemble du projet fonctionne :
37
+![malette](images/final.jpg)
38
+La cible est indiquée par une LED rouge à côté, la toucher déclange un son et augmente le score du joueur associé au pistolet. La cible est ensuite mise à jour sur un autre capteur.
39
+

BIN
images/final.jpg View File


BIN
images/keil.png View File


BIN
images/output_son.png View File


BIN
images/scope_0.png View File


BIN
images/scope_1.png View File


BIN
images/scope_2.png View File


BIN
images/scope_3.png View File


BIN
images/sonout_scope_0.png View File


BIN
images/sonout_scope_1.png View File


BIN
images/test_dft.png View File


BIN
images/test_score.png View File


Loading…
Cancel
Save