From 9a99a9ec86e4fb021d2eb21b618b9528e260eae0 Mon Sep 17 00:00:00 2001 From: Oskar Orvik Date: Sat, 13 Dec 2025 17:22:40 +0100 Subject: [PATCH] =?UTF-8?q?Merge=20girouette=20accelereom=C3=A8tre=20-=20L?= =?UTF-8?q?acheVoile=20d=C3=A9sactiv=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjetVoilier/Application/principal.c | 59 +- .../Reel_STM32F103RB_1.0.0.dbgconf | 36 + ProjetVoilier/EventRecorderStub.scvd | 9 + ProjetVoilier/Listings/Projet3FISA.map | 889 ++++ ProjetVoilier/Objects/ExtDll.iex | 2 + ProjetVoilier/Objects/Projet3FISA.axf | Bin 0 -> 45484 bytes .../Objects/Projet3FISA.build_log.htm | 80 + ProjetVoilier/Objects/Projet3FISA.htm | 625 +++ ProjetVoilier/Objects/Projet3FISA.lnp | 18 + ProjetVoilier/Objects/ProjetVoilier_Reel.dep | 99 + ProjetVoilier/Objects/accelerometre.d | 7 + ProjetVoilier/Objects/accelerometre.o | Bin 0 -> 6196 bytes ProjetVoilier/Objects/adc.d | 1 + ProjetVoilier/Objects/adc.o | Bin 0 -> 592 bytes ProjetVoilier/Objects/drivergpio.d | 6 + ProjetVoilier/Objects/drivergpio.o | Bin 0 -> 5468 bytes ProjetVoilier/Objects/girouette.d | 7 + ProjetVoilier/Objects/girouette.o | Bin 0 -> 5696 bytes ProjetVoilier/Objects/horloge.d | 6 + ProjetVoilier/Objects/horloge.o | Bin 0 -> 9536 bytes ProjetVoilier/Objects/i2c.d | 6 + ProjetVoilier/Objects/i2c.o | Bin 0 -> 2956 bytes ProjetVoilier/Objects/it.d | 5 + ProjetVoilier/Objects/it.o | Bin 0 -> 10760 bytes ProjetVoilier/Objects/mygpio.d | 6 + ProjetVoilier/Objects/mygpio.o | Bin 0 -> 6336 bytes ProjetVoilier/Objects/mytimer.d | 8 + ProjetVoilier/Objects/mytimer.o | Bin 0 -> 5436 bytes ProjetVoilier/Objects/myuart.d | 6 + ProjetVoilier/Objects/myuart.o | Bin 0 -> 10292 bytes ProjetVoilier/Objects/principal.d | 8 + ProjetVoilier/Objects/principal.o | Bin 0 -> 5116 bytes ProjetVoilier/Objects/pwm.d | 6 + ProjetVoilier/Objects/pwm.o | Bin 0 -> 6156 bytes ProjetVoilier/Objects/servo.d | 7 + ProjetVoilier/Objects/servo.o | Bin 0 -> 4696 bytes ProjetVoilier/Objects/startup_stm32f10x_md.o | Bin 0 -> 6048 bytes ProjetVoilier/Objects/system_stm32f10x.d | 5 + ProjetVoilier/Objects/system_stm32f10x.o | Bin 0 -> 6992 bytes ProjetVoilier/Objects/timer.d | 6 + ProjetVoilier/Objects/timer.o | Bin 0 -> 4552 bytes ProjetVoilier/Pilotes/Include/DriverGPIO.h | 17 + ProjetVoilier/Pilotes/Include/Horloge.h | 16 + ProjetVoilier/Pilotes/Include/I2C.h | 2 + ProjetVoilier/Pilotes/Include/MYGPIO.h | 38 + ProjetVoilier/Pilotes/Include/MyI2C.h | 229 + ProjetVoilier/Pilotes/Include/MySPI.h | 129 + ProjetVoilier/Pilotes/Include/MyTimer.h | 12 + ProjetVoilier/Pilotes/Include/PWM.h | 9 + ProjetVoilier/Pilotes/Include/Timer.h | 8 + ProjetVoilier/Pilotes/Source/DriverGPIO.c | 74 + ProjetVoilier/Pilotes/Source/Horloge.c | 44 + ProjetVoilier/Pilotes/Source/I2C.c | 9 + ProjetVoilier/Pilotes/Source/MYGPIO.c | 97 + ProjetVoilier/Pilotes/Source/MyTimer.c | 43 + ProjetVoilier/Pilotes/Source/MyUart.c | 61 + ProjetVoilier/Pilotes/Source/PWM.c | 85 + ProjetVoilier/Pilotes/Source/Timer.c | 27 + ProjetVoilier/Pilotes/null | 0 ProjetVoilier/ProjetVoilier.uvguix.orvik | 3673 +++++++++++++++++ ProjetVoilier/ProjetVoilier.uvoptx | 144 +- ProjetVoilier/ProjetVoilier.uvprojx | 124 +- .../RTE/Device/STM32F103RB/RTE_Device.h | 1828 ++++++++ .../STM32F103RB/RTE_Device.h.base@1.1.2 | 1828 ++++++++ .../STM32F101_102_103_105_107.dbgconf | 36 + ...M32F101_102_103_105_107.dbgconf.base@1.0.0 | 36 + .../Device/STM32F103RB/startup_stm32f10x_md.s | 308 ++ .../startup_stm32f10x_md.s.base@1.0.1 | 308 ++ .../RTE/Device/STM32F103RB/system_stm32f10x.c | 1092 +++++ .../STM32F103RB/system_stm32f10x.c.base@1.0.1 | 1092 +++++ ProjetVoilier/RTE/_Reel/RTE_Components.h | 20 + .../RTE/_Simulation/RTE_Components.h | 20 + .../Services/Include/Accelerometre.h | 21 + ProjetVoilier/Services/Include/Girouette.h | 8 + ProjetVoilier/Services/Include/Servo.h | 7 + ProjetVoilier/Services/Source/Accelerometre.c | 68 + ProjetVoilier/Services/Source/Girouette.c | 61 + ProjetVoilier/Services/Source/Servo.c | 27 + ProjetVoilier/Services/null | 0 79 files changed, 13495 insertions(+), 13 deletions(-) create mode 100644 ProjetVoilier/DebugConfig/Reel_STM32F103RB_1.0.0.dbgconf create mode 100644 ProjetVoilier/EventRecorderStub.scvd create mode 100644 ProjetVoilier/Listings/Projet3FISA.map create mode 100644 ProjetVoilier/Objects/ExtDll.iex create mode 100644 ProjetVoilier/Objects/Projet3FISA.axf create mode 100644 ProjetVoilier/Objects/Projet3FISA.build_log.htm create mode 100644 ProjetVoilier/Objects/Projet3FISA.htm create mode 100644 ProjetVoilier/Objects/Projet3FISA.lnp create mode 100644 ProjetVoilier/Objects/ProjetVoilier_Reel.dep create mode 100644 ProjetVoilier/Objects/accelerometre.d create mode 100644 ProjetVoilier/Objects/accelerometre.o create mode 100644 ProjetVoilier/Objects/adc.d create mode 100644 ProjetVoilier/Objects/adc.o create mode 100644 ProjetVoilier/Objects/drivergpio.d create mode 100644 ProjetVoilier/Objects/drivergpio.o create mode 100644 ProjetVoilier/Objects/girouette.d create mode 100644 ProjetVoilier/Objects/girouette.o create mode 100644 ProjetVoilier/Objects/horloge.d create mode 100644 ProjetVoilier/Objects/horloge.o create mode 100644 ProjetVoilier/Objects/i2c.d create mode 100644 ProjetVoilier/Objects/i2c.o create mode 100644 ProjetVoilier/Objects/it.d create mode 100644 ProjetVoilier/Objects/it.o create mode 100644 ProjetVoilier/Objects/mygpio.d create mode 100644 ProjetVoilier/Objects/mygpio.o create mode 100644 ProjetVoilier/Objects/mytimer.d create mode 100644 ProjetVoilier/Objects/mytimer.o create mode 100644 ProjetVoilier/Objects/myuart.d create mode 100644 ProjetVoilier/Objects/myuart.o create mode 100644 ProjetVoilier/Objects/principal.d create mode 100644 ProjetVoilier/Objects/principal.o create mode 100644 ProjetVoilier/Objects/pwm.d create mode 100644 ProjetVoilier/Objects/pwm.o create mode 100644 ProjetVoilier/Objects/servo.d create mode 100644 ProjetVoilier/Objects/servo.o create mode 100644 ProjetVoilier/Objects/startup_stm32f10x_md.o create mode 100644 ProjetVoilier/Objects/system_stm32f10x.d create mode 100644 ProjetVoilier/Objects/system_stm32f10x.o create mode 100644 ProjetVoilier/Objects/timer.d create mode 100644 ProjetVoilier/Objects/timer.o create mode 100644 ProjetVoilier/Pilotes/Include/DriverGPIO.h create mode 100644 ProjetVoilier/Pilotes/Include/Horloge.h create mode 100644 ProjetVoilier/Pilotes/Include/I2C.h create mode 100644 ProjetVoilier/Pilotes/Include/MYGPIO.h create mode 100644 ProjetVoilier/Pilotes/Include/MyI2C.h create mode 100644 ProjetVoilier/Pilotes/Include/MySPI.h create mode 100644 ProjetVoilier/Pilotes/Include/MyTimer.h create mode 100644 ProjetVoilier/Pilotes/Include/PWM.h create mode 100644 ProjetVoilier/Pilotes/Include/Timer.h create mode 100644 ProjetVoilier/Pilotes/Source/DriverGPIO.c create mode 100644 ProjetVoilier/Pilotes/Source/Horloge.c create mode 100644 ProjetVoilier/Pilotes/Source/I2C.c create mode 100644 ProjetVoilier/Pilotes/Source/MYGPIO.c create mode 100644 ProjetVoilier/Pilotes/Source/MyTimer.c create mode 100644 ProjetVoilier/Pilotes/Source/MyUart.c create mode 100644 ProjetVoilier/Pilotes/Source/PWM.c create mode 100644 ProjetVoilier/Pilotes/Source/Timer.c delete mode 100644 ProjetVoilier/Pilotes/null create mode 100644 ProjetVoilier/ProjetVoilier.uvguix.orvik create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h.base@1.1.2 create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf.base@1.0.0 create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s.base@1.0.1 create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c create mode 100644 ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c.base@1.0.1 create mode 100644 ProjetVoilier/RTE/_Reel/RTE_Components.h create mode 100644 ProjetVoilier/RTE/_Simulation/RTE_Components.h create mode 100644 ProjetVoilier/Services/Include/Accelerometre.h create mode 100644 ProjetVoilier/Services/Include/Girouette.h create mode 100644 ProjetVoilier/Services/Include/Servo.h create mode 100644 ProjetVoilier/Services/Source/Accelerometre.c create mode 100644 ProjetVoilier/Services/Source/Girouette.c create mode 100644 ProjetVoilier/Services/Source/Servo.c delete mode 100644 ProjetVoilier/Services/null diff --git a/ProjetVoilier/Application/principal.c b/ProjetVoilier/Application/principal.c index cbc54b4..391c681 100644 --- a/ProjetVoilier/Application/principal.c +++ b/ProjetVoilier/Application/principal.c @@ -1,11 +1,54 @@ -#include "stm32f10x.h" +#include +#include // Pour print +#include +#include "Accelerometre.h" -int main ( void ) -{ - RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ; +#include "Girouette.h" +#include "Servo.h" +#include "I2C.h" + + +//Variables +int angleVentVar; +int angleVoileVar; + +uint16_t moyenne[LONGUEUR_MOY]; +uint32_t sum; +//uint16_t i; +volatile uint32_t moy; // Volatile pour pouvoir le regarder dans Keil µVision + +int main ( void ){ + // ---- Setup ------ + //Servo.c + initServo(TIM4, 3); + // Giroutte.c + configEncoder(TIM2); + + + // Initialisation des modules + initAccelo(); + initLacheur(); + for (int p = 0; p= LONGUEUR_MOY) {i = 0;} // Géstion de la position i dans le tableau pour la moyenne glissante + sum = 0; + for (int j = 0; j < LONGUEUR_MOY; j++){sum += moyenne[j];} moy = sum / LONGUEUR_MOY; // Calcul de la moyenne glissante + //LacheVoile(ANGLE_LIMITE, (uint16_t) moy); // Lache la voile si le bateau dépasse l'angle limite + + } +}; diff --git a/ProjetVoilier/DebugConfig/Reel_STM32F103RB_1.0.0.dbgconf b/ProjetVoilier/DebugConfig/Reel_STM32F103RB_1.0.0.dbgconf new file mode 100644 index 0000000..9c4804d --- /dev/null +++ b/ProjetVoilier/DebugConfig/Reel_STM32F103RB_1.0.0.dbgconf @@ -0,0 +1,36 @@ +// File: STM32F101_102_103_105_107.dbgconf +// Version: 1.0.0 +// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008) +// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets + +// <<< Use Configuration Wizard in Context Menu >>> + +// Debug MCU configuration register (DBGMCU_CR) +// Reserved bits must be kept at reset value +// DBG_TIM11_STOP TIM11 counter stopped when core is halted +// DBG_TIM10_STOP TIM10 counter stopped when core is halted +// DBG_TIM9_STOP TIM9 counter stopped when core is halted +// DBG_TIM14_STOP TIM14 counter stopped when core is halted +// DBG_TIM13_STOP TIM13 counter stopped when core is halted +// DBG_TIM12_STOP TIM12 counter stopped when core is halted +// DBG_CAN2_STOP Debug CAN2 stopped when core is halted +// DBG_TIM7_STOP TIM7 counter stopped when core is halted +// DBG_TIM6_STOP TIM6 counter stopped when core is halted +// DBG_TIM5_STOP TIM5 counter stopped when core is halted +// DBG_TIM8_STOP TIM8 counter stopped when core is halted +// DBG_I2C2_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C1_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_CAN1_STOP Debug CAN1 stopped when Core is halted +// DBG_TIM4_STOP TIM4 counter stopped when core is halted +// DBG_TIM3_STOP TIM3 counter stopped when core is halted +// DBG_TIM2_STOP TIM2 counter stopped when core is halted +// DBG_TIM1_STOP TIM1 counter stopped when core is halted +// DBG_WWDG_STOP Debug window watchdog stopped when core is halted +// DBG_IWDG_STOP Debug independent watchdog stopped when core is halted +// DBG_STANDBY Debug standby mode +// DBG_STOP Debug stop mode +// DBG_SLEEP Debug sleep mode +// +DbgMCU_CR = 0x00000007; + +// <<< end of configuration section >>> diff --git a/ProjetVoilier/EventRecorderStub.scvd b/ProjetVoilier/EventRecorderStub.scvd new file mode 100644 index 0000000..0fb3ee5 --- /dev/null +++ b/ProjetVoilier/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ProjetVoilier/Listings/Projet3FISA.map b/ProjetVoilier/Listings/Projet3FISA.map new file mode 100644 index 0000000..469243c --- /dev/null +++ b/ProjetVoilier/Listings/Projet3FISA.map @@ -0,0 +1,889 @@ +Component: Arm Compiler for Embedded 6.23 Tool: armlink [5f102400] + +============================================================================== + +Section Cross References + + principal.o(.text.main) refers to servo.o(.text.initServo) for initServo + principal.o(.text.main) refers to girouette.o(.text.configEncoder) for configEncoder + principal.o(.text.main) refers to accelerometre.o(.text.initAccelo) for initAccelo + principal.o(.text.main) refers to accelerometre.o(.text.initLacheur) for initLacheur + principal.o(.text.main) refers to principal.o(.bss.moyenne) for moyenne + principal.o(.text.main) refers to girouette.o(.text.LocaliserZero) for LocaliserZero + principal.o(.text.main) refers to girouette.o(.text.angleVent) for angleVent + principal.o(.text.main) refers to principal.o(.bss.angleVentVar) for angleVentVar + principal.o(.text.main) refers to girouette.o(.text.vent2voile) for vent2voile + principal.o(.text.main) refers to principal.o(.bss.angleVoileVar) for angleVoileVar + principal.o(.text.main) refers to servo.o(.text.Servo_Moteur) for Servo_Moteur + principal.o(.text.main) refers to accelerometre.o(.text.RecupAccelo) for RecupAccelo + principal.o(.text.main) refers to principal.o(.bss.sum) for sum + principal.o(.text.main) refers to principal.o(.bss.moy) for moy + principal.o(.ARM.exidx.text.main) refers to principal.o(.text.main) for [Anonymous Symbol] + accelerometre.o(.ARM.exidx.text.initAccelo) refers to accelerometre.o(.text.initAccelo) for [Anonymous Symbol] + accelerometre.o(.text.RecupAccelo) refers to accelerometre.o(.bss.RecupAccelo.Messie) for RecupAccelo.Messie + accelerometre.o(.ARM.exidx.text.RecupAccelo) refers to accelerometre.o(.text.RecupAccelo) for [Anonymous Symbol] + accelerometre.o(.text.initLacheur) refers to horloge.o(.text.Timer_Init) for Timer_Init + accelerometre.o(.ARM.exidx.text.initLacheur) refers to accelerometre.o(.text.initLacheur) for [Anonymous Symbol] + accelerometre.o(.text.LacheVoile) refers to servo.o(.text.Servo_Moteur) for Servo_Moteur + accelerometre.o(.ARM.exidx.text.LacheVoile) refers to accelerometre.o(.text.LacheVoile) for [Anonymous Symbol] + girouette.o(.text.configEncoder) refers to timer.o(.text.EnableTimer) for EnableTimer + girouette.o(.text.configEncoder) refers to drivergpio.o(.text.MyGPIO_Init) for MyGPIO_Init + girouette.o(.ARM.exidx.text.configEncoder) refers to girouette.o(.text.configEncoder) for [Anonymous Symbol] + girouette.o(.ARM.exidx.text.angleVent) refers to girouette.o(.text.angleVent) for [Anonymous Symbol] + girouette.o(.ARM.exidx.text.vent2voile) refers to girouette.o(.text.vent2voile) for [Anonymous Symbol] + girouette.o(.text.LocaliserZero) refers to drivergpio.o(.text.MyGPIO_Read) for MyGPIO_Read + girouette.o(.ARM.exidx.text.LocaliserZero) refers to girouette.o(.text.LocaliserZero) for [Anonymous Symbol] + myuart.o(.text.My_USART_Config) refers to drivergpio.o(.text.MyGPIO_Init) for MyGPIO_Init + myuart.o(.text.My_USART_Config) refers to myuart.o(.text.__NVIC_EnableIRQ) for __NVIC_EnableIRQ + myuart.o(.text.My_USART_Config) refers to myuart.o(.text.__NVIC_SetPriority) for __NVIC_SetPriority + myuart.o(.ARM.exidx.text.My_USART_Config) refers to myuart.o(.text.My_USART_Config) for [Anonymous Symbol] + myuart.o(.ARM.exidx.text.__NVIC_EnableIRQ) refers to myuart.o(.text.__NVIC_EnableIRQ) for [Anonymous Symbol] + myuart.o(.ARM.exidx.text.__NVIC_SetPriority) refers to myuart.o(.text.__NVIC_SetPriority) for [Anonymous Symbol] + myuart.o(.ARM.exidx.text.USART_Send_Char) refers to myuart.o(.text.USART_Send_Char) for [Anonymous Symbol] + myuart.o(.text.USART_Send_String) refers to myuart.o(.text.USART_Send_Char) for USART_Send_Char + myuart.o(.ARM.exidx.text.USART_Send_String) refers to myuart.o(.text.USART_Send_String) for [Anonymous Symbol] + myuart.o(.ARM.exidx.text.USART_IT_Receive_Enable) refers to myuart.o(.text.USART_IT_Receive_Enable) for [Anonymous Symbol] + myuart.o(.text.Init_IT_Receive) refers to myuart.o(.bss.pFnc_Receive) for pFnc_Receive + myuart.o(.ARM.exidx.text.Init_IT_Receive) refers to myuart.o(.text.Init_IT_Receive) for [Anonymous Symbol] + myuart.o(.text.USART1_IRQHandler) refers to myuart.o(.bss.pFnc_Receive) for pFnc_Receive + myuart.o(.ARM.exidx.text.USART1_IRQHandler) refers to myuart.o(.text.USART1_IRQHandler) for [Anonymous Symbol] + servo.o(.text.Servo_Moteur) refers to pwm.o(.text.Set_DutyCycle_PWM) for Set_DutyCycle_PWM + servo.o(.ARM.exidx.text.Servo_Moteur) refers to servo.o(.text.Servo_Moteur) for [Anonymous Symbol] + servo.o(.text.initServo) refers to horloge.o(.text.Timer_Init) for Timer_Init + servo.o(.text.initServo) refers to drivergpio.o(.text.MyGPIO_Init) for MyGPIO_Init + servo.o(.text.initServo) refers to pwm.o(.text.MyTimer_PWM) for MyTimer_PWM + servo.o(.ARM.exidx.text.initServo) refers to servo.o(.text.initServo) for [Anonymous Symbol] + drivergpio.o(.ARM.exidx.text.MyGPIO_Init) refers to drivergpio.o(.text.MyGPIO_Init) for [Anonymous Symbol] + drivergpio.o(.ARM.exidx.text.MyGPIO_Read) refers to drivergpio.o(.text.MyGPIO_Read) for [Anonymous Symbol] + drivergpio.o(.ARM.exidx.text.MyGPIO_Set) refers to drivergpio.o(.text.MyGPIO_Set) for [Anonymous Symbol] + drivergpio.o(.ARM.exidx.text.MyGPIO_Reset) refers to drivergpio.o(.text.MyGPIO_Reset) for [Anonymous Symbol] + drivergpio.o(.ARM.exidx.text.MyGPIO_Toggle) refers to drivergpio.o(.text.MyGPIO_Toggle) for [Anonymous Symbol] + horloge.o(.ARM.exidx.text.Timer_Init) refers to horloge.o(.text.Timer_Init) for [Anonymous Symbol] + horloge.o(.text.TIM2_IRQHandler) refers to horloge.o(.bss.TIM2_Appel) for TIM2_Appel + horloge.o(.ARM.exidx.text.TIM2_IRQHandler) refers to horloge.o(.text.TIM2_IRQHandler) for [Anonymous Symbol] + horloge.o(.text.MyTimer_ActiveIT) refers to horloge.o(.bss.TIM2_Appel) for TIM2_Appel + horloge.o(.text.MyTimer_ActiveIT) refers to horloge.o(.text.__NVIC_EnableIRQ) for __NVIC_EnableIRQ + horloge.o(.text.MyTimer_ActiveIT) refers to horloge.o(.text.__NVIC_SetPriority) for __NVIC_SetPriority + horloge.o(.ARM.exidx.text.MyTimer_ActiveIT) refers to horloge.o(.text.MyTimer_ActiveIT) for [Anonymous Symbol] + horloge.o(.ARM.exidx.text.__NVIC_EnableIRQ) refers to horloge.o(.text.__NVIC_EnableIRQ) for [Anonymous Symbol] + horloge.o(.ARM.exidx.text.__NVIC_SetPriority) refers to horloge.o(.text.__NVIC_SetPriority) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.initGPIO_Interne) refers to mygpio.o(.text.initGPIO_Interne) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.boutonAppuye_Interne) refers to mygpio.o(.text.boutonAppuye_Interne) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.allumerDEL_Interne) refers to mygpio.o(.text.allumerDEL_Interne) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.eteindreDEL_Interne) refers to mygpio.o(.text.eteindreDEL_Interne) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.commuterDEL_Interne) refers to mygpio.o(.text.commuterDEL_Interne) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.initGPIO_Externe) refers to mygpio.o(.text.initGPIO_Externe) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.boutonAppuye_Externe) refers to mygpio.o(.text.boutonAppuye_Externe) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.allumerDEL_Externe) refers to mygpio.o(.text.allumerDEL_Externe) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.eteindreDEL_Externe) refers to mygpio.o(.text.eteindreDEL_Externe) for [Anonymous Symbol] + mygpio.o(.ARM.exidx.text.commuterDEL_Externe) refers to mygpio.o(.text.commuterDEL_Externe) for [Anonymous Symbol] + mytimer.o(.text.Test) refers to mytimer.o(.bss.g_tick_count) for g_tick_count + mytimer.o(.text.Test) refers to drivergpio.o(.text.MyGPIO_Toggle) for MyGPIO_Toggle + mytimer.o(.ARM.exidx.text.Test) refers to mytimer.o(.text.Test) for [Anonymous Symbol] + mytimer.o(.text.ConfigureTimers) refers to horloge.o(.text.Timer_Init) for Timer_Init + mytimer.o(.ARM.exidx.text.ConfigureTimers) refers to mytimer.o(.text.ConfigureTimers) for [Anonymous Symbol] + mytimer.o(.text.ConfigureIT) refers to mytimer.o(.text.Test) for Test + mytimer.o(.text.ConfigureIT) refers to horloge.o(.text.MyTimer_ActiveIT) for MyTimer_ActiveIT + mytimer.o(.ARM.exidx.text.ConfigureIT) refers to mytimer.o(.text.ConfigureIT) for [Anonymous Symbol] + mytimer.o(.text.ConfigurePWM) refers to pwm.o(.text.MyTimer_PWM) for MyTimer_PWM + mytimer.o(.ARM.exidx.text.ConfigurePWM) refers to mytimer.o(.text.ConfigurePWM) for [Anonymous Symbol] + pwm.o(.ARM.exidx.text.MyTimer_PWM) refers to pwm.o(.text.MyTimer_PWM) for [Anonymous Symbol] + pwm.o(.ARM.exidx.text.Set_DutyCycle_PWM) refers to pwm.o(.text.Set_DutyCycle_PWM) for [Anonymous Symbol] + timer.o(.ARM.exidx.text.MyTimer_Base_Init) refers to timer.o(.text.MyTimer_Base_Init) for [Anonymous Symbol] + timer.o(.ARM.exidx.text.EnableTimer) refers to timer.o(.text.EnableTimer) for [Anonymous Symbol] + i2c.o(.ARM.exidx.text.initI2C) refers to i2c.o(.text.initI2C) for [Anonymous Symbol] + startup_stm32f10x_md.o(STACK) refers (Special) to heapauxi.o(.text) for __use_two_region_memory + startup_stm32f10x_md.o(HEAP) refers (Special) to heapauxi.o(.text) for __use_two_region_memory + startup_stm32f10x_md.o(RESET) refers (Special) to heapauxi.o(.text) for __use_two_region_memory + startup_stm32f10x_md.o(RESET) refers to startup_stm32f10x_md.o(STACK) for __initial_sp + startup_stm32f10x_md.o(RESET) refers to startup_stm32f10x_md.o(.text) for Reset_Handler + startup_stm32f10x_md.o(RESET) refers to horloge.o(.text.TIM2_IRQHandler) for TIM2_IRQHandler + startup_stm32f10x_md.o(RESET) refers to myuart.o(.text.USART1_IRQHandler) for USART1_IRQHandler + startup_stm32f10x_md.o(.text) refers (Special) to heapauxi.o(.text) for __use_two_region_memory + startup_stm32f10x_md.o(.text) refers to system_stm32f10x.o(.text.SystemInit) for SystemInit + startup_stm32f10x_md.o(.text) refers to __main.o(!!!main) for __main + startup_stm32f10x_md.o(.text) refers to startup_stm32f10x_md.o(HEAP) for Heap_Mem + startup_stm32f10x_md.o(.text) refers to startup_stm32f10x_md.o(STACK) for Stack_Mem + system_stm32f10x.o(.text.SystemInit) refers to system_stm32f10x.o(.text.SetSysClock) for SetSysClock + system_stm32f10x.o(.ARM.exidx.text.SystemInit) refers to system_stm32f10x.o(.text.SystemInit) for [Anonymous Symbol] + system_stm32f10x.o(.text.SetSysClock) refers to system_stm32f10x.o(.text.SetSysClockTo72) for SetSysClockTo72 + system_stm32f10x.o(.ARM.exidx.text.SetSysClock) refers to system_stm32f10x.o(.text.SetSysClock) for [Anonymous Symbol] + system_stm32f10x.o(.text.SystemCoreClockUpdate) refers to system_stm32f10x.o(.data.SystemCoreClock) for SystemCoreClock + system_stm32f10x.o(.text.SystemCoreClockUpdate) refers to system_stm32f10x.o(.rodata.AHBPrescTable) for AHBPrescTable + system_stm32f10x.o(.ARM.exidx.text.SystemCoreClockUpdate) refers to system_stm32f10x.o(.text.SystemCoreClockUpdate) for [Anonymous Symbol] + system_stm32f10x.o(.ARM.exidx.text.SetSysClockTo72) refers to system_stm32f10x.o(.text.SetSysClockTo72) for [Anonymous Symbol] + __main.o(!!!main) refers to __rtentry.o(.ARM.Collect$$rtentry$$00000000) for __rt_entry + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) for __rt_entry_li + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) for __rt_entry_main + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) for __rt_entry_postli_1 + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$00000009) for __rt_entry_postsh_1 + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$00000002) for __rt_entry_presh_1 + __rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry4.o(.ARM.Collect$$rtentry$$00000004) for __rt_entry_sh + __rtentry2.o(.ARM.Collect$$rtentry$$00000008) refers to boardinit2.o(.text) for _platform_post_stackheap_init + __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) refers to libinit.o(.ARM.Collect$$libinit$$00000000) for __rt_lib_init + __rtentry2.o(.ARM.Collect$$rtentry$$0000000B) refers to boardinit3.o(.text) for _platform_post_lib_init + __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) refers to principal.o(.text.main) for main + __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) refers to exit.o(.text) for exit + __rtentry2.o(.ARM.exidx) refers to __rtentry2.o(.ARM.Collect$$rtentry$$00000001) for .ARM.Collect$$rtentry$$00000001 + __rtentry2.o(.ARM.exidx) refers to __rtentry2.o(.ARM.Collect$$rtentry$$00000008) for .ARM.Collect$$rtentry$$00000008 + __rtentry2.o(.ARM.exidx) refers to __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) for .ARM.Collect$$rtentry$$0000000A + __rtentry2.o(.ARM.exidx) refers to __rtentry2.o(.ARM.Collect$$rtentry$$0000000B) for .ARM.Collect$$rtentry$$0000000B + __rtentry2.o(.ARM.exidx) refers to __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) for .ARM.Collect$$rtentry$$0000000D + __rtentry4.o(.ARM.Collect$$rtentry$$00000004) refers to sys_stackheap_outer.o(.text) for __user_setup_stackheap + __rtentry4.o(.ARM.exidx) refers to __rtentry4.o(.ARM.Collect$$rtentry$$00000004) for .ARM.Collect$$rtentry$$00000004 + sys_stackheap_outer.o(.text) refers to libspace.o(.text) for __user_perproc_libspace + sys_stackheap_outer.o(.text) refers to startup_stm32f10x_md.o(.text) for __user_initial_stackheap + exit.o(.text) refers to rtexit.o(.ARM.Collect$$rtexit$$00000000) for __rt_exit + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000030) for __rt_lib_init_alloca_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000002E) for __rt_lib_init_argv_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000001D) for __rt_lib_init_atexit_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000023) for __rt_lib_init_clock_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000034) for __rt_lib_init_cpp_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000032) for __rt_lib_init_exceptions_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000002) for __rt_lib_init_fp_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000021) for __rt_lib_init_fp_trap_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000025) for __rt_lib_init_getenv_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000000C) for __rt_lib_init_heap_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000013) for __rt_lib_init_lc_collate_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000015) for __rt_lib_init_lc_ctype_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000017) for __rt_lib_init_lc_monetary_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000019) for __rt_lib_init_lc_numeric_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000001B) for __rt_lib_init_lc_time_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000006) for __rt_lib_init_preinit_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000010) for __rt_lib_init_rand_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000004) for __rt_lib_init_relocate_pie_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000035) for __rt_lib_init_return + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000001F) for __rt_lib_init_signal_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$00000027) for __rt_lib_init_stdio_1 + libinit.o(.ARM.Collect$$libinit$$00000000) refers (Special) to libinit2.o(.ARM.Collect$$libinit$$0000000E) for __rt_lib_init_user_alloc_1 + libspace.o(.text) refers to libspace.o(.bss) for __libspace_start + rtexit.o(.ARM.Collect$$rtexit$$00000000) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000004) for __rt_exit_exit + rtexit.o(.ARM.Collect$$rtexit$$00000000) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000003) for __rt_exit_ls + rtexit.o(.ARM.Collect$$rtexit$$00000000) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000002) for __rt_exit_prels_1 + rtexit.o(.ARM.exidx) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000004) for __rt_exit_exit + rtexit.o(.ARM.exidx) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000003) for __rt_exit_ls + rtexit.o(.ARM.exidx) refers (Special) to rtexit2.o(.ARM.Collect$$rtexit$$00000002) for __rt_exit_prels_1 + rtexit.o(.ARM.exidx) refers to rtexit.o(.ARM.Collect$$rtexit$$00000000) for .ARM.Collect$$rtexit$$00000000 + libinit2.o(.ARM.Collect$$libinit$$00000012) refers to libinit2.o(.ARM.Collect$$libinit$$00000011) for .ARM.Collect$$libinit$$00000011 + libinit2.o(.ARM.Collect$$libinit$$00000014) refers to libinit2.o(.ARM.Collect$$libinit$$00000011) for .ARM.Collect$$libinit$$00000011 + libinit2.o(.ARM.Collect$$libinit$$00000016) refers to libinit2.o(.ARM.Collect$$libinit$$00000011) for .ARM.Collect$$libinit$$00000011 + libinit2.o(.ARM.Collect$$libinit$$00000018) refers to libinit2.o(.ARM.Collect$$libinit$$00000011) for .ARM.Collect$$libinit$$00000011 + libinit2.o(.ARM.Collect$$libinit$$0000001A) refers to libinit2.o(.ARM.Collect$$libinit$$00000011) for .ARM.Collect$$libinit$$00000011 + libinit2.o(.ARM.Collect$$libinit$$00000028) refers to argv_veneer.o(.emb_text) for __ARM_argv_veneer + libinit2.o(.ARM.Collect$$libinit$$00000029) refers to argv_veneer.o(.emb_text) for __ARM_argv_veneer + rtexit2.o(.ARM.Collect$$rtexit$$00000003) refers to libshutdown.o(.ARM.Collect$$libshutdown$$00000000) for __rt_lib_shutdown + rtexit2.o(.ARM.Collect$$rtexit$$00000004) refers to sys_exit.o(.text) for _sys_exit + rtexit2.o(.ARM.exidx) refers to rtexit2.o(.ARM.Collect$$rtexit$$00000001) for .ARM.Collect$$rtexit$$00000001 + rtexit2.o(.ARM.exidx) refers to rtexit2.o(.ARM.Collect$$rtexit$$00000003) for .ARM.Collect$$rtexit$$00000003 + rtexit2.o(.ARM.exidx) refers to rtexit2.o(.ARM.Collect$$rtexit$$00000004) for .ARM.Collect$$rtexit$$00000004 + argv_veneer.o(.emb_text) refers to no_argv.o(.text) for __ARM_get_argv + sys_exit.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_exit.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + sys_exit_hlt.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_exit_hlt.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + _get_argv_nomalloc.o(.text) refers (Special) to hrguard.o(.text) for __heap_region$guard + _get_argv_nomalloc.o(.text) refers to defsig_rtmem_outer.o(.text) for __rt_SIGRTMEM + _get_argv_nomalloc.o(.text) refers to sys_command.o(.text) for _sys_command_string + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) for __rt_lib_shutdown_cpp_1 + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) for __rt_lib_shutdown_fp_trap_1 + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) for __rt_lib_shutdown_heap_1 + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) for __rt_lib_shutdown_return + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) for __rt_lib_shutdown_signal_1 + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) for __rt_lib_shutdown_stdio_1 + libshutdown.o(.ARM.Collect$$libshutdown$$00000000) refers (Special) to libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) for __rt_lib_shutdown_user_alloc_1 + sys_command.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_command.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + sys_command_hlt.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_command_hlt.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + defsig_rtmem_outer.o(.text) refers to defsig_rtmem_inner.o(.text) for __rt_SIGRTMEM_inner + defsig_rtmem_outer.o(.text) refers to defsig_exit.o(.text) for __sig_exit + defsig_rtmem_formal.o(.text) refers to rt_raise.o(.text) for __rt_raise + rt_raise.o(.text) refers to __raise.o(.text) for __raise + rt_raise.o(.text) refers to sys_exit.o(.text) for _sys_exit + defsig_exit.o(.text) refers to sys_exit.o(.text) for _sys_exit + defsig_rtmem_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + __raise.o(.text) refers to defsig.o(CL$$defsig) for __default_signal_handler + defsig_general.o(.text) refers to sys_wrch.o(.text) for _ttywrch + sys_wrch.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_wrch.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + sys_wrch_hlt.o(.text) refers (Special) to use_no_semi.o(.text) for __I$use$semihosting + sys_wrch_hlt.o(.text) refers (Special) to indicate_semi.o(.text) for __semihosting_library_function + defsig.o(CL$$defsig) refers to defsig_rtmem_inner.o(.text) for __rt_SIGRTMEM_inner + defsig_abrt_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_fpe_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_rtred_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_stak_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_pvfn_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_cppl_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_segv_inner.o(.text) refers to defsig_general.o(.text) for __default_signal_display + defsig_other.o(.text) refers to defsig_general.o(.text) for __default_signal_display + + +============================================================================== + +Removing Unused input sections from the image. + + Removing principal.o(.text), (0 bytes). + Removing principal.o(.ARM.exidx.text.main), (8 bytes). + Removing principal.o(.ARM.use_no_argv), (4 bytes). + Removing accelerometre.o(.text), (0 bytes). + Removing accelerometre.o(.ARM.exidx.text.initAccelo), (8 bytes). + Removing accelerometre.o(.ARM.exidx.text.RecupAccelo), (8 bytes). + Removing accelerometre.o(.ARM.exidx.text.initLacheur), (8 bytes). + Removing accelerometre.o(.text.LacheVoile), (64 bytes). + Removing accelerometre.o(.ARM.exidx.text.LacheVoile), (8 bytes). + Removing girouette.o(.text), (0 bytes). + Removing girouette.o(.ARM.exidx.text.configEncoder), (8 bytes). + Removing girouette.o(.ARM.exidx.text.angleVent), (8 bytes). + Removing girouette.o(.ARM.exidx.text.vent2voile), (8 bytes). + Removing girouette.o(.ARM.exidx.text.LocaliserZero), (8 bytes). + Removing myuart.o(.text), (0 bytes). + Removing myuart.o(.text.My_USART_Config), (108 bytes). + Removing myuart.o(.ARM.exidx.text.My_USART_Config), (8 bytes). + Removing myuart.o(.text.__NVIC_EnableIRQ), (48 bytes). + Removing myuart.o(.ARM.exidx.text.__NVIC_EnableIRQ), (8 bytes). + Removing myuart.o(.text.__NVIC_SetPriority), (66 bytes). + Removing myuart.o(.ARM.exidx.text.__NVIC_SetPriority), (8 bytes). + Removing myuart.o(.text.USART_Send_Char), (36 bytes). + Removing myuart.o(.ARM.exidx.text.USART_Send_Char), (8 bytes). + Removing myuart.o(.text.USART_Send_String), (40 bytes). + Removing myuart.o(.ARM.exidx.text.USART_Send_String), (8 bytes). + Removing myuart.o(.text.USART_IT_Receive_Enable), (18 bytes). + Removing myuart.o(.ARM.exidx.text.USART_IT_Receive_Enable), (8 bytes). + Removing myuart.o(.text.Init_IT_Receive), (20 bytes). + Removing myuart.o(.ARM.exidx.text.Init_IT_Receive), (8 bytes). + Removing myuart.o(.ARM.exidx.text.USART1_IRQHandler), (8 bytes). + Removing servo.o(.text), (0 bytes). + Removing servo.o(.ARM.exidx.text.Servo_Moteur), (8 bytes). + Removing servo.o(.ARM.exidx.text.initServo), (8 bytes). + Removing drivergpio.o(.text), (0 bytes). + Removing drivergpio.o(.ARM.exidx.text.MyGPIO_Init), (8 bytes). + Removing drivergpio.o(.ARM.exidx.text.MyGPIO_Read), (8 bytes). + Removing drivergpio.o(.text.MyGPIO_Set), (24 bytes). + Removing drivergpio.o(.ARM.exidx.text.MyGPIO_Set), (8 bytes). + Removing drivergpio.o(.text.MyGPIO_Reset), (28 bytes). + Removing drivergpio.o(.ARM.exidx.text.MyGPIO_Reset), (8 bytes). + Removing drivergpio.o(.text.MyGPIO_Toggle), (30 bytes). + Removing drivergpio.o(.ARM.exidx.text.MyGPIO_Toggle), (8 bytes). + Removing horloge.o(.text), (0 bytes). + Removing horloge.o(.ARM.exidx.text.Timer_Init), (8 bytes). + Removing horloge.o(.ARM.exidx.text.TIM2_IRQHandler), (8 bytes). + Removing horloge.o(.text.MyTimer_ActiveIT), (84 bytes). + Removing horloge.o(.ARM.exidx.text.MyTimer_ActiveIT), (8 bytes). + Removing horloge.o(.text.__NVIC_EnableIRQ), (48 bytes). + Removing horloge.o(.ARM.exidx.text.__NVIC_EnableIRQ), (8 bytes). + Removing horloge.o(.text.__NVIC_SetPriority), (66 bytes). + Removing horloge.o(.ARM.exidx.text.__NVIC_SetPriority), (8 bytes). + Removing mygpio.o(.text), (0 bytes). + Removing mygpio.o(.text.initGPIO_Interne), (66 bytes). + Removing mygpio.o(.ARM.exidx.text.initGPIO_Interne), (8 bytes). + Removing mygpio.o(.text.boutonAppuye_Interne), (16 bytes). + Removing mygpio.o(.ARM.exidx.text.boutonAppuye_Interne), (8 bytes). + Removing mygpio.o(.text.allumerDEL_Interne), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.allumerDEL_Interne), (8 bytes). + Removing mygpio.o(.text.eteindreDEL_Interne), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.eteindreDEL_Interne), (8 bytes). + Removing mygpio.o(.text.commuterDEL_Interne), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.commuterDEL_Interne), (8 bytes). + Removing mygpio.o(.text.initGPIO_Externe), (58 bytes). + Removing mygpio.o(.ARM.exidx.text.initGPIO_Externe), (8 bytes). + Removing mygpio.o(.text.boutonAppuye_Externe), (16 bytes). + Removing mygpio.o(.ARM.exidx.text.boutonAppuye_Externe), (8 bytes). + Removing mygpio.o(.text.allumerDEL_Externe), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.allumerDEL_Externe), (8 bytes). + Removing mygpio.o(.text.eteindreDEL_Externe), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.eteindreDEL_Externe), (8 bytes). + Removing mygpio.o(.text.commuterDEL_Externe), (18 bytes). + Removing mygpio.o(.ARM.exidx.text.commuterDEL_Externe), (8 bytes). + Removing mytimer.o(.text), (0 bytes). + Removing mytimer.o(.text.Test), (32 bytes). + Removing mytimer.o(.ARM.exidx.text.Test), (8 bytes). + Removing mytimer.o(.text.ConfigureTimers), (38 bytes). + Removing mytimer.o(.ARM.exidx.text.ConfigureTimers), (8 bytes). + Removing mytimer.o(.text.ConfigureIT), (26 bytes). + Removing mytimer.o(.ARM.exidx.text.ConfigureIT), (8 bytes). + Removing mytimer.o(.text.ConfigurePWM), (18 bytes). + Removing mytimer.o(.ARM.exidx.text.ConfigurePWM), (8 bytes). + Removing mytimer.o(.bss.g_tick_count), (4 bytes). + Removing pwm.o(.text), (0 bytes). + Removing pwm.o(.ARM.exidx.text.MyTimer_PWM), (8 bytes). + Removing pwm.o(.ARM.exidx.text.Set_DutyCycle_PWM), (8 bytes). + Removing timer.o(.text), (0 bytes). + Removing timer.o(.text.MyTimer_Base_Init), (42 bytes). + Removing timer.o(.ARM.exidx.text.MyTimer_Base_Init), (8 bytes). + Removing timer.o(.ARM.exidx.text.EnableTimer), (8 bytes). + Removing i2c.o(.text), (0 bytes). + Removing i2c.o(.text.initI2C), (42 bytes). + Removing i2c.o(.ARM.exidx.text.initI2C), (8 bytes). + Removing system_stm32f10x.o(.text), (0 bytes). + Removing system_stm32f10x.o(.ARM.exidx.text.SystemInit), (8 bytes). + Removing system_stm32f10x.o(.ARM.exidx.text.SetSysClock), (8 bytes). + Removing system_stm32f10x.o(.text.SystemCoreClockUpdate), (290 bytes). + Removing system_stm32f10x.o(.ARM.exidx.text.SystemCoreClockUpdate), (8 bytes). + Removing system_stm32f10x.o(.ARM.exidx.text.SetSysClockTo72), (8 bytes). + Removing system_stm32f10x.o(.data.SystemCoreClock), (4 bytes). + Removing system_stm32f10x.o(.rodata.AHBPrescTable), (16 bytes). + +100 unused section(s) (total 1876 bytes) removed from the image. + +============================================================================== + +Image Symbol Table + + Local Symbols + + Symbol Name Value Ov Type Size Object(Section) + + ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit1.o ABSOLUTE + ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit2.o ABSOLUTE + ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit3.o ABSOLUTE + ../clib/angel/boardlib.s 0x00000000 Number 0 boardshut.o ABSOLUTE + ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_zi.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry2.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry4.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 rtexit.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 rtexit2.o ABSOLUTE + ../clib/angel/rt.s 0x00000000 Number 0 rt_raise.o ABSOLUTE + ../clib/angel/scatter.s 0x00000000 Number 0 __scatter.o ABSOLUTE + ../clib/angel/startup.s 0x00000000 Number 0 __main.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 sys_stackheap_outer.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 libspace.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 use_no_semi.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 indicate_semi.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_exit.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_exit_hlt.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_command.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_command_hlt.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_wrch.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_wrch_hlt.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 argv_veneer.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 argv_veneer.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 _get_argv_nomalloc.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 no_argv.o ABSOLUTE + ../clib/heapalloc.c 0x00000000 Number 0 hrguard.o ABSOLUTE + ../clib/heapaux.c 0x00000000 Number 0 heapauxi.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libinit.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libinit2.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libshutdown.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libshutdown2.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_outer.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_formal.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_exit.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 __raise.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_general.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_abrt_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_fpe_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtred_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_stak_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_pvfn_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_cppl_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_segv_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_other.o ABSOLUTE + ../clib/signal.s 0x00000000 Number 0 defsig.o ABSOLUTE + ../clib/stdlib.c 0x00000000 Number 0 exit.o ABSOLUTE + ../fplib/fpinit.s 0x00000000 Number 0 fpinit.o ABSOLUTE + ../fplib/fpinit_empty.s 0x00000000 Number 0 fpinit_empty.o ABSOLUTE + Accelerometre.c 0x00000000 Number 0 accelerometre.o ABSOLUTE + DriverGPIO.c 0x00000000 Number 0 drivergpio.o ABSOLUTE + Girouette.c 0x00000000 Number 0 girouette.o ABSOLUTE + Horloge.c 0x00000000 Number 0 horloge.o ABSOLUTE + I2C.c 0x00000000 Number 0 i2c.o ABSOLUTE + MYGPIO.c 0x00000000 Number 0 mygpio.o ABSOLUTE + MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE + MyUart.c 0x00000000 Number 0 myuart.o ABSOLUTE + PWM.c 0x00000000 Number 0 pwm.o ABSOLUTE + RTE/Device/STM32F103RB/startup_stm32f10x_md.s 0x00000000 Number 0 startup_stm32f10x_md.o ABSOLUTE + Servo.c 0x00000000 Number 0 servo.o ABSOLUTE + Timer.c 0x00000000 Number 0 timer.o ABSOLUTE + dc.s 0x00000000 Number 0 dc.o ABSOLUTE + principal.c 0x00000000 Number 0 principal.o ABSOLUTE + system_stm32f10x.c 0x00000000 Number 0 system_stm32f10x.o ABSOLUTE + RESET 0x08000000 Section 236 startup_stm32f10x_md.o(RESET) + !!!main 0x080000ec Section 8 __main.o(!!!main) + !!!scatter 0x080000f4 Section 92 __scatter.o(!!!scatter) + !!handler_null 0x08000150 Section 2 __scatter.o(!!handler_null) + !!handler_zi 0x08000154 Section 28 __scatter_zi.o(!!handler_zi) + .ARM.Collect$$libinit$$00000000 0x08000170 Section 2 libinit.o(.ARM.Collect$$libinit$$00000000) + .ARM.Collect$$libinit$$00000002 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000002) + .ARM.Collect$$libinit$$00000004 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000004) + .ARM.Collect$$libinit$$00000006 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000006) + .ARM.Collect$$libinit$$0000000C 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) + .ARM.Collect$$libinit$$0000000E 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) + .ARM.Collect$$libinit$$00000010 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000010) + .ARM.Collect$$libinit$$00000013 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000013) + .ARM.Collect$$libinit$$00000015 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000015) + .ARM.Collect$$libinit$$00000017 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000017) + .ARM.Collect$$libinit$$00000019 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000019) + .ARM.Collect$$libinit$$0000001B 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) + .ARM.Collect$$libinit$$0000001D 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) + .ARM.Collect$$libinit$$0000001F 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) + .ARM.Collect$$libinit$$00000021 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000021) + .ARM.Collect$$libinit$$00000023 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000023) + .ARM.Collect$$libinit$$00000025 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000025) + .ARM.Collect$$libinit$$00000027 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000027) + .ARM.Collect$$libinit$$0000002E 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) + .ARM.Collect$$libinit$$00000030 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000030) + .ARM.Collect$$libinit$$00000032 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000032) + .ARM.Collect$$libinit$$00000034 0x08000172 Section 0 libinit2.o(.ARM.Collect$$libinit$$00000034) + .ARM.Collect$$libinit$$00000035 0x08000172 Section 2 libinit2.o(.ARM.Collect$$libinit$$00000035) + .ARM.Collect$$libshutdown$$00000000 0x08000174 Section 2 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) + .ARM.Collect$$libshutdown$$00000002 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) + .ARM.Collect$$libshutdown$$00000004 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) + .ARM.Collect$$libshutdown$$00000007 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) + .ARM.Collect$$libshutdown$$0000000A 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) + .ARM.Collect$$libshutdown$$0000000C 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) + .ARM.Collect$$libshutdown$$0000000F 0x08000176 Section 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) + .ARM.Collect$$libshutdown$$00000010 0x08000176 Section 2 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) + .ARM.Collect$$rtentry$$00000000 0x08000178 Section 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) + .ARM.Collect$$rtentry$$00000002 0x08000178 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) + .ARM.Collect$$rtentry$$00000004 0x08000178 Section 6 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) + .ARM.Collect$$rtentry$$00000009 0x0800017e Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) + .ARM.Collect$$rtentry$$0000000A 0x0800017e Section 4 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) + .ARM.Collect$$rtentry$$0000000C 0x08000182 Section 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) + .ARM.Collect$$rtentry$$0000000D 0x08000182 Section 8 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) + .ARM.Collect$$rtexit$$00000000 0x0800018a Section 2 rtexit.o(.ARM.Collect$$rtexit$$00000000) + .ARM.Collect$$rtexit$$00000002 0x0800018c Section 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) + .ARM.Collect$$rtexit$$00000003 0x0800018c Section 4 rtexit2.o(.ARM.Collect$$rtexit$$00000003) + .ARM.Collect$$rtexit$$00000004 0x08000190 Section 6 rtexit2.o(.ARM.Collect$$rtexit$$00000004) + .text 0x08000198 Section 64 startup_stm32f10x_md.o(.text) + .text 0x080001d8 Section 0 heapauxi.o(.text) + .text 0x080001de Section 74 sys_stackheap_outer.o(.text) + .text 0x08000228 Section 0 exit.o(.text) + .text 0x0800023c Section 8 libspace.o(.text) + .text 0x08000244 Section 0 sys_exit.o(.text) + .text 0x08000250 Section 2 use_no_semi.o(.text) + .text 0x08000252 Section 0 indicate_semi.o(.text) + [Anonymous Symbol] 0x08000254 Section 0 timer.o(.text.EnableTimer) + [Anonymous Symbol] 0x080002e8 Section 0 girouette.o(.text.LocaliserZero) + [Anonymous Symbol] 0x08000324 Section 0 drivergpio.o(.text.MyGPIO_Init) + [Anonymous Symbol] 0x080004ec Section 0 drivergpio.o(.text.MyGPIO_Read) + [Anonymous Symbol] 0x08000508 Section 0 pwm.o(.text.MyTimer_PWM) + [Anonymous Symbol] 0x080008fc Section 0 accelerometre.o(.text.RecupAccelo) + [Anonymous Symbol] 0x08000934 Section 0 servo.o(.text.Servo_Moteur) + SetSysClock 0x0800096d Thumb Code 8 system_stm32f10x.o(.text.SetSysClock) + [Anonymous Symbol] 0x0800096c Section 0 system_stm32f10x.o(.text.SetSysClock) + SetSysClockTo72 0x08000975 Thumb Code 290 system_stm32f10x.o(.text.SetSysClockTo72) + [Anonymous Symbol] 0x08000974 Section 0 system_stm32f10x.o(.text.SetSysClockTo72) + [Anonymous Symbol] 0x08000a98 Section 0 pwm.o(.text.Set_DutyCycle_PWM) + [Anonymous Symbol] 0x08000b00 Section 0 system_stm32f10x.o(.text.SystemInit) + [Anonymous Symbol] 0x08000b68 Section 0 horloge.o(.text.TIM2_IRQHandler) + [Anonymous Symbol] 0x08000ba8 Section 0 horloge.o(.text.Timer_Init) + [Anonymous Symbol] 0x08000c70 Section 0 myuart.o(.text.USART1_IRQHandler) + [Anonymous Symbol] 0x08000ca8 Section 0 girouette.o(.text.angleVent) + [Anonymous Symbol] 0x08000ce0 Section 0 girouette.o(.text.configEncoder) + [Anonymous Symbol] 0x08000d7c Section 0 accelerometre.o(.text.initAccelo) + [Anonymous Symbol] 0x08000db0 Section 0 accelerometre.o(.text.initLacheur) + [Anonymous Symbol] 0x08000de0 Section 0 servo.o(.text.initServo) + [Anonymous Symbol] 0x08000e3c Section 0 principal.o(.text.main) + [Anonymous Symbol] 0x08000f58 Section 0 girouette.o(.text.vent2voile) + .bss 0x20000000 Section 96 libspace.o(.bss) + RecupAccelo.Messie 0x20000060 Data 6 accelerometre.o(.bss.RecupAccelo.Messie) + [Anonymous Symbol] 0x20000060 Section 0 accelerometre.o(.bss.RecupAccelo.Messie) + TIM2_Appel 0x20000068 Data 4 horloge.o(.bss.TIM2_Appel) + [Anonymous Symbol] 0x20000068 Section 0 horloge.o(.bss.TIM2_Appel) + Heap_Mem 0x20000098 Data 512 startup_stm32f10x_md.o(HEAP) + HEAP 0x20000098 Section 512 startup_stm32f10x_md.o(HEAP) + Stack_Mem 0x20000298 Data 1024 startup_stm32f10x_md.o(STACK) + STACK 0x20000298 Section 1024 startup_stm32f10x_md.o(STACK) + __initial_sp 0x20000698 Data 0 startup_stm32f10x_md.o(STACK) + + Global Symbols + + Symbol Name Value Ov Type Size Object(Section) + + BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$~IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$ROPI$EBA8$UX$STANDARDLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE + __fp_init_empty 0x00000000 Number 0 fpinit_empty.o ABSOLUTE + __ARM_exceptions_init - Undefined Weak Reference + __alloca_initialize - Undefined Weak Reference + __arm_preinit_ - Undefined Weak Reference + __arm_relocate_pie_ - Undefined Weak Reference + __cpp_initialize__aeabi_ - Undefined Weak Reference + __cxa_finalize - Undefined Weak Reference + __rt_locale - Undefined Weak Reference + __sigvec_lookup - Undefined Weak Reference + _atexit_init - Undefined Weak Reference + _call_atexit_fns - Undefined Weak Reference + _clock_init - Undefined Weak Reference + _fp_trap_init - Undefined Weak Reference + _fp_trap_shutdown - Undefined Weak Reference + _get_lc_collate - Undefined Weak Reference + _get_lc_ctype - Undefined Weak Reference + _get_lc_monetary - Undefined Weak Reference + _get_lc_numeric - Undefined Weak Reference + _get_lc_time - Undefined Weak Reference + _getenv_init - Undefined Weak Reference + _handle_redirection - Undefined Weak Reference + _init_alloc - Undefined Weak Reference + _init_user_alloc - Undefined Weak Reference + _initio - Undefined Weak Reference + _rand_init - Undefined Weak Reference + _signal_finish - Undefined Weak Reference + _signal_init - Undefined Weak Reference + _terminate_alloc - Undefined Weak Reference + _terminate_user_alloc - Undefined Weak Reference + _terminateio - Undefined Weak Reference + __Vectors_Size 0x000000ec Number 0 startup_stm32f10x_md.o ABSOLUTE + __Vectors 0x08000000 Data 4 startup_stm32f10x_md.o(RESET) + __Vectors_End 0x080000ec Data 0 startup_stm32f10x_md.o(RESET) + __main 0x080000ed Thumb Code 8 __main.o(!!!main) + __scatterload 0x080000f5 Thumb Code 0 __scatter.o(!!!scatter) + __scatterload_rt2 0x080000f5 Thumb Code 84 __scatter.o(!!!scatter) + __scatterload_rt2_thumb_only 0x080000f5 Thumb Code 0 __scatter.o(!!!scatter) + __scatterload_loop 0x080000ff Thumb Code 0 __scatter.o(!!!scatter) + __scatterload_null 0x08000151 Thumb Code 2 __scatter.o(!!handler_null) + __scatterload_zeroinit 0x08000155 Thumb Code 28 __scatter_zi.o(!!handler_zi) + __rt_lib_init 0x08000171 Thumb Code 0 libinit.o(.ARM.Collect$$libinit$$00000000) + __rt_lib_init_alloca_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000030) + __rt_lib_init_argv_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000002E) + __rt_lib_init_atexit_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001D) + __rt_lib_init_clock_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000023) + __rt_lib_init_cpp_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000034) + __rt_lib_init_exceptions_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000032) + __rt_lib_init_fp_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000002) + __rt_lib_init_fp_trap_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000021) + __rt_lib_init_getenv_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000025) + __rt_lib_init_heap_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000C) + __rt_lib_init_lc_collate_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000013) + __rt_lib_init_lc_ctype_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000015) + __rt_lib_init_lc_monetary_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000017) + __rt_lib_init_lc_numeric_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000019) + __rt_lib_init_lc_time_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001B) + __rt_lib_init_preinit_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000006) + __rt_lib_init_rand_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000010) + __rt_lib_init_relocate_pie_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000004) + __rt_lib_init_return 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000035) + __rt_lib_init_signal_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000001F) + __rt_lib_init_stdio_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$00000027) + __rt_lib_init_user_alloc_1 0x08000173 Thumb Code 0 libinit2.o(.ARM.Collect$$libinit$$0000000E) + __rt_lib_shutdown 0x08000175 Thumb Code 0 libshutdown.o(.ARM.Collect$$libshutdown$$00000000) + __rt_lib_shutdown_cpp_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000002) + __rt_lib_shutdown_fp_trap_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000007) + __rt_lib_shutdown_heap_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F) + __rt_lib_shutdown_return 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000010) + __rt_lib_shutdown_signal_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A) + __rt_lib_shutdown_stdio_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$00000004) + __rt_lib_shutdown_user_alloc_1 0x08000177 Thumb Code 0 libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C) + __rt_entry 0x08000179 Thumb Code 0 __rtentry.o(.ARM.Collect$$rtentry$$00000000) + __rt_entry_presh_1 0x08000179 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000002) + __rt_entry_sh 0x08000179 Thumb Code 0 __rtentry4.o(.ARM.Collect$$rtentry$$00000004) + __rt_entry_li 0x0800017f Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) + __rt_entry_postsh_1 0x0800017f Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$00000009) + __rt_entry_main 0x08000183 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) + __rt_entry_postli_1 0x08000183 Thumb Code 0 __rtentry2.o(.ARM.Collect$$rtentry$$0000000C) + __rt_exit 0x0800018b Thumb Code 0 rtexit.o(.ARM.Collect$$rtexit$$00000000) + __rt_exit_ls 0x0800018d Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000003) + __rt_exit_prels_1 0x0800018d Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000002) + __rt_exit_exit 0x08000191 Thumb Code 0 rtexit2.o(.ARM.Collect$$rtexit$$00000004) + Reset_Handler 0x08000199 Thumb Code 8 startup_stm32f10x_md.o(.text) + NMI_Handler 0x080001a1 Thumb Code 2 startup_stm32f10x_md.o(.text) + HardFault_Handler 0x080001a3 Thumb Code 2 startup_stm32f10x_md.o(.text) + MemManage_Handler 0x080001a5 Thumb Code 2 startup_stm32f10x_md.o(.text) + BusFault_Handler 0x080001a7 Thumb Code 2 startup_stm32f10x_md.o(.text) + UsageFault_Handler 0x080001a9 Thumb Code 2 startup_stm32f10x_md.o(.text) + SVC_Handler 0x080001ab Thumb Code 2 startup_stm32f10x_md.o(.text) + DebugMon_Handler 0x080001ad Thumb Code 2 startup_stm32f10x_md.o(.text) + PendSV_Handler 0x080001af Thumb Code 2 startup_stm32f10x_md.o(.text) + SysTick_Handler 0x080001b1 Thumb Code 2 startup_stm32f10x_md.o(.text) + ADC1_2_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + CAN1_RX1_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + CAN1_SCE_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel1_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel2_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel3_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel4_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel5_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel6_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + DMA1_Channel7_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI0_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI15_10_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI1_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI2_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI3_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI4_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + EXTI9_5_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + FLASH_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + I2C1_ER_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + I2C1_EV_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + I2C2_ER_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + I2C2_EV_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + PVD_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + RCC_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + RTCAlarm_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + RTC_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + SPI1_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + SPI2_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TAMPER_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM1_BRK_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM1_CC_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM1_TRG_COM_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM1_UP_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM3_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + TIM4_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + USART2_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + USART3_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + USBWakeUp_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + USB_HP_CAN1_TX_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + USB_LP_CAN1_RX0_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + WWDG_IRQHandler 0x080001b3 Thumb Code 0 startup_stm32f10x_md.o(.text) + __user_initial_stackheap 0x080001b5 Thumb Code 0 startup_stm32f10x_md.o(.text) + __use_two_region_memory 0x080001d9 Thumb Code 2 heapauxi.o(.text) + __rt_heap_escrow$2region 0x080001db Thumb Code 2 heapauxi.o(.text) + __rt_heap_expand$2region 0x080001dd Thumb Code 2 heapauxi.o(.text) + __user_setup_stackheap 0x080001df Thumb Code 74 sys_stackheap_outer.o(.text) + exit 0x08000229 Thumb Code 18 exit.o(.text) + __user_libspace 0x0800023d Thumb Code 8 libspace.o(.text) + __user_perproc_libspace 0x0800023d Thumb Code 0 libspace.o(.text) + __user_perthread_libspace 0x0800023d Thumb Code 0 libspace.o(.text) + _sys_exit 0x08000245 Thumb Code 8 sys_exit.o(.text) + __I$use$semihosting 0x08000251 Thumb Code 0 use_no_semi.o(.text) + __use_no_semihosting_swi 0x08000251 Thumb Code 2 use_no_semi.o(.text) + __semihosting_library_function 0x08000253 Thumb Code 0 indicate_semi.o(.text) + EnableTimer 0x08000255 Thumb Code 146 timer.o(.text.EnableTimer) + LocaliserZero 0x080002e9 Thumb Code 58 girouette.o(.text.LocaliserZero) + MyGPIO_Init 0x08000325 Thumb Code 454 drivergpio.o(.text.MyGPIO_Init) + MyGPIO_Read 0x080004ed Thumb Code 26 drivergpio.o(.text.MyGPIO_Read) + MyTimer_PWM 0x08000509 Thumb Code 1010 pwm.o(.text.MyTimer_PWM) + RecupAccelo 0x080008fd Thumb Code 56 accelerometre.o(.text.RecupAccelo) + Servo_Moteur 0x08000935 Thumb Code 56 servo.o(.text.Servo_Moteur) + Set_DutyCycle_PWM 0x08000a99 Thumb Code 102 pwm.o(.text.Set_DutyCycle_PWM) + SystemInit 0x08000b01 Thumb Code 102 system_stm32f10x.o(.text.SystemInit) + TIM2_IRQHandler 0x08000b69 Thumb Code 62 horloge.o(.text.TIM2_IRQHandler) + Timer_Init 0x08000ba9 Thumb Code 198 horloge.o(.text.Timer_Init) + USART1_IRQHandler 0x08000c71 Thumb Code 54 myuart.o(.text.USART1_IRQHandler) + angleVent 0x08000ca9 Thumb Code 54 girouette.o(.text.angleVent) + configEncoder 0x08000ce1 Thumb Code 154 girouette.o(.text.configEncoder) + initAccelo 0x08000d7d Thumb Code 50 accelerometre.o(.text.initAccelo) + initLacheur 0x08000db1 Thumb Code 46 accelerometre.o(.text.initLacheur) + initServo 0x08000de1 Thumb Code 92 servo.o(.text.initServo) + main 0x08000e3d Thumb Code 284 principal.o(.text.main) + vent2voile 0x08000f59 Thumb Code 54 girouette.o(.text.vent2voile) + Region$$Table$$Base 0x08000f90 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08000fa0 Number 0 anon$$obj.o(Region$$Table) + __libspace_start 0x20000000 Data 96 libspace.o(.bss) + __temporary_stack_top$libspace 0x20000060 Data 0 libspace.o(.bss) + angleVentVar 0x2000006c Data 4 principal.o(.bss.angleVentVar) + angleVoileVar 0x20000070 Data 4 principal.o(.bss.angleVoileVar) + moy 0x20000074 Data 4 principal.o(.bss.moy) + moyenne 0x20000078 Data 20 principal.o(.bss.moyenne) + pFnc_Receive 0x2000008c Data 4 myuart.o(.bss.pFnc_Receive) + sum 0x20000090 Data 4 principal.o(.bss.sum) + + + +============================================================================== + +Memory Map of the image + + Image Entry point : 0x08000199 + + Load Region LR_1 (Base: 0x08000000, Size: 0x00000fa0, Max: 0xffffffff, ABSOLUTE) + + Execution Region ER_RO (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00000fa0, Max: 0xffffffff, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x08000000 0x08000000 0x000000ec Data RO 191 RESET startup_stm32f10x_md.o + 0x080000ec 0x080000ec 0x00000008 Code RO 219 * !!!main c_w.l(__main.o) + 0x080000f4 0x080000f4 0x0000005c Code RO 384 !!!scatter c_w.l(__scatter.o) + 0x08000150 0x08000150 0x00000002 Code RO 385 !!handler_null c_w.l(__scatter.o) + 0x08000152 0x08000152 0x00000002 PAD + 0x08000154 0x08000154 0x0000001c Code RO 388 !!handler_zi c_w.l(__scatter_zi.o) + 0x08000170 0x08000170 0x00000002 Code RO 246 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) + 0x08000172 0x08000172 0x00000000 Code RO 253 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 255 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 257 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 260 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 262 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 264 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 267 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 269 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 271 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 273 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 275 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 277 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 279 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 281 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 283 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 285 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 287 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 291 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 293 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 295 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000000 Code RO 297 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o) + 0x08000172 0x08000172 0x00000002 Code RO 298 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o) + 0x08000174 0x08000174 0x00000002 Code RO 320 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) + 0x08000176 0x08000176 0x00000000 Code RO 335 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 337 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 340 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 343 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 345 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000000 Code RO 348 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o) + 0x08000176 0x08000176 0x00000002 Code RO 349 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o) + 0x08000178 0x08000178 0x00000000 Code RO 221 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) + 0x08000178 0x08000178 0x00000000 Code RO 223 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) + 0x08000178 0x08000178 0x00000006 Code RO 235 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) + 0x0800017e 0x0800017e 0x00000000 Code RO 225 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) + 0x0800017e 0x0800017e 0x00000004 Code RO 226 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) + 0x08000182 0x08000182 0x00000000 Code RO 228 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) + 0x08000182 0x08000182 0x00000008 Code RO 229 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) + 0x0800018a 0x0800018a 0x00000002 Code RO 250 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) + 0x0800018c 0x0800018c 0x00000000 Code RO 300 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) + 0x0800018c 0x0800018c 0x00000004 Code RO 301 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) + 0x08000190 0x08000190 0x00000006 Code RO 302 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) + 0x08000196 0x08000196 0x00000002 PAD + 0x08000198 0x08000198 0x00000040 Code RO 192 * .text startup_stm32f10x_md.o + 0x080001d8 0x080001d8 0x00000006 Code RO 217 .text c_w.l(heapauxi.o) + 0x080001de 0x080001de 0x0000004a Code RO 237 .text c_w.l(sys_stackheap_outer.o) + 0x08000228 0x08000228 0x00000012 Code RO 239 .text c_w.l(exit.o) + 0x0800023a 0x0800023a 0x00000002 PAD + 0x0800023c 0x0800023c 0x00000008 Code RO 247 .text c_w.l(libspace.o) + 0x08000244 0x08000244 0x0000000c Code RO 310 .text c_w.l(sys_exit.o) + 0x08000250 0x08000250 0x00000002 Code RO 325 .text c_w.l(use_no_semi.o) + 0x08000252 0x08000252 0x00000000 Code RO 327 .text c_w.l(indicate_semi.o) + 0x08000252 0x08000252 0x00000002 PAD + 0x08000254 0x08000254 0x00000092 Code RO 173 .text.EnableTimer timer.o + 0x080002e6 0x080002e6 0x00000002 PAD + 0x080002e8 0x080002e8 0x0000003a Code RO 38 .text.LocaliserZero girouette.o + 0x08000322 0x08000322 0x00000002 PAD + 0x08000324 0x08000324 0x000001c6 Code RO 82 .text.MyGPIO_Init drivergpio.o + 0x080004ea 0x080004ea 0x00000002 PAD + 0x080004ec 0x080004ec 0x0000001a Code RO 84 .text.MyGPIO_Read drivergpio.o + 0x08000506 0x08000506 0x00000002 PAD + 0x08000508 0x08000508 0x000003f2 Code RO 160 .text.MyTimer_PWM pwm.o + 0x080008fa 0x080008fa 0x00000002 PAD + 0x080008fc 0x080008fc 0x00000038 Code RO 18 .text.RecupAccelo accelerometre.o + 0x08000934 0x08000934 0x00000038 Code RO 71 .text.Servo_Moteur servo.o + 0x0800096c 0x0800096c 0x00000008 Code RO 201 .text.SetSysClock system_stm32f10x.o + 0x08000974 0x08000974 0x00000122 Code RO 205 .text.SetSysClockTo72 system_stm32f10x.o + 0x08000a96 0x08000a96 0x00000002 PAD + 0x08000a98 0x08000a98 0x00000066 Code RO 162 .text.Set_DutyCycle_PWM pwm.o + 0x08000afe 0x08000afe 0x00000002 PAD + 0x08000b00 0x08000b00 0x00000066 Code RO 199 .text.SystemInit system_stm32f10x.o + 0x08000b66 0x08000b66 0x00000002 PAD + 0x08000b68 0x08000b68 0x0000003e Code RO 101 .text.TIM2_IRQHandler horloge.o + 0x08000ba6 0x08000ba6 0x00000002 PAD + 0x08000ba8 0x08000ba8 0x000000c6 Code RO 99 .text.Timer_Init horloge.o + 0x08000c6e 0x08000c6e 0x00000002 PAD + 0x08000c70 0x08000c70 0x00000036 Code RO 61 .text.USART1_IRQHandler myuart.o + 0x08000ca6 0x08000ca6 0x00000002 PAD + 0x08000ca8 0x08000ca8 0x00000036 Code RO 34 .text.angleVent girouette.o + 0x08000cde 0x08000cde 0x00000002 PAD + 0x08000ce0 0x08000ce0 0x0000009a Code RO 32 .text.configEncoder girouette.o + 0x08000d7a 0x08000d7a 0x00000002 PAD + 0x08000d7c 0x08000d7c 0x00000032 Code RO 16 .text.initAccelo accelerometre.o + 0x08000dae 0x08000dae 0x00000002 PAD + 0x08000db0 0x08000db0 0x0000002e Code RO 20 .text.initLacheur accelerometre.o + 0x08000dde 0x08000dde 0x00000002 PAD + 0x08000de0 0x08000de0 0x0000005c Code RO 73 .text.initServo servo.o + 0x08000e3c 0x08000e3c 0x0000011c Code RO 2 .text.main principal.o + 0x08000f58 0x08000f58 0x00000036 Code RO 36 .text.vent2voile girouette.o + 0x08000f8e 0x08000f8e 0x00000002 PAD + 0x08000f90 0x08000f90 0x00000010 Data RO 383 Region$$Table anon$$obj.o + + + Execution Region ER_RW (Exec base: 0x20000000, Load base: 0x08000fa0, Size: 0x00000000, Max: 0xffffffff, ABSOLUTE) + + **** No section assigned to this execution region **** + + + Execution Region ER_ZI (Exec base: 0x20000000, Load base: 0x08000fa0, Size: 0x00000698, Max: 0xffffffff, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x20000000 - 0x00000060 Zero RW 248 .bss c_w.l(libspace.o) + 0x20000060 - 0x00000006 Zero RW 24 .bss.RecupAccelo.Messie accelerometre.o + 0x20000066 0x08000fa0 0x00000002 PAD + 0x20000068 - 0x00000004 Zero RW 109 .bss.TIM2_Appel horloge.o + 0x2000006c - 0x00000004 Zero RW 5 .bss.angleVentVar principal.o + 0x20000070 - 0x00000004 Zero RW 6 .bss.angleVoileVar principal.o + 0x20000074 - 0x00000004 Zero RW 8 .bss.moy principal.o + 0x20000078 - 0x00000014 Zero RW 4 .bss.moyenne principal.o + 0x2000008c - 0x00000004 Zero RW 63 .bss.pFnc_Receive myuart.o + 0x20000090 - 0x00000004 Zero RW 7 .bss.sum principal.o + 0x20000094 0x08000fa0 0x00000004 PAD + 0x20000098 - 0x00000200 Zero RW 190 HEAP startup_stm32f10x_md.o + 0x20000298 - 0x00000400 Zero RW 189 STACK startup_stm32f10x_md.o + + +============================================================================== + +Image component sizes + + + Code (inc. data) RO Data RW Data ZI Data Debug Object Name + + 152 0 0 0 6 2684 accelerometre.o + 480 0 0 0 0 2034 drivergpio.o + 320 0 0 0 0 2334 girouette.o + 260 0 0 0 4 4865 horloge.o + 54 0 0 0 4 4792 myuart.o + 284 0 0 0 36 2010 principal.o + 1112 12 0 0 0 2701 pwm.o + 148 0 0 0 0 2030 servo.o + 64 26 236 0 1536 840 startup_stm32f10x_md.o + 400 0 0 0 0 2944 system_stm32f10x.o + 146 0 0 0 0 2090 timer.o + + ---------------------------------------------------------------------- + 3452 38 252 0 1592 29324 Object Totals + 0 0 16 0 0 0 (incl. Generated) + 32 0 0 0 6 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name + + 8 0 0 0 0 68 __main.o + 0 0 0 0 0 0 __rtentry.o + 12 0 0 0 0 0 __rtentry2.o + 6 0 0 0 0 0 __rtentry4.o + 94 8 0 0 0 0 __scatter.o + 28 0 0 0 0 0 __scatter_zi.o + 18 0 0 0 0 80 exit.o + 6 0 0 0 0 152 heapauxi.o + 0 0 0 0 0 0 indicate_semi.o + 2 0 0 0 0 0 libinit.o + 2 0 0 0 0 0 libinit2.o + 2 0 0 0 0 0 libshutdown.o + 2 0 0 0 0 0 libshutdown2.o + 8 4 0 0 96 68 libspace.o + 2 0 0 0 0 0 rtexit.o + 10 0 0 0 0 0 rtexit2.o + 12 4 0 0 0 68 sys_exit.o + 74 0 0 0 0 80 sys_stackheap_outer.o + 2 0 0 0 0 68 use_no_semi.o + + ---------------------------------------------------------------------- + 296 16 0 0 96 584 Library Totals + 8 0 0 0 0 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Name + + 288 16 0 0 96 584 c_w.l + + ---------------------------------------------------------------------- + 296 16 0 0 96 584 Library Totals + + ---------------------------------------------------------------------- + +============================================================================== + + + Code (inc. data) RO Data RW Data ZI Data Debug + + 3748 54 252 0 1688 29620 Grand Totals + 3748 54 252 0 1688 29620 ELF Image Totals + 3748 54 252 0 0 0 ROM Totals + +============================================================================== + + Total RO Size (Code + RO Data) 4000 ( 3.91kB) + Total RW Size (RW Data + ZI Data) 1688 ( 1.65kB) + Total ROM Size (Code + RO Data + RW Data) 4000 ( 3.91kB) + +============================================================================== + diff --git a/ProjetVoilier/Objects/ExtDll.iex b/ProjetVoilier/Objects/ExtDll.iex new file mode 100644 index 0000000..b661f48 --- /dev/null +++ b/ProjetVoilier/Objects/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/ProjetVoilier/Objects/Projet3FISA.axf b/ProjetVoilier/Objects/Projet3FISA.axf new file mode 100644 index 0000000000000000000000000000000000000000..30aa63f6890c46f99ef26a63ee244cecbf934f1e GIT binary patch literal 45484 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 literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/Projet3FISA.build_log.htm b/ProjetVoilier/Objects/Projet3FISA.build_log.htm new file mode 100644 index 0000000..eb12b61 --- /dev/null +++ b/ProjetVoilier/Objects/Projet3FISA.build_log.htm @@ -0,0 +1,80 @@ + + +
+

µVision Build Log

+

Tool Versions:

+IDE-Version: µVision V5.42.0.0 +Copyright (C) 2025 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: user user, INSA Toulouse, LIC=---- + +Tool Versions: +Toolchain: MDK-Lite Version: 5.42.0.0 +Toolchain Path: C:\Keil\542a\ARM\ARMCLANG\Bin +C Compiler: ArmClang.exe V6.23 +Assembler: Armasm.exe V6.23 +Linker/Locator: ArmLink.exe V6.23 +Library Manager: ArmAr.exe V6.23 +Hex Converter: FromElf.exe V6.23 +CPU DLL: SARMCM3.DLL V5.42.0.0 +Dialog DLL: DARMSTM.DLL V1.69.1.0 +Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.3.0.0 +Dialog DLL: TARMSTM.DLL V1.67.1.0 + +

Project:

+\\netapp2\orvik\Bureau\BE_VOILIER\ProjetVoilier\ProjetVoilier.uvprojx +Project File Date: 12/13/2025 + +

Output:

+*** Using Compiler 'V6.23', folder: 'C:\Keil\542a\ARM\ARMCLANG\Bin' +Rebuild target 'Reel' +compiling Horloge.c... +compiling DriverGPIO.c... +compiling MyUart.c... +compiling Girouette.c... +compiling Accelerometre.c... +compiling Servo.c... +compiling principal.c... +assembling startup_stm32f10x_md.s... +compiling I2C.c... +compiling system_stm32f10x.c... +compiling PWM.c... +compiling MYGPIO.c... +compiling Timer.c... +compiling MyTimer.c... +linking... +Program Size: Code=3748 RO-data=252 RW-data=0 ZI-data=1688 +".\Objects\Projet3FISA.axf" - 0 Error(s), 0 Warning(s). + +

Software Packages used:

+ +Package Vendor: ARM + https://www.keil.com/pack/ARM.CMSIS.6.2.0.pack + ARM::CMSIS@6.2.0 + CMSIS (Common Microcontroller Software Interface Standard) + * Component: CORE Version: 6.1.1 + +Package Vendor: Keil + https://www.keil.com/pack/Keil.STM32F1xx_DFP.2.4.1.pack + Keil::STM32F1xx_DFP@2.4.1 + STMicroelectronics STM32F1 Series Device Support, Drivers and Examples + * Component: Startup Version: 1.0.0 + +

Collection of Component include folders:

+ ./RTE/Device/STM32F103RB + ./RTE/_Reel + C:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include + C:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include + +

Collection of Component Files used:

+ + * Component: ARM::CMSIS:CORE@6.1.1 + + * Component: Keil::Device:Startup@1.0.0 + Source file: Device/Source/ARM/STM32F1xx_OPT.s + Source file: Device/Source/ARM/startup_stm32f10x_md.s + Source file: Device/Source/system_stm32f10x.c + Include file: RTE_Driver/Config/RTE_Device.h +Build Time Elapsed: 00:00:04 +
+ + diff --git a/ProjetVoilier/Objects/Projet3FISA.htm b/ProjetVoilier/Objects/Projet3FISA.htm new file mode 100644 index 0000000..2d4aae1 --- /dev/null +++ b/ProjetVoilier/Objects/Projet3FISA.htm @@ -0,0 +1,625 @@ + + +Static Call Graph - [.\Objects\Projet3FISA.axf] +
+

Static Call Graph for image .\Objects\Projet3FISA.axf


+

#<CALLGRAPH># ARM Linker, 6230001: Last Updated: Sat Dec 13 17:20:36 2025 +

+

Maximum Stack Usage = 76 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

+Call chain for Maximum Stack Depth:

+__rt_entry_main ⇒ main ⇒ Servo_Moteur ⇒ Set_DutyCycle_PWM +

+

+Functions with no stack information +

+ +

+

+Mutually Recursive functions +

  • NMI_Handler   ⇒   NMI_Handler
    +
  • HardFault_Handler   ⇒   HardFault_Handler
    +
  • MemManage_Handler   ⇒   MemManage_Handler
    +
  • BusFault_Handler   ⇒   BusFault_Handler
    +
  • UsageFault_Handler   ⇒   UsageFault_Handler
    +
  • SVC_Handler   ⇒   SVC_Handler
    +
  • DebugMon_Handler   ⇒   DebugMon_Handler
    +
  • PendSV_Handler   ⇒   PendSV_Handler
    +
  • SysTick_Handler   ⇒   SysTick_Handler
    +
  • ADC1_2_IRQHandler   ⇒   ADC1_2_IRQHandler
    + +

    +

    +Function Pointers +

      +
    • ADC1_2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • BusFault_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • CAN1_RX1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • CAN1_SCE_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel5_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel6_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DMA1_Channel7_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • DebugMon_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI0_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI15_10_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • EXTI9_5_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • FLASH_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • HardFault_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • I2C1_ER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • I2C1_EV_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • I2C2_ER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • I2C2_EV_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • MemManage_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • NMI_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • PVD_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • PendSV_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • RCC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • RTCAlarm_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • RTC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • Reset_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • SPI1_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • SPI2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • SVC_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • SysTick_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • SystemInit from system_stm32f10x.o(.text.SystemInit) referenced from startup_stm32f10x_md.o(.text) +
    • TAMPER_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM1_BRK_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM1_CC_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM1_TRG_COM_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM1_UP_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM2_IRQHandler from horloge.o(.text.TIM2_IRQHandler) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • TIM4_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • USART1_IRQHandler from myuart.o(.text.USART1_IRQHandler) referenced from startup_stm32f10x_md.o(RESET) +
    • USART2_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • USART3_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • USBWakeUp_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • USB_HP_CAN1_TX_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • USB_LP_CAN1_RX0_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • UsageFault_Handler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • WWDG_IRQHandler from startup_stm32f10x_md.o(.text) referenced from startup_stm32f10x_md.o(RESET) +
    • __main from __main.o(!!!main) referenced from startup_stm32f10x_md.o(.text) +
    +

    +

    +Global Symbols +

    +

    __main (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main)) +

    [Calls]

    • >>   __scatterload +
    • >>   __rt_entry +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(.text) +
    +

    __scatterload (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter)) +

    [Called By]

    • >>   __main +
    + +

    __scatterload_rt2 (Thumb, 84 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) +

    [Calls]

    • >>   __rt_entry +
    + +

    __scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) + +

    __scatterload_loop (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) + +

    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, __scatter.o(!!handler_null), UNUSED) + +

    __scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED) + +

    __rt_lib_init (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000)) +

    [Called By]

    • >>   __rt_entry_li +
    + +

    __rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030)) + +

    __rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E)) + +

    __rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D)) + +

    __rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023)) + +

    __rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000034)) + +

    __rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032)) + +

    __rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002)) + +

    __rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021)) + +

    __rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025)) + +

    __rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C)) + +

    __rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013)) + +

    __rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015)) + +

    __rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017)) + +

    __rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019)) + +

    __rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B)) + +

    __rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000006)) + +

    __rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000010)) + +

    __rt_lib_init_relocate_pie_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004)) + +

    __rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000035)) + +

    __rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F)) + +

    __rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000027)) + +

    __rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E)) + +

    __rt_lib_shutdown (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000)) +

    [Called By]

    • >>   __rt_exit_ls +
    + +

    __rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002)) + +

    __rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007)) + +

    __rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F)) + +

    __rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010)) + +

    __rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A)) + +

    __rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004)) + +

    __rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C)) + +

    __rt_entry (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000)) +

    [Called By]

    • >>   __scatterload_rt2 +
    • >>   __main +
    + +

    __rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002)) + +

    __rt_entry_sh (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004)) +

    [Stack]

    • Max Depth = 8 + Unknown Stack Size +
    • Call Chain = __rt_entry_sh ⇒ __user_setup_stackheap +
    +
    [Calls]
    • >>   __user_setup_stackheap +
    + +

    __rt_entry_li (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000A)) +

    [Calls]

    • >>   __rt_lib_init +
    + +

    __rt_entry_postsh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009)) + +

    __rt_entry_main (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D)) +

    [Stack]

    • Max Depth = 76 + Unknown Stack Size +
    • Call Chain = __rt_entry_main ⇒ main ⇒ Servo_Moteur ⇒ Set_DutyCycle_PWM +
    +
    [Calls]
    • >>   exit +
    • >>   main +
    + +

    __rt_entry_postli_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C)) + +

    __rt_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000)) +

    [Called By]

    • >>   exit +
    + +

    __rt_exit_ls (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000003)) +

    [Calls]

    • >>   __rt_lib_shutdown +
    + +

    __rt_exit_prels_1 (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002)) + +

    __rt_exit_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004)) +

    [Calls]

    • >>   _sys_exit +
    + +

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   NMI_Handler +
    +
    [Called By]
    • >>   NMI_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   HardFault_Handler +
    +
    [Called By]
    • >>   HardFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   MemManage_Handler +
    +
    [Called By]
    • >>   MemManage_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   BusFault_Handler +
    +
    [Called By]
    • >>   BusFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   UsageFault_Handler +
    +
    [Called By]
    • >>   UsageFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   SVC_Handler +
    +
    [Called By]
    • >>   SVC_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   DebugMon_Handler +
    +
    [Called By]
    • >>   DebugMon_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   PendSV_Handler +
    +
    [Called By]
    • >>   PendSV_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   SysTick_Handler +
    +
    [Called By]
    • >>   SysTick_Handler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +

    [Calls]

    • >>   ADC1_2_IRQHandler +
    +
    [Called By]
    • >>   ADC1_2_IRQHandler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    DMA1_Channel7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    RTCAlarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM1_BRK_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM1_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM1_UP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    TIM4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    USART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    USB_HP_CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    USB_LP_CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f10x_md.o(.text)) +
    [Address Reference Count : 1]

    • startup_stm32f10x_md.o(RESET) +
    +

    __user_initial_stackheap (Thumb, 0 bytes, Stack size unknown bytes, startup_stm32f10x_md.o(.text)) +

    [Called By]

    • >>   __user_setup_stackheap +
    + +

    __use_two_region_memory (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) + +

    __rt_heap_escrow$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) + +

    __rt_heap_expand$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) + +

    __user_setup_stackheap (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text)) +

    [Stack]

    • Max Depth = 8 + Unknown Stack Size +
    • Call Chain = __user_setup_stackheap +
    +
    [Calls]
    • >>   __user_perproc_libspace +
    • >>   __user_initial_stackheap +
    +
    [Called By]
    • >>   __rt_entry_sh +
    + +

    exit (Thumb, 18 bytes, Stack size 8 bytes, exit.o(.text)) +

    [Stack]

    • Max Depth = 8 + Unknown Stack Size +
    • Call Chain = exit +
    +
    [Calls]
    • >>   __rt_exit +
    +
    [Called By]
    • >>   __rt_entry_main +
    + +

    __user_libspace (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED) + +

    __user_perproc_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text)) +

    [Called By]

    • >>   __user_setup_stackheap +
    + +

    __user_perthread_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED) + +

    _sys_exit (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text)) +

    [Called By]

    • >>   __rt_exit_exit +
    + +

    __I$use$semihosting (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED) + +

    __use_no_semihosting_swi (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED) + +

    __semihosting_library_function (Thumb, 0 bytes, Stack size unknown bytes, indicate_semi.o(.text), UNUSED) + +

    EnableTimer (Thumb, 146 bytes, Stack size 4 bytes, timer.o(.text.EnableTimer)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = EnableTimer +
    +
    [Called By]
    • >>   configEncoder +
    + +

    LocaliserZero (Thumb, 58 bytes, Stack size 16 bytes, girouette.o(.text.LocaliserZero)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = LocaliserZero ⇒ MyGPIO_Read +
    +
    [Calls]
    • >>   MyGPIO_Read +
    +
    [Called By]
    • >>   main +
    + +

    MyGPIO_Init (Thumb, 454 bytes, Stack size 12 bytes, drivergpio.o(.text.MyGPIO_Init)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = MyGPIO_Init +
    +
    [Called By]
    • >>   configEncoder +
    • >>   initServo +
    + +

    MyGPIO_Read (Thumb, 26 bytes, Stack size 8 bytes, drivergpio.o(.text.MyGPIO_Read)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = MyGPIO_Read +
    +
    [Called By]
    • >>   LocaliserZero +
    + +

    MyTimer_PWM (Thumb, 1010 bytes, Stack size 16 bytes, pwm.o(.text.MyTimer_PWM)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = MyTimer_PWM +
    +
    [Called By]
    • >>   initServo +
    + +

    RecupAccelo (Thumb, 56 bytes, Stack size 8 bytes, accelerometre.o(.text.RecupAccelo)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = RecupAccelo +
    +
    [Called By]
    • >>   main +
    + +

    Servo_Moteur (Thumb, 56 bytes, Stack size 24 bytes, servo.o(.text.Servo_Moteur)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = Servo_Moteur ⇒ Set_DutyCycle_PWM +
    +
    [Calls]
    • >>   Set_DutyCycle_PWM +
    +
    [Called By]
    • >>   main +
    + +

    Set_DutyCycle_PWM (Thumb, 102 bytes, Stack size 20 bytes, pwm.o(.text.Set_DutyCycle_PWM)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = Set_DutyCycle_PWM +
    +
    [Called By]
    • >>   Servo_Moteur +
    + +

    SystemInit (Thumb, 102 bytes, Stack size 8 bytes, system_stm32f10x.o(.text.SystemInit)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = SystemInit ⇒ SetSysClock ⇒ SetSysClockTo72 +
    +
    [Calls]
    • >>   SetSysClock +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(.text) +
    +

    TIM2_IRQHandler (Thumb, 62 bytes, Stack size 8 bytes, horloge.o(.text.TIM2_IRQHandler)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM2_IRQHandler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    Timer_Init (Thumb, 198 bytes, Stack size 8 bytes, horloge.o(.text.Timer_Init)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = Timer_Init +
    +
    [Called By]
    • >>   initLacheur +
    • >>   initServo +
    + +

    USART1_IRQHandler (Thumb, 54 bytes, Stack size 16 bytes, myuart.o(.text.USART1_IRQHandler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = USART1_IRQHandler +
    +
    [Address Reference Count : 1]
    • startup_stm32f10x_md.o(RESET) +
    +

    angleVent (Thumb, 54 bytes, Stack size 8 bytes, girouette.o(.text.angleVent)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = angleVent +
    +
    [Called By]
    • >>   main +
    + +

    configEncoder (Thumb, 154 bytes, Stack size 24 bytes, girouette.o(.text.configEncoder)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = configEncoder ⇒ MyGPIO_Init +
    +
    [Calls]
    • >>   MyGPIO_Init +
    • >>   EnableTimer +
    +
    [Called By]
    • >>   main +
    + +

    initAccelo (Thumb, 50 bytes, Stack size 4 bytes, accelerometre.o(.text.initAccelo)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = initAccelo +
    +
    [Called By]
    • >>   main +
    + +

    initLacheur (Thumb, 46 bytes, Stack size 8 bytes, accelerometre.o(.text.initLacheur)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = initLacheur ⇒ Timer_Init +
    +
    [Calls]
    • >>   Timer_Init +
    +
    [Called By]
    • >>   main +
    + +

    initServo (Thumb, 92 bytes, Stack size 16 bytes, servo.o(.text.initServo)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = initServo ⇒ MyTimer_PWM +
    +
    [Calls]
    • >>   MyTimer_PWM +
    • >>   MyGPIO_Init +
    • >>   Timer_Init +
    +
    [Called By]
    • >>   main +
    + +

    main (Thumb, 284 bytes, Stack size 32 bytes, principal.o(.text.main)) +

    [Stack]

    • Max Depth = 76
    • Call Chain = main ⇒ Servo_Moteur ⇒ Set_DutyCycle_PWM +
    +
    [Calls]
    • >>   RecupAccelo +
    • >>   Servo_Moteur +
    • >>   vent2voile +
    • >>   angleVent +
    • >>   LocaliserZero +
    • >>   initLacheur +
    • >>   initAccelo +
    • >>   configEncoder +
    • >>   initServo +
    +
    [Called By]
    • >>   __rt_entry_main +
    + +

    vent2voile (Thumb, 54 bytes, Stack size 8 bytes, girouette.o(.text.vent2voile)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = vent2voile +
    +
    [Called By]
    • >>   main +
    +

    +

    +Local Symbols +

    +

    SetSysClock (Thumb, 8 bytes, Stack size 8 bytes, system_stm32f10x.o(.text.SetSysClock)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = SetSysClock ⇒ SetSysClockTo72 +
    +
    [Calls]
    • >>   SetSysClockTo72 +
    +
    [Called By]
    • >>   SystemInit +
    + +

    SetSysClockTo72 (Thumb, 290 bytes, Stack size 16 bytes, system_stm32f10x.o(.text.SetSysClockTo72)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = SetSysClockTo72 +
    +
    [Called By]
    • >>   SetSysClock +
    +

    +

    +Undefined Global Symbols +


    diff --git a/ProjetVoilier/Objects/Projet3FISA.lnp b/ProjetVoilier/Objects/Projet3FISA.lnp new file mode 100644 index 0000000..5cfa38d --- /dev/null +++ b/ProjetVoilier/Objects/Projet3FISA.lnp @@ -0,0 +1,18 @@ +--cpu Cortex-M3 +".\objects\principal.o" +".\objects\accelerometre.o" +".\objects\girouette.o" +".\objects\myuart.o" +".\objects\servo.o" +".\objects\drivergpio.o" +".\objects\horloge.o" +".\objects\mygpio.o" +".\objects\mytimer.o" +".\objects\pwm.o" +".\objects\timer.o" +".\objects\i2c.o" +".\objects\startup_stm32f10x_md.o" +".\objects\system_stm32f10x.o" +--ro-base 0x08000000 --entry 0x08000000 --rw-base 0x20000000 --entry Reset_Handler --first __Vectors --strict --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers +--list ".\Listings\Projet3FISA.map" -o .\Objects\Projet3FISA.axf \ No newline at end of file diff --git a/ProjetVoilier/Objects/ProjetVoilier_Reel.dep b/ProjetVoilier/Objects/ProjetVoilier_Reel.dep new file mode 100644 index 0000000..eb6c5db --- /dev/null +++ b/ProjetVoilier/Objects/ProjetVoilier_Reel.dep @@ -0,0 +1,99 @@ +Dependencies for Project 'ProjetVoilier', Target 'Reel': (DO NOT MODIFY !) +CompilerVersion: 6230000::V6.23::ARMCLANG +F (.\Application\principal.c)(0x693D8AE2)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/principal.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Horloge.h)(0x693D78D2) +I (Services\Include\Accelerometre.h)(0x693D7C42) +I (Services\Include\Girouette.h)(0x69260593) +I (Services\Include\Servo.h)(0x692EBF0A) +I (Pilotes\Include\I2C.h)(0x692EB2F6) +F (.\Services\Source\Accelerometre.c)(0x693D89D6)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/accelerometre.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Horloge.h)(0x693D78D2) +I (Pilotes\Include\MySPI.h)(0x692EBF0A) +I (Services\Include\Accelerometre.h)(0x693D7C42) +I (Services\Include\Servo.h)(0x692EBF0A) +F (.\Services\Source\Girouette.c)(0x6926057D)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/girouette.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Timer.h)(0x6925F2E8) +I (Pilotes\Include\DriverGPIO.h)(0x692EBF0A) +I (Services\Include\Girouette.h)(0x69260593) +I (Pilotes\Include\PWM.h)(0x692EBF0A) +F (.\Pilotes\Source\MyUart.c)(0x693D8EF8)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/myuart.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\DriverGPIO.h)(0x692EBF0A) +I (Pilotes\Include\MyTimer.h)(0x691C4022) +F (.\Services\Source\Servo.c)(0x692EBF0A)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/servo.o -MMD) +I (Services\Include\Servo.h)(0x692EBF0A) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\DriverGPIO.h)(0x692EBF0A) +I (Pilotes\Include\PWM.h)(0x692EBF0A) +I (Pilotes\Include\Horloge.h)(0x693D78D2) +F (.\Pilotes\Source\DriverGPIO.c)(0x692EBF0A)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/drivergpio.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\DriverGPIO.h)(0x692EBF0A) +F (.\Pilotes\Source\Horloge.c)(0x692EBF0A)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/horloge.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Horloge.h)(0x693D78D2) +F (.\Pilotes\Source\MYGPIO.c)(0x692EBF0A)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/mygpio.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\MYGPIO.h)(0x692EBF0A) +F (.\Pilotes\Source\MyTimer.c)(0x693D8EF8)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/mytimer.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Timer.h)(0x6925F2E8) +I (Pilotes\Include\MyTimer.h)(0x691C4022) +I (Pilotes\Include\PWM.h)(0x692EBF0A) +I (Pilotes\Include\DriverGPIO.h)(0x692EBF0A) +I (Pilotes\Include\Horloge.h)(0x693D78D2) +F (.\Pilotes\Source\PWM.c)(0x692EBF0A)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/pwm.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\PWM.h)(0x692EBF0A) +F (.\Pilotes\Source\Timer.c)(0x6925F2E8)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/timer.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\Timer.h)(0x6925F2E8) +F (.\Pilotes\Source\I2C.c)(0x692EB899)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/i2c.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) +I (Pilotes\Include\I2C.h)(0x692EB2F6) +F (RTE/Device/STM32F103RB/RTE_Device.h)(0x6853B9CE)() +F (RTE/Device/STM32F103RB/startup_stm32f10x_md.s)(0x6853B9CE)(--target=arm-arm-none-eabi -mcpu=cortex-m3 -masm=auto -Wa,armasm,--diag_suppress=A1950W -c -gdwarf-4 -Wa,armasm,--pd,"__EVAL SETA 1" -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 542" -Wa,armasm,--pd,"STM32F10X_MD SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o ./objects/startup_stm32f10x_md.o) +F (RTE/Device/STM32F103RB/system_stm32f10x.c)(0x6853B9CE)(-xc --target=arm-arm-none-eabi -mcpu=cortex-m3 -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -D__EVAL -gdwarf-4 -O0 -ffunction-sections -Wall -Wextra -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I . -I ./Pilotes/Include -I ./Services/Include -I./RTE/Device/STM32F103RB -I./RTE/_Reel -IC:/ProgramData/Keil/Packs/ARM/CMSIS/6.2.0/CMSIS/Core/Include -IC:/ProgramData/Keil/Packs/Keil/STM32F1xx_DFP/2.4.1/Device/Include -D__UVISION_VERSION="542" -DSTM32F10X_MD -D_RTE_ -o ./objects/system_stm32f10x.o -MMD) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h)(0x6853B9CE) +I (RTE\_Reel\RTE_Components.h)(0x693D8D3E) +I (C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h)(0x6853B99E) +I (C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h)(0x6853B9CE) diff --git a/ProjetVoilier/Objects/accelerometre.d b/ProjetVoilier/Objects/accelerometre.d new file mode 100644 index 0000000..499c925 --- /dev/null +++ b/ProjetVoilier/Objects/accelerometre.d @@ -0,0 +1,7 @@ +./objects/accelerometre.o: Services\Source\Accelerometre.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\Horloge.h Pilotes\Include\MySPI.h \ + Services\Include\Accelerometre.h Services\Include\Servo.h diff --git a/ProjetVoilier/Objects/accelerometre.o b/ProjetVoilier/Objects/accelerometre.o new file mode 100644 index 0000000000000000000000000000000000000000..b84d99ce79ddb1e90011665c1b0226d0a76c26d6 GIT binary patch literal 6196 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 U0vb%<#Y!)ScTAkVM)L#w8`+{*mH+?% literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/adc.d b/ProjetVoilier/Objects/adc.d new file mode 100644 index 0000000..fb46021 --- /dev/null +++ b/ProjetVoilier/Objects/adc.d @@ -0,0 +1 @@ +./objects/adc.o: Pilotes\Source\ADC.c diff --git a/ProjetVoilier/Objects/adc.o b/ProjetVoilier/Objects/adc.o new file mode 100644 index 0000000000000000000000000000000000000000..4dab66e9eea706d954abb7dc39375272f7907aa8 GIT binary patch literal 592 zcma)3Jx>EM40Vov!2kt;_?RLF#L_6VP(g)|PDf#Ckt&!FL++ZQisn+KL4uKg$WMWZ z5u6<5t{Wcg_iVq!iN9_J5g`QTMxX{c131k{`PercLKUk4;+o@;R#TnI)OKiS6m@hw zk%o@6pAbXR_jTJ3Zs&VNFV9_$>@l;IOh)#Uf@AOig*mfT@p1JKZA0j zjg>DA)q=`OwO51XU=`NMMz9%d!8X|;yJU~-!vR@CNjT^MsUoNsCr6IPv*3LRKEHwC zu@+dOmBPV+p_mD4%{YFxat18bRsCAI21eFpIP$Cf|pg(}3Dyk4tRY5CJLVke?{Zk20gb?`ws7(TC2rA(_GjsRh zCQ*^#Sa-hjnloqKv;N>nGA@LmfCRZzmWWajX|Z=pXr(Bu26z|Wnajr67w?23FWzyY z#)a5z5^voU;)ULtx9?r=x!DZK5bjLueT&=^d#*{3p8I>a@c0BgdTu@_Mg$&fl*a>N zMB#Doy863xCq$vv{@>lZ&fIfEXX#>nl5fBgYXdT+i*Cshk(N+I zXwB7`Nc`%FZPz}o_gQ$?NN>6rw8k+xt3l{Pk^K8xiT?6@RYrrzXz;!n4WfOve7ubA z=l#))l$RPO^YZ)vCKAMRzI<6=KFx@@@Z8L$J7!dDI~Q|f#(jNY$0)rJ6Bpfd;87U^ zcA^^*@h~58;muMzgNStXL=Z{kBi4wWb&a-J7g^s@w?-UYPh`~7P$QAK4q(=Ghxgh< zR-*`q6>G01vu>!7g-?ZvoITPzRPu(--2s>V;V{@54=pq}v1S=5{OE=Q8;DlfWM~Dq z6y9AW)~>8F)X0_Sv)B_Bk0V(;3bdIL44@OTRE6;v(0mfbTlkE-rnSkqVcKUQTwuj5 zlk6V`!rx8HekBn8VY>FKfpFWbwSN)_AD9vQ^+32|Hra0k!avPsaxOs%eILbl@QIjv zo@LAUF~EEiMLp6rl9ttK?6d5*p^%B}x5$1c5Dr+D{ca${EZ6>hAoN(Z_MZcx*NWKh z1w!0vvTp}M!fLkv9SD8aCfh-yvYmb_YKH@1z}i7IaHA{Gh~q6N&DvGQIrq5a9)Sf? zXhKRyG2oD#lO-u^oTGV`Rv+dAs+J>d#3znF%G!ObMGZ?v+oz+MUywGArrK_nHJ)T` ztmGZ5@{X0gH%aea_D+<%6II@cviBD0eT2OSOWuQ3-hldP#d?DI5H{nlB`BTv+yw0xZSUx}79ZeVJ zCTG*R>FDS7WIEcr+S}WY(@1tUU-TE+M)Qk>Nk5e+WKa2pfsvsj-Xx_`Ilq{mpYKfN z3#YOtQ@x7?KfRdh?HfOKWa!{fUotgP$ba519?NHEvwnf%$%C|*TgXo5&~7$Yq(u~6 zo#RDV25Bgfq$BuxN0TV<9gIJfByMVa?DV{!@H23uc>e&3p(OQ;^mZmk$0XCCn8Dt@ z!^)tsgRwWk)kc$)jK@on4xN^PhjQ5>X+G(vr--xC@~B^8lm0?k7|Tyj&-yYkn$PBF zawc7%$$TzD3p3eFah!EB_y`#KU(7*I3^SVc(-T<|Pk@bgdhMSkdoo`r`b&?`b&<0w zbjYO|qmFQn8BNAoS}&T#2C-3Wakh&`L_I3?BoC1Yfr$vd%I|?J9980rb+xNmi!UHv zW4(2?RXSd8y>)Jtj@RBw9k0WcI$o2kdmX#WqSqkdrSY%2)eO9x@rihM>M1`vo7%Ix zGo3=N{KXIU93DtbWOFIcOJ#GDvx`$c#k-2Ve9c>B!RCdyD8`2S~mo(8raSGG!&2SzI#ksCdEdC{k$hK;^<02yq zCo`WBWQK)pt@^3+ZS&cT9dXRavMtWoHEmGjq@uB`I4KqD%8D7O*uV&x9le27xhd?a2EuTUapuV= zjO$p&LB?kl%i9@oxV3BfGa83AKCN*|a-##`Y^3f2;AD#=mL2 zt1*PGv44}sZ5lm|do>O*qW_~><`)XrLoJ8UHn+1@<2FW&_hVY#qcN`Wh{j_Y(OsE8PaXGzr;PKH^91BOhVyCC z$oB`g&vyo6lo9Ri&?xO#w$hGxpJY8`IiH9Z({h3lamTd$3?t&rXnB?qaj!BW&JKK> z*DxdMooui>m{djk0){cD$;=hVSVyp9;z3+vS#tASZkO#rY4MpPSFkjy;>+?3 z-l8=zg|!yP!15vdqSqX<Q#h5L%#RQ4HUS9e)JCHu`HcW#myMFyQ`hKHLwCn<)q zW?b>Iw6?muVL&6uTMlWt5jv<$*uXNES?Xm4BC3GP+N^5eE}?QVY~h5Y@eo>0vrY3BC5v8AOOmRpX7FcPtJiI%N&O(HoOSH?k>{0*EcJ|O&0pz{isO(n-jcS+&G&~E z!mo^AU)0cf-D#*)oHxL^ayEVgZbi0IGlf!3Lk-3WcVR1P{)y;UP{-I-B7Xib83@CX SB2o&96GUrvK(N9j`u_uW3kOpG literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/girouette.d b/ProjetVoilier/Objects/girouette.d new file mode 100644 index 0000000..853fa03 --- /dev/null +++ b/ProjetVoilier/Objects/girouette.d @@ -0,0 +1,7 @@ +./objects/girouette.o: Services\Source\Girouette.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\Timer.h Pilotes\Include\DriverGPIO.h \ + Services\Include\Girouette.h Pilotes\Include\PWM.h diff --git a/ProjetVoilier/Objects/girouette.o b/ProjetVoilier/Objects/girouette.o new file mode 100644 index 0000000000000000000000000000000000000000..3b0452a9c43dd798fec388613be526f27123ac5c GIT binary patch literal 5696 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 literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/horloge.d b/ProjetVoilier/Objects/horloge.d new file mode 100644 index 0000000..e714ebc --- /dev/null +++ b/ProjetVoilier/Objects/horloge.d @@ -0,0 +1,6 @@ +./objects/horloge.o: Pilotes\Source\Horloge.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\Horloge.h diff --git a/ProjetVoilier/Objects/horloge.o b/ProjetVoilier/Objects/horloge.o new file mode 100644 index 0000000000000000000000000000000000000000..caa6f546c9c76c9dcd1d9cd3490afc96a6c261fe GIT binary patch literal 9536 zcmb_i3vgT2nLg+0-fQ{VmhCtX2NI%~K-`qb&zN9Buq3~f*p85t@Th|#+j1hXC66qJ zq|joV045NY@YoGICCf5&+frD}b19EDr9f#HQeatTciU~V%+97eFjGhi4MT_Q_n-S; zNeSuB?985w{_lUE|D1d8x#u3|kDDSvDW!0l6mC(Fgm`_KvKXxj>czRRYT(`Y&CJQW z9y_5`J$6EP<-x$G!vD%~DQ5$vZ=XEoKVBh-bo;3H*%@taqDKu(jd}W+Dlf7MF?+aV?unDfs+Ln9?pd#@6jh1C zWZkhAwt_U>L%mJERGeq;oa?UrC(5ei-7Yoir5LpumqZ5X-nPUm?mGF$FHVYs55SAK za_-BXmEsvXc}$R`smw4bamk{-ycTXMzS0z7Mrb+Kz9UDpqj*IFe=)r%Y zPM}8~9mUNcu0)6f4}1n%Zy{0~6cSPuVgiWKW@BYXmF`3dGFHlgPv=K${mEme&XcT` z=Xq)jm#1pc*`8{-d65uWt8jTjHSJ{=mua;^xGF`cMhJa@Sh-jTLzkf%m#3_Z%tDy; z@Lf_NM9B&;>&wcZb1y`I%L4~Ph|(IVe8E~3PF`az+{)Idyybas=qliC*nyrRZvnUmKwaiWP~F@D zYM60Q)4T?>#GC?ko714B=Ix-C`In$&=J!C$%@;u{%wK?d%=bYn%}+q9OgGkpYV&N+ zdFD#c8uMb%`DPe&fq6CPLURmsk+~bR*1Q#Tv3W1(S?1q?o^3t_y2N}5bgB7M&~wbU zL6@1o2KAaBfG#&rfYzBbHRqa@pexM9py!$Afu3(Rfvz+!0j)RtK)+&M1-eR<9HbeL zu31#-z8B*nqFZVBJcOV2s4lF1V7^1bW4dPD>sbC?*R6w&<#FA#$X~_G z>28bsRm>B*Wj*0op47{&XC2E^y2m=~Sf19ate-fRXY_g2n~vpKeZKX!WBCVtq4i70 z@|<34{fA@ufqs_tfn#}IUt)diSYFW2u|9V!FX~>4?m1Q4OM0DUK~PoyP+wtr9LtaN z^Q~IPa#*jomN=Fl>#MAlj^$V$>XL`GpbSyvD*ICy%mVeaOTT_nZ4ZXwqx?_1$4_G%lmLqznwa>Bq zLhrWjb1ZM^z1IDX%0QNZ2a9*4G@%)pA-r3d$0f z4|=vamTgi<56z)6C8Sq+l8$XiPD>9x4aznwACw;AR9_?5OL*vc*a?lElwQq~0XIX^ zsKjDTPsBYWZI>UpJd@yPF7zEzctja2%k_tcgPOwZ3t=z`(>~7FOG1h?6ZCYL1HVQ|Ah=&#~@UY zaF^Vs*1^Rj9FRHdcd)2J@0PP_O*@Y)_sBa67Xz!RCThs3FwNznlDbt>t`+fm5pNV- zqGEoln2$AEyoR6L`URC~F3=9>1IQ=MJy^maX)z_y6AMYi^O9IdvFlZADQOp}WHF^! zObRao%2hHiCo4-SeFa|A)X}7p=uIrJu@RyXKe=@kw0fUes~vFB+ZgP8+5#(&fbzJQ zJdTh@iSjt2JRpiYYzy6-q9hH$E!~%Zp8=~K#fZ>eQ`9b?`QOeb@RiHYXHOm=7L+QGn7Hkp_j40Oe} zYzp;-x*~(&Z04F|Zc8RLmP%$tEY#l|_fJeD$HZi6dm23t??`0DKqlRvn7lSIG?omd zbMa8*vb5+=j%TvF`xEKJ_T)Iqx3z(($?n9|7)zTcVJwoPTY`zPG262ip-hZ|}})m?lYZGkTogyv!k1hz!O&Xoa|AF)3Y z<6&%$f-lw=U9qM$@g^QS?galB9uT``OwZ+sYm=KNY*7^)j5LXOa7?;&IH7|H^nYbX8Y8 zc4fFL9v2~+-%vCR5+vdefPjg{P}RVekll$0hBt>g;ew90#5SR<5Y29sY9Z{Uh+eV= zyFq%1bQ0OYUuf4cQ zdlTsqyZ}W1ZrkV|&ZTxHLop0d)!da<>u}^UM-fft!r4?No67CB^9lbH7S-ffCNUzy z+2rJKg7T4%P?H!+=aSj%)I=^mnn@1}dNAy2CY&_l|KqLX@4!1QkxUGwglq#FZ1y!? zB#dD^bje+-$6JJHmGrwsspg?iac#b~KrE8AadOwGmZ#wN^oK z5>3bFki5ZDj$;R<1E@yt-GIk!?>SgU+Xv|Gl=xD`VMe~uJDK$X4-AysY4n~B;KQm| zNAGOPJ%UeH^p0w9()KwHDFF1=C&j7nVG(R^!0UB;HZk6r$R!#!CR1Y#;l%K@lQtWT z^|v&4H|^RL@9YjYH2Ye8O%0vNovGnuLnu8wHZ_t&hCzxNT+`Z|7{pZ2FWBcF=ouVJ zr3Zb!!BpPy&vk`}hG2g*6m7sJ!q>=r5cfyE7g5+SU=)+N@s?(6Eq3{K(Ba@@ZUhe+ zcx-rZ>5}o`@fJwfA>s=Jc5Isr(|W-?%{@fq$-!P?^P*X=8ML%J%$T?dd$Bu zDqf)CD2lq#btmqPa%ogs+l>7VmHm_D#QXt zDKsoJ<%H;+Y9gd>9}Uw$BO{sm*Dy^hS#BZ33K?K|17nzR3*#W;5aSNUG-HnO>x|Qk zw=mwpcsJug#zTw`Gd{vN$M`Jci;OQbzRpNTo;0p^8UKy(DC2)I(s3yH9cMhj_yr>! z!;+njN(t#bK}d(Dgi9Ff80#5*jIE6Aj2(>KjD3s|#w!@FX2h|F>W2+A>jf|Ht(s?KOUCx+hq+?9dPcz=i_*abIW_*(I zM~rVU(upF)A7lK4kPNdA!VGe#2& z59w5zu}6O459LGtyCvyAsKKE(JqP_%iTeSLjRbN{#IDVK1KZ z@ux-cmxOPG4rt>yYgl}^9xWY5c-Iu=83YDJObmqA)eAeL_{U6(E_FqB! zTp_X2q0z?WA;k&%Pn9+g+P2PN@eKa2?KPxBixR;-WxG=}z2&&kgJ6FSV8e`aP)H%{ z$eiYet-}_Op|p=!x9F;~Rf?)}SK>}7r<_iHkx*Bou=_)lm-<75^6j7~QA*uE2PUS( z0AMUA`7IENH2zff2LO>A^0?bb7Q!Dx=U! zY1q8+qk(uA3HJ?kL*y`_O2D6&NI>iiVZPb_XXCs0_O*9?-?A-sA5<2VP5Z@57GY|O z>qM^N5==3N)r8`txSeA1O?s62s8ZHhY`E zvM$7Z?BqbB4B;!ncIk4IBLB$S2I%j!ZH|0A?~43t>PewynI9Z>*iIN$-zjz_l!(4o zIMZHYoa;iqsvQMIR=#m)Z9;Q*fP|Mik+9d{daGFbvf=%<1NWFyBl;LYL|)9_hD*JI mE`|70JuVCyrLZ&Dmv4>IPTQZ6^yR8t=x<#r*Bka{gZLj=JH4s^ literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/i2c.d b/ProjetVoilier/Objects/i2c.d new file mode 100644 index 0000000..863efca --- /dev/null +++ b/ProjetVoilier/Objects/i2c.d @@ -0,0 +1,6 @@ +./objects/i2c.o: Pilotes\Source\I2C.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\I2C.h diff --git a/ProjetVoilier/Objects/i2c.o b/ProjetVoilier/Objects/i2c.o new file mode 100644 index 0000000000000000000000000000000000000000..078fe43d4362a20783aa1fdd65da5093a6af2744 GIT binary patch literal 2956 zcmb_eU1%It6h1R^?`G4aoBuRT)3_~BO0|>S%};9@+uh7=($%yLn>3(rTBG>^F;7c__~U?HscO<<0>7>?V&ENh1z%Q3Uw%*0RXiP(p>;rFM<}DXgSOQ zSeMe$;)#4aXrXi$kwYy2fic&+so{;f;1IeTX=y>RSqF+5?{g!y9Nmdi-^2wmHwES{ zZ8s#ngx~>z`w`VUvC|G>_Z_heWBb%e#xEoJkQ7H4@Yf_c${2r3k~j>j|k;Gu#{Hi2L*2h1UB*g~!7m`e~F#lST88!p~8r1X|b}!?<5)VE@oT=X+XxFfN z5?7^$85>et8UGm-Uy>q(`EnG#CDO)J-iCr}X~*Qdq@{xe_-<+G#FgxomM*r9-z6>G zxU8tO^so>=EG@mb#v{_QgLU#_($a?uo|TrJtd}oJOFypuL222=`gu`W25>7@rDZo8 zZYgUd1e?e$co3RHvQ04TqXww)N)$&@kVpg1qaKbK! ziCQJo4lh^jaH^a)i$${-9@k?d;e~3oG!f3(;fESJT=^l!{2PRwNU zRwb+JS*ubg)r%$=6T^5pR_t6knR9Z(G-!A(S2$bq#QBBeBeCh|`ub9GdTuzTkLuCk zqn5QFF>8F}%F%NU>ad*HxpuHQ-dgp@(;FyU5#q=b?*S zc}i7r5v2CF$9#mrZ?}9DH2fR%E0Ft}23XmBO#}B`HZ&U0&Tcjh=p+DZs+-;ZPR;#X zz<#6@NyP$A=b+-pp;KTlA)Z^m;FJ$81R{dpBk*2<_X{ivd_>^m0-qN6lE60w(n-_2 z9}E0k;P(Ql?vVX2flauR#JdIV5vU8K(n)qIl!T`Q<^@&-UJ!U$;0pp@7x=EgD*`_e z_=CWo1pZ2h`|_vYeUv9|>Hs0?KN1Lf(ahIZmU8*LZJq-ipO6E3p;|6u?Svte@iOZ< z$FZ$^9gCs#uQ@j8wpkLxt;%v0^a_?sedffe12qS4wclQ{DyE+=;~Ox=71c48lgoo% zJ70E@!qTkfx>a0vGtwIc1k?U+E%*-ZfCd-0yl8(2_YRU`>*a+>ynV7^2x^|ks~++C zN%ynk%IGirJW4;8Rz0sZ{9vQ>qHv&R^NN2uhQF=Qoo0LNuAPXx zozN&gq>Dodg6=M0&>Ld2IVfMbgB#r$l16=-C@onjw0Y6-@R}J$^)d|7(Tm31&x?2a O6j!f$mcY~S9Kb(i-;YcH literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/it.d b/ProjetVoilier/Objects/it.d new file mode 100644 index 0000000..9726ce4 --- /dev/null +++ b/ProjetVoilier/Objects/it.d @@ -0,0 +1,5 @@ +./objects/it.o: Pilotes\Source\IT.c Pilotes\Include\IT.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h diff --git a/ProjetVoilier/Objects/it.o b/ProjetVoilier/Objects/it.o new file mode 100644 index 0000000000000000000000000000000000000000..6aac42e2a6b88ce75198e21b4b829598b4606bef GIT binary patch literal 10760 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 Gg8vuLpX1yB literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/myuart.d b/ProjetVoilier/Objects/myuart.d new file mode 100644 index 0000000..8c249a8 --- /dev/null +++ b/ProjetVoilier/Objects/myuart.d @@ -0,0 +1,6 @@ +./objects/myuart.o: Pilotes\Source\MyUart.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\DriverGPIO.h Pilotes\Include\MyTimer.h diff --git a/ProjetVoilier/Objects/myuart.o b/ProjetVoilier/Objects/myuart.o new file mode 100644 index 0000000000000000000000000000000000000000..cd90b0fb72af9d631d0d0db93dc6ec84af9e23e4 GIT binary patch literal 10292 zcmb_idvILUc|YeqR(Ex!)k?B0$rvmfgN3nIFF%NJU{|Zx+LA5r$`3%!dL^yp#nP^_ zS{ZwwV4IgnfXE?f48&kkGLV)OlZFJ6Atixnnoe-qCJY@&sY6Lk=yYNn119O<{=Rd+ zyStKMCV%vJ_WPah{hf2}J@=j~f4C_cmQo70NnwcsCxo#`Y0Q-h8bknE4Sfs01JB-Z zT%Xns2R{(vCwNx$O&!#Z=nq;46@S_iQ`|GqGmam4fznf52an%(P8UZ%(uHX7{p$QF^!)Pl zLQU3B2iJQyo)MKN&IlPgw^*D%C6AAHxqgS>S0cpWqaT4bl)_US5fYpqK5g*PruyxZ zN_MUU5i8`z59UN2`T0{CM{;U7bX-oO3O_O&5mUk=8YJSKJ9QM5$p@znxYktffoI8D z99H@Ebw8tg9`x>WW=S@Q=`)C4JU%fkXiiSoW904#+_6Ji!3P%eab9xQbqq^1z1 z)lwOtYnQ78B)mzOYT0mQ|k zod9jX0Y$ZY0c-G+%S>Fen8bA;h8d>5=RpulmfV8?8EB>UwDs2zWvw59=B!_VPFin) z?zLzoZ?--Ly~Xmw{#I)N=xx>&l-z0smDV~?&FTi#t<9i@H2`W_Nl=e94q9T}3~E_- zfqJdOprzK=L2c`4&@$^Mpyk%9pg!vz&9wM) z1aZr&K<}{^*zcAJtT+JzCo}F|x?_l6J zx|-h^^F+NHH1uyn;(Z?Eb?`Q>$gnI)iUh6<^g$c zVR^nnFGX|6s4($m!cS?{B4|Z@qo{8dEn0DZhnR~!O^o6vckD!dY0lFQmz`F9mdj1`Ze?@72fq^1ztNTbyXknG@I0D zo~Y4mP@_Roqw=XyVbrJqYLv)r;mp{0CY?;@*4BrzWA((QMw8k4U72is$Jk(UcsMy+ zzdF#;THl|^jIOOuWXFa^6X}uq8&>UVZfb36YT6;V;F=Z zZJV6vOiYe4w`Bs#B0jb?oERN-EZdWVlOw&EbSjt0I+DI*dN{V#>Bsg@^rwdQILx+f z?OklLwcY9ThkE-uqE0{BA9gyOJ)u}P%fc+{*xny$a%9wPE_7Q8-PS^PrPFQi4K>HZ zyA$bja+H0FMeJKF;uyuEPl&bZ!tkpv6s>VYq4scdoKtOywZ*&p;^EN7=6L^hM^CaI zmPNPoD3wKYI~T3ESh&M+pc(i~oNMTh^ft%aq8l8Q;sLT<4OpP z;x=*8VS2VD_9VBAb9TCF!_giwndWOdmClJtkk*!X4w`NeX^)Cc__f8NAo%r!H$+8O zUu09ffB$&0J-G{JBHY;p5{ZgXUt3Ew)~`CvPN%!AW22*BY$j}LC%0HsL@|YKqf(9nq~F?M(v3xJ+}t*McevTr0Siyly49);zaLboKWYLaY{QBJ(BC z1i0gmAf<@ML(ypHx_B&deMh|iy1tHhTtvc9L}CaN2@?smfuNJGUu_XIk5^Ik{g{}I zTO-amMYwNEq#ceJ)Ykq@n3+fvQxT)-AnZn*ST||Iogm#r+KKe`c7`x-L_)+z+T(ql z3fdhAIRHB)jo<=7vXBbirUoc__s5;#hBN71sSylL)zy(!`&e|dD~Kg?ec4ndo67Cy z`H5jCqPss^%*S%sRCTi*Vsbc}$R!1B zqfVvcZu%jl9Op#58&k|(lj)&cDw7sNnXxfMOA7J-@$d)*@hD0p6N4!{_RtNt1e!i0 z%pqKk$$cxvT7{>yq}LK&%_nf?)#hk(MUAYLb#lJE#IsmlE-T;^iuMXg4`RRcgPun- zaF&&~_{wlx7dYzY8$C4JeAfN)ZmrD+1=+ie9;9tJPZZ1Op$hvMGJ3$0tT-+`Z1Zsu zpg0CSfM>_0hcU^DW6=1EW88^%2fS|L4FF%X{^Tnspw|Hs%zWsI@Y+T^Oh>YbvGznR z(YPU*8g1-L4DFe4y0QM=)|SrZef#3=oqdfhft7*g#`fgi)KIc9k{%kJ#A=4u4v^Qt zs+BE?0Zb_U!abplT?2!u^gtjmkjfi=S}J%nhI?a?SR>vT0!`cxXR?JXxFPuM0E3vw zjkUJmHDX_2H+_Sf$PMELMjx+vSpQ^vXsi_+W&p1ZgWGmxf$JcyG%1+ zUik=Q8%(|0ly>7R#}nn`c)N032geS?pC2$Ae_-m!x~^FXDg)-C^&~^)9u>gNTO&;q z-sSKz*PB(I$B=2g=~p#6sa(s21-*SEr=sC z#Czw9wK`UCbFqMU*weL3_n0P1)GIIXZHg}iEi@hanf`Qd7n&|gXX$7Am(SAEE>LJX z?#`Ly_(zlm`h;||6l#uQ_Qagy<7#)FJ^Gv3Ge03&@VrMezv{3heyFk-ru z{`-vd2LrNyiScKQzhHco@eRh`FrH%kAI3j0e#Cg5(UeYno3WCyhVf#?OBv}iE!ES= zxQg*=#t>r{V=rTj@jAvhBYo1PczYN>&v+B#UohUz_yxv?7@uJLF5{0GPcXj0NFRYI z&-;vJxJHSuX1tWKiSe_H>lwE(4l{n9@m9t!G9F?4Cgb-Rf5do#@eRgz7~f~qa92}Z z6^siQuV7rwNS}|%u8(mC8KEb}8m37!NYuM~L6onEwXj(}dU; zpJ)DM#$Pg?B*bR;F7sy@H9Qh2ua6L$T`lvA8Jif_5n^BMWWJAafDrrYF6PG>Zz05{ zc^C83jK>(UU8r$lSrpQiPUBMhEs&l+G#+|l64E|T^)FzoCxr15#s)&vx15olA5_;$ z#;XWX5B-&iP{qSDO2xx`D?9MY4*9#u4tx(G@((b-lMr=`GoK?w9rrRnO^7;i916&k-VjIqe(ByO9w2?j}T@e;`Es(}ak7Io-#I*G7mqpCg372xOC^0lX;(lKWD_ z`vN%SJTW+!P3{%SOa$oYh0k1giB{hO=(s1AB$l+`_IEfE& zP723Ai*I!#akz#wWr+*TyX? zCUQ8Ie0mje6@!nTv#PjIH>---r|p9O1)9N$iNK5xj>>jcyxHgJLcCAZIO82nrIW== zunUJW7R(CoOj_Z*?jGawXQTiYESDG*fr!D35o1#!pnBKjKu zc71UPzYVH)D|I6(6I|%4^R_cO1{p!Ujp!(Dk_%f+{g`y#F~x32i+d=Do)$- zrylJz+zuhAYEL?ciC+545m{g}Mx(wE5sFi@!Zo!hBH9#@4fq|$&%+$2NFgbxhRj^l?-keXqgB&b2g;Afo}UMGa*)IeJN-v%@_r`QJEOhSFIAWfmYLtQmZ z%L_uM=eo&Kj1h&5qbijmNacA~a5^_D{<8o)j$r>Qv?V+e3iU7f#c&6wHc-cy{-X>T z9TM9?e@dx}TDj^U6E7JUlbcV;y!ca|2&$Zp9Iw@RR|Hf!^MalHcL@@BSI}{z(4JIX z?3UE56;uo&TQIfJC;1dj0;1DmILY#XA>rousY}TcB{E1$UgInT`Oq#*%|(Ypne=Xh z*wfA=Nu(NgawrSqaiw*J_P^{z&pCOH7<{907h61sqA&@#K!T2nX#PT`iamw0pDG-{ zocVu(jDuwVB07?$8*l$JCW<((pY)gtT!u$sNE1`k@CRL<2SH~IZ_udw=e(Nl4hwOL zMyS;4p8iMGHE1H7LWzD!2|*0U$LkjA%7ys1dR+0UQa;*gq??^Wtsd2Tkspq}}3fl5x?htBA68Mj}LuGH%F^?AvSy zce%FULpS?>yX+!#g7}>h7SHNV^)BLUJYofx3k!EY!~7G6*6jf3De9GqVQ~QeYXmNa zib+Ch&K0VB64~P{fc~*oMS5=ju z0D_}r(qL6-~eo;q2ZM#^7H!}6_ F{{Y#2!4m)g literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/principal.d b/ProjetVoilier/Objects/principal.d new file mode 100644 index 0000000..50a9047 --- /dev/null +++ b/ProjetVoilier/Objects/principal.d @@ -0,0 +1,8 @@ +./objects/principal.o: Application\principal.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\Horloge.h Services\Include\Accelerometre.h \ + Services\Include\Girouette.h Services\Include\Servo.h \ + Pilotes\Include\I2C.h diff --git a/ProjetVoilier/Objects/principal.o b/ProjetVoilier/Objects/principal.o new file mode 100644 index 0000000000000000000000000000000000000000..f14302d602dc289ae64a4f7f8da9ae4bb11b42d4 GIT binary patch literal 5116 zcmb_gdvIJ;8UOCR=WaIH+fAB;k{0M}v6M`;H=9lR3boB+Q%IY%nIx9iGMmljCRy0* zhJA!E!(c@PXKqOL-3@>F zhbMFH?|k3yJKy=vJr)su&a`LkqyxCMnq66544kSQG6a>fz%zKR^-V zh<&8@4AFD%5m_6S-~Z3@!FLb$GU{p^6-Sm&iKF%H;WvSI^}a{OQ>X{eEH7;MpqZF6 zqT}2ELdwF#$H$xtjU<9Ip$YtFtUM>4eNY8+Tkx*l@Zvx1>e>Y>u5u}^}FR$ zzIPn~MS_ziMl%sx3t}_x)T2c|SRK(;!MUb*aFVTzsCndXr?d^t4WD_b@8p@2ec$@f zXnHDGv7fyA6fYOAqpYiq3&Jh76>d8FobYO+IY4A~lNBCn*|WAMbWzA`!^&-hVs|JM zA`*r%)Iwx$prMxSkOOPbu)=IfRL6Fq&~7w?TcIbaZ2SR z(d73Ed>g{MsAjMAHlR+J{{lRUYBc*MLAI}d7LSIP@%SVTt@WA+jauIo&cC7fJuAK^ z$T1K<2VvbWOeX|EGT#@%Y1GUQM8H|AnFmDBS+AJ~MT66>nTLeqY|+faBJ6C}%nwDA z)1#T=qS=XS<`L2AT%wsDi8aocW_~Q%oXa%xs95JrY377D*O}AIV`9Bi(9Gi^;#{Yh zpNR9F&uQifvC;XWW}XzAoZB_?lxTPE(9F|fvvW){&xlVs_h{x>;X3zg<~b2{9@NZF zMa+3zGtY}|=V{ISOl)&bYUTy8!+BLRKNmgDo0|EB*yX&XnHR-w=kJ<1DSDmLnt4g| zJ0EH0mm=;M*h0B;FN?j713~WGE8-HTNi(mCea<>C^FyF58Qbj4tD;_}hKWRi;I`Kmp;Wb3XNtl^CY#yV+iaC~s=&|o|YDOQm>X?$d0 ztRluJj&Lht7mZhiZW_F}Ds82Kfsq=w+oT+;blncQ#?uZOI51HmchcziKt<||5++m? z5o=9IoiTW-8K|?1)QiKJ@={Y7GPa>P5ObqD$xdT~y`?SlT@+}j8wpaq87ABc zW~+G?oo%!kYmIfr`oQ_dCZiFZ`o>1cs6(R(FCV7^%P0c3f^kC_w+j)juS((Dpg$bE z&A7$v4@Zcug)Hbecw`wLhF38_#rL97bHHh!C$ZnlWD{GvW2pp2PxvNV1oqo?vjNu{ow3ieqOQHcwd(>Mw)0rccspn8PSd6R*N1N_?FhLHuxGq6eJoL1Kf=SJRq;~OM_G)=@Psm z4fVKK7-1e^gxy9)hiC_|124}mU=%pU`Y_QXBi_0hU3$;8THDr6$fL?{y3#KaD*Q}TL7*k7pRE=J6U=g}uP+YGxs0%T zMj^RV#iGku1Lqkd$#T(4=JLr@VRn&RDBKl_X>Y1Ln@mkj6+F+)QS6Fqh6xBWsdz ztw^0}G&*-;Ptr9F=hLZdrsx%}@Ctc3LSH)VW%D%VrOOMd?H0VO8ZeWa$&-{hQg10U zy(H)3$`n8nJUu1y8gb6$<}d^I;sc-AQY_)lt1O;O;A*^QGf3!aVF`1aaxDMzZ&sffx@2x{{HteqWCfJo|(~L_#LTJ4{QNSzjAWepA9~_QBxTV z67P*VGY0?YKz)kxfs=(lpt==pbxF{Y0^9fn;-#`x$M=vb+?|Vs%v=`kgrIpnWq+ci zJ|VtAMVf<*OI_ME@jST?X4*zq`t$dX5?g3jvgL0Tl_%lYYN7WOdnWW0e~U$&(5Urf3Q$p8QV literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/pwm.d b/ProjetVoilier/Objects/pwm.d new file mode 100644 index 0000000..4d116c9 --- /dev/null +++ b/ProjetVoilier/Objects/pwm.d @@ -0,0 +1,6 @@ +./objects/pwm.o: Pilotes\Source\PWM.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\PWM.h diff --git a/ProjetVoilier/Objects/pwm.o b/ProjetVoilier/Objects/pwm.o new file mode 100644 index 0000000000000000000000000000000000000000..5d07218fbb30534836cd85b32a2e32814720d8a2 GIT binary patch literal 6156 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 literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/servo.d b/ProjetVoilier/Objects/servo.d new file mode 100644 index 0000000..02862c7 --- /dev/null +++ b/ProjetVoilier/Objects/servo.d @@ -0,0 +1,7 @@ +./objects/servo.o: Services\Source\Servo.c Services\Include\Servo.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\DriverGPIO.h Pilotes\Include\PWM.h \ + Pilotes\Include\Horloge.h diff --git a/ProjetVoilier/Objects/servo.o b/ProjetVoilier/Objects/servo.o new file mode 100644 index 0000000000000000000000000000000000000000..e1f76d360775af7aa246c1f94dcf23b6bafe64c1 GIT binary patch literal 4696 zcmb_fZ*Ut&6@PcPE6J9vIR6|cq^X)oQX=Y$T68K;kATSIw0SbhcBs8V8v`GuJkf!NC`+<^vX=liXlB7-2mchKY zw|i1N!wetTnY-Wq-tX<(r`^5X)%Ag7RMRw2MFSs{8NhTvD7;lbBdkPK$GQ)n{U^S1 z+&H8k){Yo+aA`llhwtp`y>bd(x#Iu)mp_4^7CW#QE}fr-L;9TdE%^5Q^?%Q^TN==6Vv1F)r<-|tj; zEf|6LQX(CG08g9n_PX9^^Q}Xdt$sgNt4!=+i6_z^BKhxFdG|_yY7V+IP*48Wn<%6W z?2rZlm>B9?ASM_|GoU}gfFDD$gUHXA&Yx7u z&l%$wdO8F(L=I501B&*?XDCH>@;BPDCSFDb|qm&bD3BRP2lWZA( zUn!?pJ^x54zh(`5UMWwrRlEv+g2?(bTg?|C5m`UO*6@`|`3(#5HA;Dwt>ukM`7K+= zH!9^hww|{u<$2b~JC*V~wt@F3ZXt{)rTEzD@f|uz< zv>0E)*Ajg6j}5k3zijXiP`pTns|N5JihN)&{x3y7G<>*_rQ0>5hBHO38+E)&ksHP` zUaQDQMgw?K$f__M=%Cd0+=|rjRO^Rp+C^;-u76~{h+yl{2N~;iHNSos`iXhT(}_f1 zhPG!TS^eZK+WKW%5N-X!+qVUMxbt~Y_f#rBt7twuozGc0yEE8T$OegKrmRA6B3}sh zWJj&>acex-ZiZWe!}rmVC^Kdin}+hG!kCpJ zo;SxJmC9LmdU`sX%A>=BsqRw2N|#dIJtMmZ;(hU+WNNUGf55VL=QC3os{qkt2uitP zW^WGrEKcSNHk2|sJJdd6L$YV6C%L;P){I_ZmxW*`5ly-@3^9!A(iRvhlUC^2R%UGw zjV7==6}DaQu*)|guZYwE(f(mq+zf+5QJ009p(|OA9KxU#DTTrqsiLD$3-NMCp;qE8 zyvbD_Hp*uEQ5q=ZID#Ld`EYVdVZ-(J`Vq|!B+KO2d<N-+=k&ymS%1;oy%EM zFkZ4}qqAeE!T)1nbwzNsrmgg72DEmpM#EMq<5#O<}Xu3^m0p z`r4Y}GQxtd51?p|hqY!z6tL27)5ZzbBWM3T1?>F1XFNU{sQV-M~5}S$60Z* z>cFR68@9j@jbv`dr@F>**nqPlc5+N}E7@@s_YsQz05;%m?m@2Oi<;N#X^G?-JtkPsu-)=)a?nfcSyf8(tcfXFvqRY(%zBu z=xD)u2u$3MZ7|33*(_cqoI_zGj>iQgX2p3T>g&)2_dzpl+l9<%$+n7M7OW{5s(^=z zvXGZGlNp~8fz6vvA<=~TTVQq)D%u4n=zGfz1h!$xY03iw~AY zu>m@Dw>{1v9cEk5Oq+vS7|+ z!FWUp2$+F=f0IT^5sw(>`RAM?UdW;6~L zNu=UradY*Xl~&LU^0|OlqMOX33D^$M+lQOBN$gJ?|#J)qC z<7!Zy00;l>46(!1+imO&#B_%e2rC*Kl#dSTjs06VIl$^ZZW literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/startup_stm32f10x_md.o b/ProjetVoilier/Objects/startup_stm32f10x_md.o new file mode 100644 index 0000000000000000000000000000000000000000..836dc8da3e366036dbba079c3019832ad8c293de GIT binary patch literal 6048 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 literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/system_stm32f10x.d b/ProjetVoilier/Objects/system_stm32f10x.d new file mode 100644 index 0000000..48d64e1 --- /dev/null +++ b/ProjetVoilier/Objects/system_stm32f10x.d @@ -0,0 +1,5 @@ +./objects/system_stm32f10x.o: RTE\Device\STM32F103RB\system_stm32f10x.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h diff --git a/ProjetVoilier/Objects/system_stm32f10x.o b/ProjetVoilier/Objects/system_stm32f10x.o new file mode 100644 index 0000000000000000000000000000000000000000..494db81bd7720d46f5dad5766b6b7ed1557fff13 GIT binary patch literal 6992 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 Gum20eAT{{_ literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Objects/timer.d b/ProjetVoilier/Objects/timer.d new file mode 100644 index 0000000..e57dc75 --- /dev/null +++ b/ProjetVoilier/Objects/timer.d @@ -0,0 +1,6 @@ +./objects/timer.o: Pilotes\Source\Timer.c \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\stm32f10x.h \ + RTE\_Reel\RTE_Components.h \ + C:\ProgramData\Keil\Packs\ARM\CMSIS\6.2.0\CMSIS\Core\Include\core_cm3.h \ + C:\ProgramData\Keil\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include\system_stm32f10x.h \ + Pilotes\Include\Timer.h diff --git a/ProjetVoilier/Objects/timer.o b/ProjetVoilier/Objects/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..0ef09fe2f8cf61556cde26198b989f80f9f34903 GIT binary patch literal 4552 zcmb_fYiwLc6+UzC+@1B>**K09CuvAm!L%Wy*ZXi>$Kgn-tC5DBDk&fJ;Z zP3S*3t9!rs&Ufa_+?ly^Xa6~pPB6wm8v`%Y89>l46{}mqHt0arz_J&w#U*z7+;yY% z+;s?Cybi#g@SePQ-9S8b60b+2Z!tKvXe`YQ$jUPBr~;NfFloYrR_p$A~tJh+m@|td?VgZsqTA#CrtZ zxN+6}v77qF*0A^a*IK5(wc|Gb8g_37fUzD1*P8ym<_|Uln4Mty_ck|Uk*`KSfK`(% z0MA<1+>DV}6ss_Da4nHujP~x7(M>kC(B_G5a1-9SaoZtRo){0q?NC6zj#M0FYs1zO)FpLZGxs< z_TU@5UC=Yh9=yoc3%^#*^9`b1E8pas#1^f5i*FX4TDict2wN-P<^d7W%0<3a?9s|g zyi>%q@*RGMIG~m9@@-;7E8pYW#fP=>eZE6{L@O_ITjaE|%!8t!l^^i1SkTH3dAInu zR$k#f;*?e{@m}#+t^A1hiL+YyG2bno)XHVPS3IMYS9w&N)5=eHT%6a+PkB;Y)XL9z zzqq88*Z4i+Rjpj%`^B%c@^gMr{8lT!;KSgRqka@8{{@^Jw$J<`f-sEZ^fKecqUJjo zFE~Gm%sPX&0lbVf_iQtEbJ2ukBQ8y2FRr5&P4?l^S))l5SIat0Vz@xIXcEUYai=B; zTn4r#Nu2o}O;R}7do}6D`Aujtz&pWPMAn48h3$B;`^S))+-IEOAC;wE^dd7Jl8l}d z8GNF~+`5m+x(<0;NSAe6sIF_2n~dVLB}#?4Qqd_^`vS3YAwV>jcglg8QaO++Oghuk z&UB#14o3pxrBc2xkS!Oc^4a3iz~P-UpN@ccGu1YD?gIYQ@mP#K=C4(3huCWk|4JFbw8ipjcRihCYtCMa> z4b<6ANF;`^Ii0pg@^Fpcjl3aKFC>P?YvL{#9ZS?$Cn#*wux==Y-M+_)mSN(9s(w?(25&IE8-0_jvp=dh`(hO`SH?5?^E3G zy~#)KR@~2F2Z9gC+Vh2b^3!v$H##&0vdkB@V`h2QrhnV#c;J zx#CoQe%gUVUl+b2N6XnlGF#1dQKhcY?9_u5w>UOF6bbi-78WLw{i9uByW0+RC7olr zDW_{tWw`m(1gKP}an|iw>PMwoh=lPaUOw_F>Cw{Pe&p@~0zxN!aSTy-7Q9Dg&(?y9UwBr~X5NoC-ebqQhX~RF47Mu9#$AvIHEA4FsJaC!V?NlD|}MnvkG5SxUBGs!rv?WvqC%; z%l=uom}Gwy-mY+m!d(jc6^j|A3h~p_^v(k4c9#nBJEB`+f z2YcF?oIg5|ot!K?$H2yYv`di_xTLqZggNHUPWvYWRnWOvdTGh-5kw z(oCVT*~K~7>Xzl5W?1gl5*u!`W#B(2oa`-#K1%AwVj+qbhcDor&Ed_p#_r)xv`Ak1 zmPxBsmEBuFpGVbPl#h)c02vph`!ljwzg4j@(S#}1t1kF%eqb4SQpL+W@ zdS!YX*Zb<#EC>Q^u4MR6PCo=uYKJa^h%y0R(nZ7+%0ZW7X`PG~>}l8Y*M>kUQmO`H zu1=Fchm}Sfbw_Q$_3=wu!-0^dGU3XKDi1UT)CgfrtNR&?!m?KB)I%nx?>v=01n>x< sHk{9!`qz#EEkK%dbz*WKRHwo}YEjjs(F)CP;_%7@uTi|TdI{tH1OKjsH~;_u literal 0 HcmV?d00001 diff --git a/ProjetVoilier/Pilotes/Include/DriverGPIO.h b/ProjetVoilier/Pilotes/Include/DriverGPIO.h new file mode 100644 index 0000000..b0d7acb --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/DriverGPIO.h @@ -0,0 +1,17 @@ +#ifndef DRIVERGPIO_H_ +#define DRIVERGPIO_H_ +#include "stm32f10x.h" +#define In_Floating 0x4 +#define In_PullDown 0x8 +#define In_PullUp 0x8 +#define In_Analog 0x0 +#define Out_Ppull 0x3 +#define Out_OD 0x7 +#define AltOut_Ppull 0xB +#define AltOut_OD 0xF +extern void MyGPIO_Init(GPIO_TypeDef * GPIO, char pin, char conf ); +extern int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin); // renvoie 0 ou autre chose different de 0 +extern void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin); +extern void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin); +extern void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin); +#endif diff --git a/ProjetVoilier/Pilotes/Include/Horloge.h b/ProjetVoilier/Pilotes/Include/Horloge.h new file mode 100644 index 0000000..b57a4c4 --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/Horloge.h @@ -0,0 +1,16 @@ +#include +#define PSC_VAL 624 +#define ARR_VAL 0xE0FF + +//DUTY CYCLE +#define DUTYC 70 //Chiffre entre 0 et 100, où 100 est 100% duty cycle +//#define POWERMODE 1 // 1 vaut powermode 1, 0 vaut powermode 2 (Powermode pour le config de dutycycle) +//Powermode 1 reste sur la bonne polarité: cad. si DUTY_CYCLE vaut 60 alors le signal reste HIGH pour 60% du periode, inverse pour pwmd2 +//Timer +void Timer_Init(TIM_TypeDef *Timer, unsigned short Autoreload, unsigned short Prescaler); +void MyTimer_ActiveIT(TIM_TypeDef * Timer, char Prio, void(*Interrupt_fonc)(void)); +void TIM2_IRQHandler(void); + +//PWM +void MyTimer_PWM(TIM_TypeDef * Timer , int Channel); +int Set_DutyCycle_PWM(TIM_TypeDef *Timer, int Channel, int DutyC); \ No newline at end of file diff --git a/ProjetVoilier/Pilotes/Include/I2C.h b/ProjetVoilier/Pilotes/Include/I2C.h new file mode 100644 index 0000000..1cda3b8 --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/I2C.h @@ -0,0 +1,2 @@ +#include +void initI2C(); \ No newline at end of file diff --git a/ProjetVoilier/Pilotes/Include/MYGPIO.h b/ProjetVoilier/Pilotes/Include/MYGPIO.h new file mode 100644 index 0000000..5cc4f40 --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/MYGPIO.h @@ -0,0 +1,38 @@ +//Definitions + +//INTERNE +#define LED_PIN_INTERNE (5) // 5 pour le LED de Arduino +#define BUTTON_GPIO_INTERNE (GPIOA) //GPIOA pour l'Arduion +#define LED_GPIO_INTERNE (GPIOA) //GPIOA pour Arduino +#define BUTTON_PIN_INTERNE (13) //13 pour Arduino + +//EXTERNE +#define LED_PIN_EXTERNE (8) // 8 pour la porte PB8 +#define BUTTON_GPIO_EXTERNE (GPIOB) //GPIOB pour externe +#define LED_GPIO_EXTERNE (GPIOB) //GPIOB pour Externe +#define BUTTON_PIN_EXTERNE (9) //9 pour bouton poussoir + +//STATIQUES +#define GPIO_OUTPUT_PPULL_MODE (2) //Mis en GP output 2MHz en mode PP +#define GPIO_INPUT_PUPD_MODE (8) //Pour mettre à Pull up/down +#define GPIO_INPUT_FLOATING_MODE (4) + +//si on est sur l'arduino ou sur le led externe +#define INTERNE 1 // 1 c'est vrai, 0 faux + +//FONCTIONS +void initGPIO_Interne(void); +int boutonAppuye_Interne(void); +void allumerDEL_Interne(void); +void eteindreDEL_Interne(void); +void commuterDEL_Interne(void); +void allume_bit_Interne(void); + +void initGPIO_Externe(void); +int boutonAppuye_Externe(void); +void allumerDEL_Externe(void); +void eteindreDEL_Externe(void); +void commuterDEL_Externe(void); +void allume_bit_Externe(void); + + diff --git a/ProjetVoilier/Pilotes/Include/MyI2C.h b/ProjetVoilier/Pilotes/Include/MyI2C.h new file mode 100644 index 0000000..519965c --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/MyI2C.h @@ -0,0 +1,229 @@ +#ifndef _I2C_ +#define _I2C_ + +#include "stm32f10x.h" + +/************************************************************************************* +===================== By Periph team INSA GEI 2022 =========================== +*************************************************************************************/ + +/* +************************************************************************************* +===================== I2C les IO STM32F103 ================================= +************************************************************************************* + +Les IO sont pris en charge par la lib, pas besoin de faire les configurations Alt OD. + +**I2C1** +SCL PB6 +SDA PB7 + +**I2C2** +SCL PB10 +SDA PB11 + + +************************************************************************************* +==================== Fondamentaux I2C ========================================== +************************************************************************************* +- Bus synchrone Low speed (<100kHz) ou high speed (=400kHz), Ici Low speed 100kHz. +- Transfert octet par octet, poids fort en premier, avec aquittement pour chaque octet +- Deux lignes SDA et SCL (horloge) en open drain, repos '1' +- bit "normal" = SDA stable lors du pulse SCL (ie durant l'état haut de SCL, SDA est stable) +- bit Start/Stop/Restart = SDA non stable lorsque SCL vaut '1' (violation règle précédente) + * Start : front descendant de SDA lorsque SCL vaut '1' + * Stop : front montant de SDA lorsque SCL = '1' + * Restart = Start en cours de trame (typiquement pour changer Write/read). +- uC en Mode Master uniquement (c'est notre choix) : c'est le uC qui est maître de l'horloge SCL. +- Le Slave a une @ 7 bits. On ajoute un bit LSB qui est /WR (donc 0 pour écriture, 1 pour lecture) +- Une adresse s'écrit donc |a6 a5 a4 a3 a2 a1 a0 /WR| ce qui donne 8 bits. Elle indique une future +lecture ou écriture. +On parle d'@ 7 bits en regroupant |a6 a5 a4 a3 a2 a1 a0| +On parle d'@ 8 bits en regroupant |a6 a5 a4 a3 a2 a1 a0 /WR| (donc une @ écriture, une @ lecture) +NB : préférer le concept @7bits...c'est plus clair. + +- On peut lire ou écrire une ou plusieurs données à la suite. C'est lors de l'envoie de l'adresse Slave +par le Master que le sens à venir pour les datas est indiqué. +- En écriture, + * les Ack sont faits par le slave après chaque octet envoyé par le master (Ack = mise à 0 le bit 9). +- En lecture, + * dès que le l@ slave est transmise (/RW = 1), et le Ack réalisé, le slave positionne le bit 7 + du prochain octet à lire sur SDA par anticipation , + * le master enchaîne ses pulses (9), lors du pulse 9 (le dernier) c'est le master qui acquite. + * Après chaque acquitement, le Slave amorce le prochain octet en positionnant son bit 7 sur SDA + * Après le dernier octet, le Master génère un stop. + * Pour pouvoir générer le stop, le Master doit piloter SDA, or ce n'est pas possible puisque + le Slave positionne le futur bit 7 ... Pour régler ce problème : + lors du dernier transfert, le Master N'acquitte PAS (NACK). Ainsi le Slave ne + propose plus le bit 7 du prochain octet sur SDA et libère SDA. Le Master peut alors clôturer la + communication avec un Stop. + + + + +======= Echange typique avec un Slave ================================================================ +- Une lecture ou écriture se fait vers un Slave et à partir d'une adresse mémoire donnée (pointeur interne). +Ce pointeur est automatiquement incrémenté dans le slave lors des accès écriture ou lecture. + +- Ecriture de N octets , trame complète (@ = adresse slave, pt = valeur de chargement du pointeur interne) +|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| +|pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| +|d7|d6|d5|d4|d3|d2|d1|d0|Slave ACK| (data 1) +..... +|d7|d6|d5|d4|d3|d2|d1|d0|Salve ACK|Stop Cond| (data N) + +- Lecture de N octets à partir d'une adresse de pointeur donnée +|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| +|pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| +|ReStart Cond |@6|@5|@4|@3|@2|@1|@0| Wr =1 |Slave ACK| (NB: restart nécessaire pour changer écriture / lecture) +|d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data 1) +..... +|d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data N-1) +|d7|d6|d5|d4|d3|d2|d1|d0|Master NACK|Stop Cond| (data N) + + + + + +************************************************************************************* +==================== La lib I2C ========================================== +************************************************************************************* + +3 fonctions essentielles : +MyI2C_Init +MyI2C_PutString +MyI2C_GetString + +1 fonction spéciale : MyI2C_Get_Error + +Les fonctions Put/Get string fonctionnent sur le principe classique décrit précédemment +(Slave@, Pter @, Data...). +La fonction init prend parmi ses paramètres le nom d'une fct callback d'erreur. +En fait, le driver gère en IT les erreurs possibles I2C. La fonction MyI2C_Get_Error permet de +recevoir un code erreur. +Il est conseillé d'utiliser ce callback. Si on tombe dedans, c'est qu'une erreur s'est produite. +Si le code erreur est "inconnu", souvent c'est qu'il y a un soucis à l'adressage slave: +Vérifier alors la connectique physique SDA/SCL ainsi que l'alimentation du slave ou tout simplement +l'@ slave ! + + +==========================================================================================*/ + + + + + +/*========================================================================================= + GESTION ERREURS +========================================================================================= */ +typedef enum +{ + OK, + BusError, // + AckFail, // Pas,d'ack + TimeOut, // SCL est resté plus de 25ms à l'état bas + UnknownError // IT erreur déclenchée mais pas de flag explicite ... +} MyI2C_Err_Enum; + + + + +/** + * @brief Retourne les erreurs I2C + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @retval Type d'erreur rencontrée , voir MyI2C_Err_Enum + */ + +MyI2C_Err_Enum MyI2C_Get_Error(I2C_TypeDef * I2Cx); + + + +/*========================================================================================= + INITIALISATION I2C +========================================================================================= */ + + +/** + * @brief Initialise l'interface I2C (1 ou 2) + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param char IT_Prio_I2CErr 0 à 15 (utilisé en cas d'erreur, IT courte et non bloquante + * @param *ITErr_function : callback à utiliser pour sortir d'un plantage transmission + * @retval None + * @Example MyI2C_Init(I2C1, 2,My_CallbackErr); + + + + */ +void MyI2C_Init(I2C_TypeDef * I2Cx, char IT_Prio_I2CErr, void (*ITErr_function) (void)); + + + +/*========================================================================================= + EMISSION I2C : PutString +========================================================================================= */ + + +// Structure de données pour l'émission ou la réception I2C : +typedef struct +{ + char SlaveAdress7bits; // l'adresse I2C du slave device + char * Ptr_Data; // l'adresse du début de tableau char à recevoir/émettre (tableau en RAM uC) + char Nb_Data; // le nbre d'octets à envoyer / recevoir +} +MyI2C_RecSendData_Typedef; + + + +/** + * @brief|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| + |pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| + |d7|d6|d5|d4|d3|d2|d1|d0|Slave ACK| (data 1) + ..... + |d7|d6|d5|d4|d3|d2|d1|d0|Salve ACK|Stop Cond| (data N) + + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param PteurAdress = adresse de démarrage écriture à l'interieur du slave I2C + * @param DataToSend, adresse de la structure qui contient les informations à transmettre + voir définition MyI2C_RecSendData_Typedef + * @retval None + * @Example MyI2C_PutString(I2C1,0xAA, &MyI2C_SendTimeData); + * Ecrit dans le slave câblé sur I2C1 à partir de l'@ mémoire interne Slave 0xAA + + */ +void MyI2C_PutString(I2C_TypeDef * I2Cx, char PteurAdress, MyI2C_RecSendData_Typedef * DataToSend); + + + + + + + + + + +/*========================================================================================= + Réception I2C : GetString +========================================================================================= */ + +/** + * @brief |Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| + |pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| + |ReStart Cond |@6|@5|@4|@3|@2|@1|@0| Wr =1 |Slave ACK| + |d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data 1) + ..... + |d7|d6|d5|d4|d3|d2|d1|d0|Master NACK|Stop Cond| (data N) + + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param PteurAdress = adresse de démarrage lecture à l'interieur du slave I2C + * @param DataToSend, adresse de la structure qui contient les informations nécessaires à la + réception des données voir définition MyI2C_RecSendData_Typedef + * @retval None + * @Example MyI2C_GetString(I2C1,0xAA, &MyI2C_RecevievedTimeData); + Lit dans le slave câblé sur I2C1 à partir de l'@ mémoire interne Slave 0xAA + */ +void MyI2C_GetString(I2C_TypeDef * I2Cx, char PteurAdress, MyI2C_RecSendData_Typedef * DataToReceive); + + + + +#endif diff --git a/ProjetVoilier/Pilotes/Include/MySPI.h b/ProjetVoilier/Pilotes/Include/MySPI.h new file mode 100644 index 0000000..560404c --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/MySPI.h @@ -0,0 +1,129 @@ + +#ifndef INC_MYSPI_H_ +#define INC_MYSPI_H_ + +#include "stm32f10x.h" + +/************************************************************************************* +===================== By Periph team INSA GEI 2022 =========================== +*************************************************************************************/ + +/* +************************************************************************************* +===================== I2C les IO STM32F103 ================================= +************************************************************************************* +Les IO sont pris en charge par la lib, pas besoin de faire les configurations + + +Sur la Nucléo , le SPI1 est perturbé par la LED2 (PA5), mais doit pouvoir subir les front SCK qd même (LED clignote vite..) +le SPI2 n'est pas utilisable car pin non connectées par défaut (sauf à modifier les SB). En fait la Nucléo fait un choix entre SPI1 +et SPI2 par soudage jumper (SB). + +-> Utiliser SPI1 avec la carte Nucléo + + * **IO SPI 1** + SPI1_NSS PA4 + SPI1_SCK PA5 + SPI1_MISO PA6 + SPI1_MOSI PA7 + + **IO SPI 2** + SPI2_NSS PB12 + SPI2_SCK PB13 + SPI2_MISO PB14 + SPI2_MOSI PB15 + + + + + +************************************************************************************* +==================== Fondamentaux SPI ========================================== +************************************************************************************* +- Bus Synchrone, 4 fils (même si on peut l'utiliser en 3 fils) +- Transfert à l'octet +- Protocole entre un Master (contrôle SCK) et un Slave +- SCK permet de synchroniser les bits de chaque octet. Il se configure par : + * son niveau de repos : ici niveau '1' + * le front actif de synchronisation pour chaque bit : ici front montant (front up durant bit stable) +- /CS ou /NSS active le slave sur l'état bas +- MOSI : Master Out Slave In (donc data circulant du Master vers le Slave, donc écriture dans le Slave) +- MISO : Master In Slave Out (donc data circulant du Slave vers le Master, donc lecture du Slave) + +Bien que la lib propose une fonction d'écriture et de lecture : + * une écriture s'accompagne obligatoirement d'une lecture (bidon) + * une lecture s'accompagne obligatoirement d'une écriture (bidon) +La gestion /CS = /NSS se fait "à la main". On peut alors lire toute une série d'octets +en laissant /CS à l'état bas pendant toute la durée de circulation des octets. + + +************************************************************************************* +==================== La lib SPI ========================================== +************************************************************************************* + +fonctions essentielles : + +MySPI_Init +MySPI_Send +MySPI_Read +MySPI_Set_NSS +MySPI_Clear_NSS + + +==========================================================================================*/ + + + + +/*========================================================================================= + INITIALISATION SPI +========================================================================================= */ + +/** + * @brief Configure le SPI spécifié : FSCK = 281kHz, Repos SCK = '1', Front actif = up + Gestion /CS logicielle à part, configure les 4 IO + - SCK, MOSI : Out Alt push pull + - MISO : floating input + - /NSS (/CS) : Out push pull + * @param SPI_TypeDef * SPI : SPI1 ou SPI2 + */ +void MySPI_Init(SPI_TypeDef * SPI); + + + +/** + * @brief Envoie un octet (/CS non géré, à faire logiciellement) + Plus en détail, émission de l'octet souhaité sur MOSI + Lecture en même temps d'un octet poubelle sur MISO (non exploité) + * @param : char ByteToSend : l'octet à envoyer + */ +void MySPI_Send(char ByteToSend); + + +/** + * @brief Reçoit un octet (/CS non géré, à faire logiciellement) + Plus en détail, émission d'un octet bidon sur MOSI (0x00) + pour élaborer les 8 fronts sur SCK et donc piloter le slave en lecture + qui répond sur MISO + * @param : none + * @retval : l'octet lu. + */ +char MySPI_Read(void); + + + +/** + * @brief Positionne /CS = /NSS à '1'. A utiliser pour borner les octets à transmettre/recevoir + * @param : none + */ +void MySPI_Set_NSS(void); + + + +/** + * @brief Positionne /CS = /NSS à '0'. A utiliser pour borner les octets à transmettre/recevoir + * @param :none + */ +void MySPI_Clear_NSS(void); + +#endif diff --git a/ProjetVoilier/Pilotes/Include/MyTimer.h b/ProjetVoilier/Pilotes/Include/MyTimer.h new file mode 100644 index 0000000..012aa0d --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/MyTimer.h @@ -0,0 +1,12 @@ +#include "stm32f10x.h" + +//TIMERS start +#define MyTimer_Base_Start(Timer) (Timer->CR1 |= TIM_CR1_CEN) +#define MyTimer_Base_Stop(Timer) (Timer -> CR1 =(0x0)) +// IT +extern volatile int g_tick_count; // Declara que a variável existe em outro arquivo +void Test(void); +void ConfigureIT(); +// PWM +void ConfigurePWM(); +void ConfigureTimers(); \ No newline at end of file diff --git a/ProjetVoilier/Pilotes/Include/PWM.h b/ProjetVoilier/Pilotes/Include/PWM.h new file mode 100644 index 0000000..1eb59d4 --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/PWM.h @@ -0,0 +1,9 @@ +#ifndef PWM_H_ +#define PWM_H_ +#include "stm32f10x.h" +//Variables +#define POWERMODE 2 // 1 vaut powermode 1, 0 vaut powermode 2 (Powermode pour le config de dutycycle) +// Config +extern void MyTimer_PWM(TIM_TypeDef * Timer , int Channel); +extern int Set_DutyCycle_PWM(TIM_TypeDef *Timer, int Channel, int DutyC); +#endif diff --git a/ProjetVoilier/Pilotes/Include/Timer.h b/ProjetVoilier/Pilotes/Include/Timer.h new file mode 100644 index 0000000..48c46ec --- /dev/null +++ b/ProjetVoilier/Pilotes/Include/Timer.h @@ -0,0 +1,8 @@ +#ifndef TIMER_H_ +#define TIMER_H_ +#include "stm32f10x.h" +// Config de timer +extern void MyTimer_Base_Init(TIM_TypeDef *Timer , unsigned short ValARR , unsigned short ValPSC ); +// Enable timers +void EnableTimer(TIM_TypeDef *Timer); +#endif diff --git a/ProjetVoilier/Pilotes/Source/DriverGPIO.c b/ProjetVoilier/Pilotes/Source/DriverGPIO.c new file mode 100644 index 0000000..c88fdcf --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/DriverGPIO.c @@ -0,0 +1,74 @@ +#include "stm32f10x.h" +#include "DriverGPIO.h" +#define In_Floating 0x4 +#define In_PullDown 0x8 +#define In_PullUp 0x8 +#define In_Analog 0x0 +#define Out_Ppull 0x3 +#define Out_OD 0x7 +#define AltOut_Ppull 0xB +#define AltOut_OD 0xF + +void MyGPIO_Init(GPIO_TypeDef * GPIO, char pin, char conf ){ +int shift_pin; +//Start clock for relevant GPIO +if(GPIO == GPIOA){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; +} +else if(GPIO == GPIOB){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; +} +else if(GPIO == GPIOC){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; +} +else if(GPIO == GPIOD){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN; +} +if(pin < 8){//CRL zone +shift_pin = pin*4; +GPIO -> CRL &= ~(0xF << shift_pin); +//PullUp and PullDown have the same conf number, so we need to change the ODR to diferenciate them both +if(conf == In_PullUp){ +GPIO -> CRL |= ( In_PullUp << shift_pin); +GPIO -> ODR |= (1< CRL |= ( In_PullDown << shift_pin); +GPIO -> ODR &= ~(1< CRL |= ( conf << shift_pin); +} +} +else{//CRH zone +shift_pin = (pin-8)*4; +GPIO -> CRH &= ~(0xF << shift_pin); +if(conf == In_PullUp){ +GPIO -> CRH |= ( In_PullUp << shift_pin); +GPIO -> ODR |= (1< CRH |= ( In_PullDown << shift_pin); +GPIO -> ODR &= ~(1< CRH |= ( conf << shift_pin); +} +} +} + +int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){ +return(GPIO -> IDR & (1 << GPIO_Pin)); +} + +void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){ +GPIO -> BSRR = (1< BSRR = (1<<(GPIO_Pin+16));//1 on reset zone +} + +void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){ +GPIO -> ODR = GPIO -> ODR ^ (0x1 << GPIO_Pin); +} diff --git a/ProjetVoilier/Pilotes/Source/Horloge.c b/ProjetVoilier/Pilotes/Source/Horloge.c new file mode 100644 index 0000000..ad3c7f1 --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/Horloge.c @@ -0,0 +1,44 @@ +#include +#include + +static void (*TIM2_Appel)(void) = 0; + +void Timer_Init(TIM_TypeDef *Timer, unsigned short Autoreload, unsigned short Prescaler){ + if (Timer == TIM1) { + RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; + } else if (Timer == TIM2) { + TIM2->CR1 |= TIM_CR1_CEN; + RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; + } else if (Timer == TIM3) { + RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; + } else if (Timer == TIM4) { + RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; + } + Timer->ARR |= Autoreload; + Timer->PSC |= Prescaler; + Timer->EGR |= TIM_EGR_UG; +} + +//La fonction TIM2_IRQHandler existe déjà dans le processeur, on l'a juste redifint, tel qu'à chaque overflow on met un bit 1 dans GPIOA_ODR +void TIM2_IRQHandler(void) { //On redefinit le IRQHandler qui est déjà ecrit dans le code source + if (TIM2->SR & TIM_SR_UIF) { //On met le bit de overflow à un dès qu'on a overflow + TIM2->SR &= ~TIM_SR_UIF; //Remise à zero + + if (TIM2_Appel){TIM2_Appel();} + } +} + + +void MyTimer_ActiveIT(TIM_TypeDef * Timer, char Prio, void(*Interrupt_fonc)(void)){ //On veut créer une fonction qui envoie un signal au cas où il y a debordement, avec une prioritaire, 0 plus importante 15 moins importante + if (Timer == TIM2){ + + TIM2_Appel = Interrupt_fonc; + + NVIC_EnableIRQ(TIM2_IRQn); + NVIC_SetPriority(TIM2_IRQn, Prio); + TIM2->DIER |= TIM_DIER_UIE; //Le registre DIER(Interrupt Enable Register) est mis au bit Update Interrupt, qui se commute lors d'un overflow + TIM2->CR1 |= TIM_CR1_CEN; //Clock Enable + } +} + + diff --git a/ProjetVoilier/Pilotes/Source/I2C.c b/ProjetVoilier/Pilotes/Source/I2C.c new file mode 100644 index 0000000..3e28fea --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/I2C.c @@ -0,0 +1,9 @@ +#include +#include "I2C.h" + +void initI2C(){ + RCC -> APB1ENR |= 0x1 << 21; // Enable clock + I2C1 -> CR1 |= 0x1 << 0; // Peripheral enable + I2C1 -> CR1 &= ~(0x1 << 1); // I2C mode + +} \ No newline at end of file diff --git a/ProjetVoilier/Pilotes/Source/MYGPIO.c b/ProjetVoilier/Pilotes/Source/MYGPIO.c new file mode 100644 index 0000000..764e301 --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/MYGPIO.c @@ -0,0 +1,97 @@ +#include +#include +#include + + +//FONCTIONS POUR LE DEL INTERNE + +void initGPIO_Interne(void){ + RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ; + + //Start + //CRL pour les 8 premiers portes, CRH pour les 8 dernières portes + if (LED_PIN_INTERNE < 8){ + LED_GPIO_INTERNE->CRL &= ~(0xF << (LED_PIN_INTERNE*4)); + LED_GPIO_INTERNE->CRL |= GPIO_OUTPUT_PPULL_MODE<<(LED_PIN_INTERNE*4) ; // On met tous les Pins de broche A à ANalog Input sauf broche PA.5 qui correspond au LED GREEN: Output 2MHz et GP output push-pull + } + else{ + LED_GPIO_INTERNE->CRH &= ~(0xF <<((LED_PIN_INTERNE-8)*4)); + LED_GPIO_INTERNE->CRH |= GPIO_OUTPUT_PPULL_MODE<<((LED_PIN_INTERNE-8)*4); + } + + if (BUTTON_PIN_INTERNE < 8){ + BUTTON_GPIO_INTERNE->CRL &= ~(0xF << (BUTTON_PIN_INTERNE*4)); + BUTTON_GPIO_INTERNE->CRL |= GPIO_INPUT_FLOATING_MODE<<(BUTTON_PIN_INTERNE*4) ; // On met tous les Pins de broche A à ANalog Input sauf broche PA.5 qui correspond au LED GREEN: Output 2MHz et GP output push-pull + } + else{ + BUTTON_GPIO_INTERNE->CRH &= ~(0xF <<((BUTTON_PIN_INTERNE-8)*4)); + BUTTON_GPIO_INTERNE->CRH |= GPIO_INPUT_FLOATING_MODE<<((BUTTON_PIN_INTERNE-8)*4); + } +} + +int boutonAppuye_Interne(void){ + return BUTTON_GPIO_INTERNE->IDR &(1<ODR |= (0x01 << LED_PIN_INTERNE) ; //On essaie de mettre en position PA5 de GPIOC_ODR un 1 comme ca allume le LED GREEN + } + + void eteindreDEL_Interne(void){ + LED_GPIO_INTERNE->ODR &= ~(0x01 << LED_PIN_EXTERNE) ; //On essaie de mettre en position PA5 de GPIOC_ODR un 0 comme ca eteint le LED GREEN + //ALlumer un LED externe, PB8/D15 OUTPUT, Bouton Poussoir PB9/D14 +} + +void commuterDEL_Interne(void){ + LED_GPIO_INTERNE->ODR ^= (0x01 << LED_PIN_INTERNE); +} + + + +//FONCTIONS POUR LE DEL EXTERNE + +void initGPIO_Externe(void){ + RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ; + + //Start + //CRL pour les 8 premiers portes, CRH pour les 8 dernières portes + if (LED_PIN_EXTERNE < 8){ + LED_GPIO_EXTERNE->CRL &= ~(0xF << (LED_PIN_EXTERNE*4)); + LED_GPIO_EXTERNE->CRL |= GPIO_OUTPUT_PPULL_MODE<<(LED_PIN_EXTERNE*4) ; // On met tous les Pins de broche A à ANalog Input sauf broche PA.5 qui correspond au LED GREEN: Output 2MHz et GP output push-pull + } + else{ + LED_GPIO_EXTERNE->CRH &= ~(0xF <<((LED_PIN_EXTERNE-8)*4)); + LED_GPIO_EXTERNE->CRH |= GPIO_OUTPUT_PPULL_MODE<<((LED_PIN_EXTERNE-8)*4); + } + + if (BUTTON_PIN_EXTERNE < 8){ + BUTTON_GPIO_EXTERNE->CRL &= ~(0xF << (BUTTON_PIN_EXTERNE*4)); + BUTTON_GPIO_EXTERNE->CRL |= GPIO_INPUT_FLOATING_MODE<<(BUTTON_PIN_EXTERNE*4) ; // On met tous les Pins de broche A à ANalog Input sauf broche PA.5 qui correspond au LED GREEN: Output 2MHz et GP output push-pull + } + else{ + BUTTON_GPIO_EXTERNE->CRH &= ~(0xF <<((BUTTON_PIN_EXTERNE-8)*4)); + BUTTON_GPIO_EXTERNE->CRH |= GPIO_INPUT_FLOATING_MODE<<((BUTTON_PIN_EXTERNE-8)*4); + } +} + +int boutonAppuye_Externe(void){ + return BUTTON_GPIO_EXTERNE->IDR &(1<ODR |= (0x01 << LED_PIN_EXTERNE) ; +} //On essaie de mettre en position PA5 de GPIOC_ODR un 1 comme ca allume le LED GREEN + + +void eteindreDEL_Externe(void){ + LED_GPIO_EXTERNE->ODR &= ~(0x01 << LED_PIN_EXTERNE) ; //On essaie de mettre en position PA5 de GPIOC_ODR un 0 comme ca eteint le LED GREEN + //ALlumer un LED externe, PB8/D15 OUTPUT, Bouton Poussoir PB9/D14 +} + +void commuterDEL_Externe(void){ + LED_GPIO_EXTERNE->ODR ^= (0x01 << LED_PIN_EXTERNE); +} + + + + diff --git a/ProjetVoilier/Pilotes/Source/MyTimer.c b/ProjetVoilier/Pilotes/Source/MyTimer.c new file mode 100644 index 0000000..182a0e9 --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/MyTimer.c @@ -0,0 +1,43 @@ +#include "stm32f10x.h" +#include "Timer.h" +#include "MyTimer.h" +#include "PWM.h" +#include "DriverGPIO.h" +#include "Horloge.h" +// Variables +#define ARR_TIM1 0xFFAD +#define PSC_TIM1 0xFF +#define ARR_TIM2 0xFFAD +#define PSC_TIM2 0x0225 +#define ARR_TIM3 0x2CF +#define PSC_TIM3 0x0 + +volatile int g_tick_count; +void Test(void){ + // Signal + g_tick_count++; + MyGPIO_Toggle(GPIOA, 8); +} + +void ConfigureTimers(){ +// Config ARR & PSC +//MyTimer_Base_Init(TIM2, ARR_TIM2, PSC_TIM2); +//MyTimer_Base_Init(TIM1, ARR_TIM1, PSC_TIM1); +//MyTimer_Base_Init(TIM3, ARR_TIM2, PSC_TIM2); +//Timer_Init(TIM1, ARR_TIM1, PSC_TIM1); +Timer_Init(TIM2, 0, 0); +Timer_Init(TIM8, 0, 0); + // Enable timer clock +//EnableTimer(TIM1); +//EnableTimer(TIM2); +//EnableTimer(TIM3); +} +void ConfigureIT(){ // Activate general interuption with a function and priority +//MyTimer_ActiveIT(TIM2, 4, Test); //start interruption with priority 4 +//MyTimer_ActiveIT(TIM1, 4, Test); //start interruption with priority 4 +MyTimer_ActiveIT(TIM3, 4, Test); //start interruption with priority 4 +} +void ConfigurePWM(){ // Set dutycycle with timer +MyTimer_PWM(TIM8, 2); // Utiliser timer1 avec channel 1 +//MyTimer_Set_DutyCycle(TIM1, 1, 20.0); +} diff --git a/ProjetVoilier/Pilotes/Source/MyUart.c b/ProjetVoilier/Pilotes/Source/MyUart.c new file mode 100644 index 0000000..1bd258f --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/MyUart.c @@ -0,0 +1,61 @@ +#include "stm32f10x.h" +#include "DriverGPIO.h" +#include "MyTimer.h" + +void My_USART_Config(USART_TypeDef* USARTx, uint32_t baudrate) { //QUE POUR USART1 + + // Configuration PA9 (Tx) en Alternate Function Push-Pull + MyGPIO_Init(GPIOA, 9 , 0xB); + // Configuration PA10 (Rx) en Input Floating + MyGPIO_Init(GPIOA, 10 , 0x4); + NVIC_EnableIRQ(USART1_IRQn); + NVIC_SetPriority(USART1_IRQn, 3<<4); + + + RCC->APB2ENR |= RCC_APB2ENR_USART1EN; +// USARTx->CR2 |= USART_CR2_CLKEN; + USARTx->CR1 |= USART_CR1_UE; + USARTx->BRR = baudrate; + USARTx->CR1 |= USART_CR1_TE; + USARTx->CR1 |= USART_CR1_RE; +}; + + +void USART_Send_Char(USART_TypeDef* USARTx, char car) { + while ((USARTx->SR & USART_SR_TXE)==0){ + } + + USARTx->DR = car; +}; + +void USART_Send_String(USART_TypeDef *USARTx, char *pString) +{ + while (*pString != '\0') + { + USART_Send_Char(USARTx, *pString); + pString++; + } +}; + + + +void (*pFnc_Receive) (char); + +void USART_IT_Receive_Enable(USART_TypeDef* USARTx) { + USARTx->CR1 |= USART_CR1_RXNEIE; +}; + +void Init_IT_Receive(void (*Receive_IT_function) (char)){ + pFnc_Receive = Receive_IT_function; +}; + + + +void USART1_IRQHandler(void){ + signed char commande = USART1->DR; + if (pFnc_Receive != 0) { + pFnc_Receive(commande); + } + +}; + diff --git a/ProjetVoilier/Pilotes/Source/PWM.c b/ProjetVoilier/Pilotes/Source/PWM.c new file mode 100644 index 0000000..885d42b --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/PWM.c @@ -0,0 +1,85 @@ +#include "stm32f10x.h" +#include "PWM.h" + +void MyTimer_PWM(TIM_TypeDef * Timer , int Channel){ + int pwrmd; + #if POWERMODE //Powermode 1 + pwrmd = 0b110; + #else + pwrmd = 0b111; //Powermode 2 + #endif + + if (Channel == 1){ + Timer->CCMR1 &= ~(0b111<<4); //On clear les trois bits qui sont de pwm + Timer->CCMR1 |= (pwrmd<<4); //On affecte le powermode au bits de lecture pour le µ-controlleur + Timer->CCMR1 |= TIM_CCMR1_OC1PE; //Update preload, il n'affecte pas le valeur avant que la prochaine cycle + Timer->CCER = TIM_CCER_CC1E; //Enable le pin voulu basculer + } + else if (Channel == 2){ + Timer->CCMR1 &= ~(0b111<<12); //Le TIMx_CCMR1 configure deux channels, de bit [6:4] CH1, [14:12] CH2 (OC2M = Output Channel 2 ) + Timer->CCMR1 |= (pwrmd<<12); + Timer->CCMR1 |= TIM_CCMR1_OC2PE; + Timer->CCER |= TIM_CCER_CC2E; + } + else if (Channel == 3){ + Timer->CCMR1 &= ~(0b111<<4); + Timer->CCMR2 |= (pwrmd<<4); + Timer->CCMR2 |= TIM_CCMR2_OC3PE; + Timer->CCER |= TIM_CCER_CC3E; + } + else if (Channel == 4){ + Timer->CCMR1 &= ~(0b111<<12); + Timer->CCMR2 |= (pwrmd<<12); + Timer->CCMR2 |= TIM_CCMR2_OC4PE; + Timer->CCER |= TIM_CCER_CC4E; + } + + //En dessous d'ici, on a l'aide du plus gentil chat que je connais + // Enable auto-reload preload -- //Ensures that your initial configuration — PWM mode, duty cycle, period — actually takes effect before the timer starts counting. + Timer->CR1 |= TIM_CR1_ARPE; + // Force update event to load ARR and CCR values immediately + Timer->EGR |= TIM_EGR_UG; + // Start the timer + Timer->CR1 |= TIM_CR1_CEN; + + switch (Channel) { + case 1: + if (Timer == TIM1){GPIOA->CRH &= ~(0xF<<0*4); GPIOA->CRH |= (0xA<<0*4); TIM1->BDTR |= 1<<15; } + if (Timer == TIM2){GPIOA->CRL &= ~(0xF<<0*4); GPIOA->CRL |= (0xA<<0*4);} + if (Timer == TIM3){GPIOA->CRL &= ~(0xF<<6*4); GPIOA->CRL |= (0xA<<6*4);} + if (Timer == TIM4){GPIOB->CRL &= ~(0xF<<5*4); GPIOB->CRL |= (0xA<<5*4);} + break; + case 2: + if (Timer == TIM1){GPIOA->CRH &= ~(0xF<<1*4); GPIOA->CRL |= (0xA<<1*4); TIM1->BDTR |= 1<<15;} + if (Timer == TIM2){GPIOA->CRL &= ~(0xF<<1*4); GPIOA->CRL |= (0xA<<1*4);} + if (Timer == TIM3){GPIOA->CRL &= ~(0xF<<7*4); GPIOA->CRL |= (0xA<<7*4);} + if (Timer == TIM4){GPIOB->CRL &= ~(0xF<<7*4); GPIOB->CRL |= (0xA<<7*4);} + break; + case 3: + if (Timer == TIM1){GPIOA->CRH &= ~(0xF<<2*4); GPIOA->CRH |= (0xA<<2*4); TIM1->BDTR |= 1<<15;} + if (Timer == TIM2){GPIOA->CRL &= ~(0xF<<2*4); GPIOA->CRL |= (0xA<<2*4);} + if (Timer == TIM3){GPIOB->CRL &= ~(0xF<<0*4); GPIOB->CRL |= (0xA<<0*4);} + if (Timer == TIM4){GPIOB->CRH &= ~(0xF<<0*4); GPIOB->CRH |= (0xA<<0*4);} + break; + case 4: + if (Timer == TIM1){GPIOA->CRH &= ~(0xF<<3*4); GPIOA->CRH |= (0xA<<3*4); TIM1->BDTR |= 1<<15;} + if (Timer == TIM2){GPIOA->CRL &= ~(0xF<<3*4); GPIOA->CRL |= (0xA<<3*4);} + if (Timer == TIM3){GPIOB->CRL &= ~(0xF<<1*4); GPIOB->CRL |= (0xA<<1*4);} + if (Timer == TIM4){GPIOB->CRH &= ~(0xF<<1*4); GPIOB->CRH |= (0xA<<1*4);} + + } +} + +//Une fonction qui met le bon PWM voulu +int Set_DutyCycle_PWM(TIM_TypeDef *Timer, int Channel, int DutyC){ + int CCR_VAL = (Timer -> ARR + 1) * DutyC / 100; + switch (Channel){ + case 1: Timer->CCR1 = CCR_VAL; + case 2: Timer->CCR2 = CCR_VAL; + case 3: Timer->CCR3 = CCR_VAL; + case 4: Timer->CCR4 = CCR_VAL; + default: break; +} +return 0; +Timer->EGR |= TIM_EGR_UG; +} diff --git a/ProjetVoilier/Pilotes/Source/Timer.c b/ProjetVoilier/Pilotes/Source/Timer.c new file mode 100644 index 0000000..474c220 --- /dev/null +++ b/ProjetVoilier/Pilotes/Source/Timer.c @@ -0,0 +1,27 @@ +#include "stm32f10x.h" +#include "Timer.h" + +void MyTimer_Base_Init( TIM_TypeDef * Timer , unsigned short ValARR , unsigned short ValPSC ) { // Configuration du timer +Timer -> PSC=(ValPSC); +Timer-> ARR = (ValARR); +Timer->EGR |= TIM_EGR_UG; +}; + + + +void EnableTimer(TIM_TypeDef *Timer){ + if(Timer == TIM2){ + RCC -> APB1ENR |= RCC_APB1ENR_TIM2EN; + } + else if(Timer == TIM3){ + RCC -> APB1ENR |= RCC_APB1ENR_TIM3EN; + } + else if(Timer == TIM4){ + RCC -> APB1ENR |= RCC_APB1ENR_TIM4EN; + } + else if(Timer == TIM1){ + RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; + } + else{ + } +} diff --git a/ProjetVoilier/Pilotes/null b/ProjetVoilier/Pilotes/null deleted file mode 100644 index e69de29..0000000 diff --git a/ProjetVoilier/ProjetVoilier.uvguix.orvik b/ProjetVoilier/ProjetVoilier.uvguix.orvik new file mode 100644 index 0000000..e390c5d --- /dev/null +++ b/ProjetVoilier/ProjetVoilier.uvguix.orvik @@ -0,0 +1,3673 @@ + + + + -6.1 + +
    ### uVision Project, (C) Keil Software
    + + + \\netapp2\orvik\Bureau\BE_VOILIER\ProjetVoilier\Pilotes\Source + + + + + + + 38003 + Registers + 150 80 + + + 346 + Code Coverage + 1010 540 + + + 204 + Performance Analyzer + 1170 175 175 100 + + + + + + 35141 + Event Statistics + + 250 50 874 + + + 1506 + Symbols + + 85 85 85 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 104 + 104 + 1640 + 907 + + + + 0 + + 900 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000070000000400000001000000475C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C50696C6F7465735C536F757263655C4D79556172742E6300000000084D79556172742E6300000000FFDC7800FFFFFFFF4B5C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C50696C6F7465735C536F757263655C4472697665724750494F2E63000000000C4472697665724750494F2E6300000000BECEA100FFFFFFFF485C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C50696C6F7465735C536F757263655C4D7954696D65722E6300000000094D7954696D65722E6300000000F0A0A100FFFFFFFF465C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C50696C6F7465735C536F757263655C54696D65722E63000000000754696D65722E6300000000BCA8E100FFFFFFFF475C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C4170706C69636174696F6E5C7072696E636970616C2E63000000000B7072696E636970616C2E6300000000BCA8E100FFFFFFFF485C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C50696C6F7465735C536F757263655C486F726C6F67652E630000000009486F726C6F67652E6300000000F7B88600FFFFFFFF5D5C5C6E6574617070325C6F7276696B5C4275726561755C42455F564F494C4945525C50726F6A6574566F696C6965725C5254455C4465766963655C53544D33324631303352425C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000000008000099030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000EF000000 + + + 16 + F4000000660000009005000006010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000069030000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000069030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000069030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000069030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000009A0300000008000026040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000005D0200009005000011030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000005203000041010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000069030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0200000000000000D30300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000260400000008000039040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 010000001C000000E801000038000000 + + + 16 + 0A0000000A000000EE01000042000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000740200008D050000F8020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000EF00000090050000F3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F4000000660000009005000006010000F40000004F00000090050000EF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A00400006D020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000084020000A00400004F000000900500006D02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000082030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000099030000000000004F000000F0000000820300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000059020000900500005D02000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000740200009005000028030000000000005D020000900500001103000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC80200005D020000CC0200001103000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000820300000008000086030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000009D030000000800003D040000000000008603000000080000260400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 983 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000045265656C96000000000000000200045265656C0A53696D756C6174696F6E00000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 2048 + 1152 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000000080000EF000000 + + + 16 + F4000000660000009005000006010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000001D030000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A1030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0704000051030000FD0700000D040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0704000051030000FD0700000D040000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A1030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0000000063000000F0000000BA030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000009A0300000008000026040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000003A0300000004000026040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000000080000EF000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000005203000041010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000001D030000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A10000005203000041010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 437 + 437 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0704000051030000FD0700000D040000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 440 + 440 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0704000051030000FD0700000D040000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009D030000FD0700000D040000 + + + 16 + 8A000000A1000000A601000025030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000D6000000 + + + 16 + 8A000000A10000005203000041010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000054020000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0200000000000000D30300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000260400000008000039040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 010000001C000000E801000038000000 + + + 16 + 0A0000000A000000EE01000042000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 070400005103000091090000D5030000 + + + 16 + 8A000000A10000007A01000082010000 + + + + 3312 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000EF00000000080000F3000000010000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F4000000660000009005000006010000F40000004F00000000080000EF0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A00400006D020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000084020000A00400004F000000900500006D02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000036030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000099030000000000004F000000F0000000360300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000036030000000800003A03000001000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000100000000000000740200009005000028030000040400003A030000000800002604000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7301000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727301000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFF000400003A030000040400002604000001000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000820300000008000086030000000000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000009D030000000800003D040000000000008603000000080000260400000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 983 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000004001D000000000000000000000000000000000100000001000000018030800000000004001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000004006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000040000000000000000000000000000000000000100000001000000960000000300205000000000045265656C96000000000000000200045265656C0A53696D756C6174696F6E00000000000000000180EB880000000004002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000400230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 2048 + 1152 + + + + + + 1 + 0 + + 100 + 4 + + .\Pilotes\Source\MyUart.c + 29 + 1 + 10 + 1 + + 0 + + + .\Pilotes\Source\DriverGPIO.c + 23 + 1 + 3 + 1 + + 0 + + + .\Pilotes\Source\MyTimer.c + 0 + 1 + 29 + 1 + + 0 + + + .\Pilotes\Source\Timer.c + 0 + 1 + 1 + 1 + + 0 + + + .\Application\principal.c + 0 + 1 + 9 + 1 + + 0 + + + .\Pilotes\Source\Horloge.c + 0 + 1 + 1 + 1 + + 0 + + + RTE/Device/STM32F103RB/startup_stm32f10x_md.s + 0 + 125 + 135 + 1 + + 0 + + + + +
    diff --git a/ProjetVoilier/ProjetVoilier.uvoptx b/ProjetVoilier/ProjetVoilier.uvoptx index ed2c767..4fc6cb8 100644 --- a/ProjetVoilier/ProjetVoilier.uvoptx +++ b/ProjetVoilier/ProjetVoilier.uvoptx @@ -149,6 +149,14 @@ + + + 1 + 0 + Angle + 0 + + 0 @@ -393,18 +401,150 @@ Services - 0 + 1 0 0 0 + + 2 + 2 + 1 + 0 + 0 + 0 + .\Services\Source\Accelerometre.c + Accelerometre.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + .\Services\Source\Girouette.c + Girouette.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + .\Pilotes\Source\MyUart.c + MyUart.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + .\Services\Source\Servo.c + Servo.c + 0 + 0 + Drivers - 0 + 1 0 0 0 + + 3 + 6 + 1 + 0 + 0 + 0 + .\Pilotes\Source\DriverGPIO.c + DriverGPIO.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + .\Pilotes\Source\Horloge.c + Horloge.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + .\Pilotes\Source\MYGPIO.c + MYGPIO.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + .\Pilotes\Source\MyTimer.c + MyTimer.c + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + .\Pilotes\Source\PWM.c + PWM.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + .\Pilotes\Source\Timer.c + Timer.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + .\Pilotes\Source\I2C.c + I2C.c + 0 + 0 + diff --git a/ProjetVoilier/ProjetVoilier.uvprojx b/ProjetVoilier/ProjetVoilier.uvprojx index 78208fc..449a54c 100644 --- a/ProjetVoilier/ProjetVoilier.uvprojx +++ b/ProjetVoilier/ProjetVoilier.uvprojx @@ -340,7 +340,7 @@ - + .;.\Pilotes\Include;.\Services\Include @@ -393,9 +393,68 @@ Services + + + Accelerometre.c + 1 + .\Services\Source\Accelerometre.c + + + Girouette.c + 1 + .\Services\Source\Girouette.c + + + MyUart.c + 1 + .\Pilotes\Source\MyUart.c + + + Servo.c + 1 + .\Services\Source\Servo.c + + Drivers + + + DriverGPIO.c + 1 + .\Pilotes\Source\DriverGPIO.c + + + Horloge.c + 1 + .\Pilotes\Source\Horloge.c + + + MYGPIO.c + 1 + .\Pilotes\Source\MYGPIO.c + + + MyTimer.c + 1 + .\Pilotes\Source\MyTimer.c + + + PWM.c + 1 + .\Pilotes\Source\PWM.c + + + Timer.c + 1 + .\Pilotes\Source\Timer.c + + + I2C.c + 1 + .\Pilotes\Source\I2C.c + + ::CMSIS @@ -792,9 +851,68 @@ Services + + + Accelerometre.c + 1 + .\Services\Source\Accelerometre.c + + + Girouette.c + 1 + .\Services\Source\Girouette.c + + + MyUart.c + 1 + .\Pilotes\Source\MyUart.c + + + Servo.c + 1 + .\Services\Source\Servo.c + + Drivers + + + DriverGPIO.c + 1 + .\Pilotes\Source\DriverGPIO.c + + + Horloge.c + 1 + .\Pilotes\Source\Horloge.c + + + MYGPIO.c + 1 + .\Pilotes\Source\MYGPIO.c + + + MyTimer.c + 1 + .\Pilotes\Source\MyTimer.c + + + PWM.c + 1 + .\Pilotes\Source\PWM.c + + + Timer.c + 1 + .\Pilotes\Source\Timer.c + + + I2C.c + 1 + .\Pilotes\Source\I2C.c + + ::CMSIS @@ -834,7 +952,7 @@ - + RTE\Device\STM32F103RB\startup_stm32f10x_md.s @@ -843,7 +961,7 @@ - + RTE\Device\STM32F103RB\system_stm32f10x.c diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h b/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h new file mode 100644 index 0000000..70c8002 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h @@ -0,0 +1,1828 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2013-2016 Arm Limited (or its affiliates). All + * rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * + * $Date: 09. September 2016 + * $Revision: V1.1.2 + * + * Project: RTE Device Configuration for STMicroelectronics STM32F1xx + * + * -------------------------------------------------------------------------- */ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +#ifndef __RTE_DEVICE_H +#define __RTE_DEVICE_H + + +#define GPIO_PORT(num) \ + ((num == 0) ? GPIOA : \ + (num == 1) ? GPIOB : \ + (num == 2) ? GPIOC : \ + (num == 3) ? GPIOD : \ + (num == 4) ? GPIOE : \ + (num == 5) ? GPIOF : \ + (num == 6) ? GPIOG : \ + NULL) + + +// Clock Configuration +// High-speed Internal Clock <1-999999999> +#define RTE_HSI 8000000 +// High-speed External Clock <1-999999999> +#define RTE_HSE 25000000 +// System Clock <1-999999999> +#define RTE_SYSCLK 72000000 +// HCLK Clock <1-999999999> +#define RTE_HCLK 72000000 +// APB1 Clock <1-999999999> +#define RTE_PCLK1 36000000 +// APB2 Clock <1-999999999> +#define RTE_PCLK2 72000000 +// ADC Clock <1-999999999> +#define RTE_ADCCLK 36000000 +// USB Clock +#define RTE_USBCLK 48000000 +// + + +// USART1 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART1 in component ::CMSIS Driver:USART +#define RTE_USART1 0 + +// USART1_TX Pin <0=>Not Used <1=>PA9 +#define RTE_USART1_TX_PORT_ID_DEF 0 +#if (RTE_USART1_TX_PORT_ID_DEF == 0) +#define RTE_USART1_TX_DEF 0 +#elif (RTE_USART1_TX_PORT_ID_DEF == 1) +#define RTE_USART1_TX_DEF 1 +#define RTE_USART1_TX_PORT_DEF GPIOA +#define RTE_USART1_TX_BIT_DEF 9 +#else +#error "Invalid USART1_TX Pin Configuration!" +#endif + +// USART1_RX Pin <0=>Not Used <1=>PA10 +#define RTE_USART1_RX_PORT_ID_DEF 0 +#if (RTE_USART1_RX_PORT_ID_DEF == 0) +#define RTE_USART1_RX_DEF 0 +#elif (RTE_USART1_RX_PORT_ID_DEF == 1) +#define RTE_USART1_RX_DEF 1 +#define RTE_USART1_RX_PORT_DEF GPIOA +#define RTE_USART1_RX_BIT_DEF 10 +#else +#error "Invalid USART1_RX Pin Configuration!" +#endif + +// USART1_CK Pin <0=>Not Used <1=>PA8 +#define RTE_USART1_CK_PORT_ID_DEF 0 +#if (RTE_USART1_CK_PORT_ID_DEF == 0) +#define RTE_USART1_CK 0 +#elif (RTE_USART1_CK_PORT_ID_DEF == 1) +#define RTE_USART1_CK 1 +#define RTE_USART1_CK_PORT_DEF GPIOA +#define RTE_USART1_CK_BIT_DEF 8 +#else +#error "Invalid USART1_CK Pin Configuration!" +#endif + +// USART1_CTS Pin <0=>Not Used <1=>PA11 +#define RTE_USART1_CTS_PORT_ID_DEF 0 +#if (RTE_USART1_CTS_PORT_ID_DEF == 0) +#define RTE_USART1_CTS 0 +#elif (RTE_USART1_CTS_PORT_ID_DEF == 1) +#define RTE_USART1_CTS 1 +#define RTE_USART1_CTS_PORT_DEF GPIOA +#define RTE_USART1_CTS_BIT_DEF 11 +#else +#error "Invalid USART1_CTS Pin Configuration!" +#endif + +// USART1_RTS Pin <0=>Not Used <1=>PA12 +#define RTE_USART1_RTS_PORT_ID_DEF 0 +#if (RTE_USART1_RTS_PORT_ID_DEF == 0) +#define RTE_USART1_RTS 0 +#elif (RTE_USART1_RTS_PORT_ID_DEF == 1) +#define RTE_USART1_RTS 1 +#define RTE_USART1_RTS_PORT_DEF GPIOA +#define RTE_USART1_RTS_BIT_DEF 12 +#else +#error "Invalid USART1_RTS Pin Configuration!" +#endif + +// USART1 Pin Remap +// Enable USART1 Pin Remapping +#define RTE_USART1_REMAP_FULL 0 + +// USART1_TX Pin <0=>Not Used <1=>PB6 +#define RTE_USART1_TX_PORT_ID_FULL 0 +#if (RTE_USART1_TX_PORT_ID_FULL == 0) +#define RTE_USART1_TX_FULL 0 +#elif (RTE_USART1_TX_PORT_ID_FULL == 1) +#define RTE_USART1_TX_FULL 1 +#define RTE_USART1_TX_PORT_FULL GPIOB +#define RTE_USART1_TX_BIT_FULL 6 +#else +#error "Invalid USART1_TX Pin Configuration!" +#endif + +// USART1_RX Pin <0=>Not Used <1=>PB7 +#define RTE_USART1_RX_PORT_ID_FULL 0 +#if (RTE_USART1_RX_PORT_ID_FULL == 0) +#define RTE_USART1_RX_FULL 0 +#elif (RTE_USART1_RX_PORT_ID_FULL == 1) +#define RTE_USART1_RX_FULL 1 +#define RTE_USART1_RX_PORT_FULL GPIOB +#define RTE_USART1_RX_BIT_FULL 7 +#else +#error "Invalid USART1_RX Pin Configuration!" +#endif +// + +#if (RTE_USART1_REMAP_FULL) +#define RTE_USART1_AF_REMAP AFIO_USART1_REMAP +#define RTE_USART1_TX RTE_USART1_TX_FULL +#define RTE_USART1_TX_PORT RTE_USART1_TX_PORT_FULL +#define RTE_USART1_TX_BIT RTE_USART1_TX_BIT_FULL +#define RTE_USART1_RX RTE_USART1_RX_FULL +#define RTE_USART1_RX_PORT RTE_USART1_RX_PORT_FULL +#define RTE_USART1_RX_BIT RTE_USART1_RX_BIT_FULL +#define RTE_USART1_CK_PORT RTE_USART1_CK_PORT_DEF +#define RTE_USART1_CK_BIT RTE_USART1_CK_BIT_DEF +#define RTE_USART1_CTS_PORT RTE_USART1_CTS_PORT_DEF +#define RTE_USART1_CTS_BIT RTE_USART1_CTS_BIT_DEF +#define RTE_USART1_RTS_PORT RTE_USART1_RTS_PORT_DEF +#define RTE_USART1_RTS_BIT RTE_USART1_RTS_BIT_DEF +#else +#define RTE_USART1_AF_REMAP AFIO_USART1_NO_REMAP +#define RTE_USART1_TX RTE_USART1_TX_DEF +#define RTE_USART1_TX_PORT RTE_USART1_TX_PORT_DEF +#define RTE_USART1_TX_BIT RTE_USART1_TX_BIT_DEF +#define RTE_USART1_RX RTE_USART1_RX_DEF +#define RTE_USART1_RX_PORT RTE_USART1_RX_PORT_DEF +#define RTE_USART1_RX_BIT RTE_USART1_RX_BIT_DEF +#define RTE_USART1_CK_PORT RTE_USART1_CK_PORT_DEF +#define RTE_USART1_CK_BIT RTE_USART1_CK_BIT_DEF +#define RTE_USART1_CTS_PORT RTE_USART1_CTS_PORT_DEF +#define RTE_USART1_CTS_BIT RTE_USART1_CTS_BIT_DEF +#define RTE_USART1_RTS_PORT RTE_USART1_RTS_PORT_DEF +#define RTE_USART1_RTS_BIT RTE_USART1_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART1_RX_DMA 0 +#define RTE_USART1_RX_DMA_NUMBER 1 +#define RTE_USART1_RX_DMA_CHANNEL 5 +#define RTE_USART1_RX_DMA_PRIORITY 0 +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART1_TX_DMA 0 +#define RTE_USART1_TX_DMA_NUMBER 1 +#define RTE_USART1_TX_DMA_CHANNEL 4 +#define RTE_USART1_TX_DMA_PRIORITY 0 +// + + +// USART2 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART2 in component ::CMSIS Driver:USART +#define RTE_USART2 0 + +// USART2_TX Pin <0=>Not Used <1=>PA2 +#define RTE_USART2_TX_PORT_ID_DEF 0 +#if (RTE_USART2_TX_PORT_ID_DEF == 0) +#define RTE_USART2_TX_DEF 0 +#elif (RTE_USART2_TX_PORT_ID_DEF == 1) +#define RTE_USART2_TX_DEF 1 +#define RTE_USART2_TX_PORT_DEF GPIOA +#define RTE_USART2_TX_BIT_DEF 2 +#else +#error "Invalid USART2_TX Pin Configuration!" +#endif + +// USART2_RX Pin <0=>Not Used <1=>PA3 +#define RTE_USART2_RX_PORT_ID_DEF 0 +#if (RTE_USART2_RX_PORT_ID_DEF == 0) +#define RTE_USART2_RX_DEF 0 +#elif (RTE_USART2_RX_PORT_ID_DEF == 1) +#define RTE_USART2_RX_DEF 1 +#define RTE_USART2_RX_PORT_DEF GPIOA +#define RTE_USART2_RX_BIT_DEF 3 +#else +#error "Invalid USART2_RX Pin Configuration!" +#endif + +// USART2_CK Pin <0=>Not Used <1=>PA4 +#define RTE_USART2_CK_PORT_ID_DEF 0 +#if (RTE_USART2_CK_PORT_ID_DEF == 0) +#define RTE_USART2_CK_DEF 0 +#elif (RTE_USART2_CK_PORT_ID_DEF == 1) +#define RTE_USART2_CK_DEF 1 +#define RTE_USART2_CK_PORT_DEF GPIOA +#define RTE_USART2_CK_BIT_DEF 4 +#else +#error "Invalid USART2_CK Pin Configuration!" +#endif + +// USART2_CTS Pin <0=>Not Used <1=>PA0 +#define RTE_USART2_CTS_PORT_ID_DEF 0 +#if (RTE_USART2_CTS_PORT_ID_DEF == 0) +#define RTE_USART2_CTS_DEF 0 +#elif (RTE_USART2_CTS_PORT_ID_DEF == 1) +#define RTE_USART2_CTS_DEF 1 +#define RTE_USART2_CTS_PORT_DEF GPIOA +#define RTE_USART2_CTS_BIT_DEF 0 +#else +#error "Invalid USART2_CTS Pin Configuration!" +#endif + +// USART2_RTS Pin <0=>Not Used <1=>PA1 +#define RTE_USART2_RTS_PORT_ID_DEF 0 +#if (RTE_USART2_RTS_PORT_ID_DEF == 0) +#define RTE_USART2_RTS_DEF 0 +#elif (RTE_USART2_RTS_PORT_ID_DEF == 1) +#define RTE_USART2_RTS_DEF 1 +#define RTE_USART2_RTS_PORT_DEF GPIOA +#define RTE_USART2_RTS_BIT_DEF 1 +#else +#error "Invalid USART2_RTS Pin Configuration!" +#endif + +// USART2 Pin Remap +// Enable USART2 Pin Remapping +#define RTE_USART2_REMAP_FULL 0 + +// USART2_TX Pin <0=>Not Used <1=>PD5 +#define RTE_USART2_TX_PORT_ID_FULL 0 +#if (RTE_USART2_TX_PORT_ID_FULL == 0) +#define RTE_USART2_TX_FULL 0 +#elif (RTE_USART2_TX_PORT_ID_FULL == 1) +#define RTE_USART2_TX_FULL 1 +#define RTE_USART2_TX_PORT_FULL GPIOD +#define RTE_USART2_TX_BIT_FULL 5 +#else +#error "Invalid USART2_TX Pin Configuration!" +#endif + +// USART2_RX Pin <0=>Not Used <1=>PD6 +#define RTE_USART2_RX_PORT_ID_FULL 0 +#if (RTE_USART2_RX_PORT_ID_FULL == 0) +#define RTE_USART2_RX_FULL 0 +#elif (RTE_USART2_RX_PORT_ID_FULL == 1) +#define RTE_USART2_RX_FULL 1 +#define RTE_USART2_RX_PORT_FULL GPIOD +#define RTE_USART2_RX_BIT_FULL 6 +#else +#error "Invalid USART2_RX Pin Configuration!" +#endif + +// USART2_CK Pin <0=>Not Used <1=>PD7 +#define RTE_USART2_CK_PORT_ID_FULL 0 +#if (RTE_USART2_CK_PORT_ID_FULL == 0) +#define RTE_USART2_CK_FULL 0 +#elif (RTE_USART2_CK_PORT_ID_FULL == 1) +#define RTE_USART2_CK_FULL 1 +#define RTE_USART2_CK_PORT_FULL GPIOD +#define RTE_USART2_CK_BIT_FULL 7 +#else +#error "Invalid USART2_CK Pin Configuration!" +#endif + +// USART2_CTS Pin <0=>Not Used <1=>PD3 +#define RTE_USART2_CTS_PORT_ID_FULL 0 +#if (RTE_USART2_CTS_PORT_ID_FULL == 0) +#define RTE_USART2_CTS_FULL 0 +#elif (RTE_USART2_CTS_PORT_ID_FULL == 1) +#define RTE_USART2_CTS_FULL 1 +#define RTE_USART2_CTS_PORT_FULL GPIOD +#define RTE_USART2_CTS_BIT_FULL 3 +#else +#error "Invalid USART2_CTS Pin Configuration!" +#endif + +// USART2_RTS Pin <0=>Not Used <1=>PD4 +#define RTE_USART2_RTS_PORT_ID_FULL 0 +#if (RTE_USART2_RTS_PORT_ID_FULL == 0) +#define RTE_USART2_RTS_FULL 0 +#elif (RTE_USART2_RTS_PORT_ID_FULL == 1) +#define RTE_USART2_RTS_FULL 1 +#define RTE_USART2_RTS_PORT_FULL GPIOD +#define RTE_USART2_RTS_BIT_FULL 4 +#else +#error "Invalid USART2_RTS Pin Configuration!" +#endif +// + +#if (RTE_USART2_REMAP_FULL) +#define RTE_USART2_AF_REMAP AFIO_USART2_REMAP +#define RTE_USART2_TX RTE_USART2_TX_FULL +#define RTE_USART2_TX_PORT RTE_USART2_TX_PORT_FULL +#define RTE_USART2_TX_BIT RTE_USART2_TX_BIT_FULL +#define RTE_USART2_RX RTE_USART2_RX_FULL +#define RTE_USART2_RX_PORT RTE_USART2_RX_PORT_FULL +#define RTE_USART2_RX_BIT RTE_USART2_RX_BIT_FULL +#define RTE_USART2_CK RTE_USART2_CK_FULL +#define RTE_USART2_CK_PORT RTE_USART2_CK_PORT_FULL +#define RTE_USART2_CK_BIT RTE_USART2_CK_BIT_FULL +#define RTE_USART2_CTS RTE_USART2_CTS_FULL +#define RTE_USART2_CTS_PORT RTE_USART2_CTS_PORT_FULL +#define RTE_USART2_CTS_BIT RTE_USART2_CTS_BIT_FULL +#define RTE_USART2_RTS RTE_USART2_RTS_FULL +#define RTE_USART2_RTS_PORT RTE_USART2_RTS_PORT_FULL +#define RTE_USART2_RTS_BIT RTE_USART2_RTS_BIT_FULL +#else +#define RTE_USART2_AF_REMAP AFIO_USART2_NO_REMAP +#define RTE_USART2_TX RTE_USART2_TX_DEF +#define RTE_USART2_TX_PORT RTE_USART2_TX_PORT_DEF +#define RTE_USART2_TX_BIT RTE_USART2_TX_BIT_DEF +#define RTE_USART2_RX RTE_USART2_RX_DEF +#define RTE_USART2_RX_PORT RTE_USART2_RX_PORT_DEF +#define RTE_USART2_RX_BIT RTE_USART2_RX_BIT_DEF +#define RTE_USART2_CK RTE_USART2_CK_DEF +#define RTE_USART2_CK_PORT RTE_USART2_CK_PORT_DEF +#define RTE_USART2_CK_BIT RTE_USART2_CK_BIT_DEF +#define RTE_USART2_CTS RTE_USART2_CTS_DEF +#define RTE_USART2_CTS_PORT RTE_USART2_CTS_PORT_DEF +#define RTE_USART2_CTS_BIT RTE_USART2_CTS_BIT_DEF +#define RTE_USART2_RTS RTE_USART2_RTS_DEF +#define RTE_USART2_RTS_PORT RTE_USART2_RTS_PORT_DEF +#define RTE_USART2_RTS_BIT RTE_USART2_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <6=>6 +// Selects DMA Channel (only Channel 6 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART2_RX_DMA 0 +#define RTE_USART2_RX_DMA_NUMBER 1 +#define RTE_USART2_RX_DMA_CHANNEL 6 +#define RTE_USART2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <7=>7 +// Selects DMA Channel (only Channel 7 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART2_TX_DMA 0 +#define RTE_USART2_TX_DMA_NUMBER 1 +#define RTE_USART2_TX_DMA_CHANNEL 7 +#define RTE_USART2_TX_DMA_PRIORITY 0 + +// + + +// USART3 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART3 in component ::CMSIS Driver:USART +#define RTE_USART3 0 + +// USART3_TX Pin <0=>Not Used <1=>PB10 +#define RTE_USART3_TX_PORT_ID_DEF 0 +#if (RTE_USART3_TX_PORT_ID_DEF == 0) +#define RTE_USART3_TX_DEF 0 +#elif (RTE_USART3_TX_PORT_ID_DEF == 1) +#define RTE_USART3_TX_DEF 1 +#define RTE_USART3_TX_PORT_DEF GPIOB +#define RTE_USART3_TX_BIT_DEF 10 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PB11 +#define RTE_USART3_RX_PORT_ID_DEF 0 +#if (RTE_USART3_RX_PORT_ID_DEF == 0) +#define RTE_USART3_RX_DEF 0 +#elif (RTE_USART3_RX_PORT_ID_DEF == 1) +#define RTE_USART3_RX_DEF 1 +#define RTE_USART3_RX_PORT_DEF GPIOB +#define RTE_USART3_RX_BIT_DEF 11 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PB12 +#define RTE_USART3_CK_PORT_ID_DEF 0 +#if (RTE_USART3_CK_PORT_ID_DEF == 0) +#define RTE_USART3_CK_DEF 0 +#elif (RTE_USART3_CK_PORT_ID_DEF == 1) +#define RTE_USART3_CK_DEF 1 +#define RTE_USART3_CK_PORT_DEF GPIOB +#define RTE_USART3_CK_BIT_DEF 12 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif + +// USART3_CTS Pin <0=>Not Used <1=>PB13 +#define RTE_USART3_CTS_PORT_ID_DEF 0 +#if (RTE_USART3_CTS_PORT_ID_DEF == 0) +#define RTE_USART3_CTS_DEF 0 +#elif (RTE_USART3_CTS_PORT_ID_DEF == 1) +#define RTE_USART3_CTS_DEF 1 +#define RTE_USART3_CTS_PORT_DEF GPIOB +#define RTE_USART3_CTS_BIT_DEF 13 +#else +#error "Invalid USART3_CTS Pin Configuration!" +#endif + +// USART3_RTS Pin <0=>Not Used <1=>PB14 +#define RTE_USART3_RTS_PORT_ID_DEF 0 +#if (RTE_USART3_RTS_PORT_ID_DEF == 0) +#define RTE_USART3_RTS_DEF 0 +#elif (RTE_USART3_RTS_PORT_ID_DEF == 1) +#define RTE_USART3_RTS_DEF 1 +#define RTE_USART3_RTS_PORT_DEF GPIOB +#define RTE_USART3_RTS_BIT_DEF 14 +#else +#error "Invalid USART3_RTS Pin Configuration!" +#endif + +// USART3 Partial Pin Remap +// Enable USART3 Partial Pin Remapping +#define RTE_USART3_REMAP_PARTIAL 0 + +// USART3_TX Pin <0=>Not Used <1=>PC10 +#define RTE_USART3_TX_PORT_ID_PARTIAL 0 +#if (RTE_USART3_TX_PORT_ID_PARTIAL == 0) +#define RTE_USART3_TX_PARTIAL 0 +#elif (RTE_USART3_TX_PORT_ID_PARTIAL == 1) +#define RTE_USART3_TX_PARTIAL 1 +#define RTE_USART3_TX_PORT_PARTIAL GPIOC +#define RTE_USART3_TX_BIT_PARTIAL 10 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PC11 +#define RTE_USART3_RX_PORT_ID_PARTIAL 0 +#if (RTE_USART3_RX_PORT_ID_PARTIAL == 0) +#define RTE_USART3_RX_PARTIAL 0 +#elif (RTE_USART3_RX_PORT_ID_PARTIAL == 1) +#define RTE_USART3_RX_PARTIAL 1 +#define RTE_USART3_RX_PORT_PARTIAL GPIOC +#define RTE_USART3_RX_BIT_PARTIAL 11 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PC12 +#define RTE_USART3_CK_PORT_ID_PARTIAL 0 +#if (RTE_USART3_CK_PORT_ID_PARTIAL == 0) +#define RTE_USART3_CK_PARTIAL 0 +#elif (RTE_USART3_CK_PORT_ID_PARTIAL == 1) +#define RTE_USART3_CK_PARTIAL 1 +#define RTE_USART3_CK_PORT_PARTIAL GPIOC +#define RTE_USART3_CK_BIT_PARTIAL 12 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif +// + +// USART3 Full Pin Remap +// Enable USART3 Full Pin Remapping +#define RTE_USART3_REMAP_FULL 0 + +// USART3_TX Pin <0=>Not Used <1=>PD8 +#define RTE_USART3_TX_PORT_ID_FULL 0 +#if (RTE_USART3_TX_PORT_ID_FULL == 0) +#define RTE_USART3_TX_FULL 0 +#elif (RTE_USART3_TX_PORT_ID_FULL == 1) +#define RTE_USART3_TX_FULL 1 +#define RTE_USART3_TX_PORT_FULL GPIOD +#define RTE_USART3_TX_BIT_FULL 8 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PD9 +#define RTE_USART3_RX_PORT_ID_FULL 0 +#if (RTE_USART3_RX_PORT_ID_FULL == 0) +#define RTE_USART3_RX_FULL 0 +#elif (RTE_USART3_RX_PORT_ID_FULL == 1) +#define RTE_USART3_RX_FULL 1 +#define RTE_USART3_RX_PORT_FULL GPIOD +#define RTE_USART3_RX_BIT_FULL 9 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PD10 +#define RTE_USART3_CK_PORT_ID_FULL 0 +#if (RTE_USART3_CK_PORT_ID_FULL == 0) +#define RTE_USART3_CK_FULL 0 +#elif (RTE_USART3_CK_PORT_ID_FULL == 1) +#define RTE_USART3_CK_FULL 1 +#define RTE_USART3_CK_PORT_FULL GPIOD +#define RTE_USART3_CK_BIT_FULL 10 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif + +// USART3_CTS Pin <0=>Not Used <1=>PD11 +#define RTE_USART3_CTS_PORT_ID_FULL 0 +#if (RTE_USART3_CTS_PORT_ID_FULL == 0) +#define RTE_USART3_CTS_FULL 0 +#elif (RTE_USART3_CTS_PORT_ID_FULL == 1) +#define RTE_USART3_CTS_FULL 1 +#define RTE_USART3_CTS_PORT_FULL GPIOD +#define RTE_USART3_CTS_BIT_FULL 11 +#else +#error "Invalid USART3_CTS Pin Configuration!" +#endif + +// USART3_RTS Pin <0=>Not Used <1=>PD12 +#define RTE_USART3_RTS_PORT_ID_FULL 0 +#if (RTE_USART3_RTS_PORT_ID_FULL == 0) +#define RTE_USART3_RTS_FULL 0 +#elif (RTE_USART3_RTS_PORT_ID_FULL == 1) +#define RTE_USART3_RTS_FULL 1 +#define RTE_USART3_RTS_PORT_FULL GPIOD +#define RTE_USART3_RTS_BIT_FULL 12 +#else +#error "Invalid USART3_RTS Pin Configuration!" +#endif +// + +#if ((RTE_USART3_REMAP_PARTIAL == 1) && (RTE_USART3_REMAP_FULL == 1)) +#error "Invalid USART3 Pin Remap Configuration!" +#endif + +#if (RTE_USART3_REMAP_FULL) +#define RTE_USART3_AF_REMAP AFIO_USART3_REMAP_FULL +#define RTE_USART3_TX RTE_USART3_TX_FULL +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_FULL +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_FULL +#define RTE_USART3_RX RTE_USART3_RX_FULL +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_FULL +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_FULL +#define RTE_USART3_CK RTE_USART3_CK_FULL +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_FULL +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_FULL +#define RTE_USART3_CTS RTE_USART3_CTS_FULL +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_FULL +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_FULL +#define RTE_USART3_RTS RTE_USART3_RTS_FULL +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_FULL +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_FULL +#elif (RTE_USART3_REMAP_PARTIAL) +#define RTE_USART3_AF_REMAP AFIO_USART3_REMAP_PARTIAL +#define RTE_USART3_TX RTE_USART3_TX_PARTIAL +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_PARTIAL +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_PARTIAL +#define RTE_USART3_RX RTE_USART3_RX_PARTIAL +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_PARTIAL +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_PARTIAL +#define RTE_USART3_CK RTE_USART3_CK_PARTIAL +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_PARTIAL +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_PARTIAL +#define RTE_USART3_CTS RTE_USART3_CTS_DEF +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_DEF +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_DEF +#define RTE_USART3_RTS RTE_USART3_RTS_DEF +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_DEF +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_DEF +#else +#define RTE_USART3_AF_REMAP AFIO_USART3_NO_REMAP +#define RTE_USART3_TX RTE_USART3_TX_DEF +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_DEF +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_DEF +#define RTE_USART3_RX RTE_USART3_RX_DEF +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_DEF +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_DEF +#define RTE_USART3_CK RTE_USART3_CK_DEF +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_DEF +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_DEF +#define RTE_USART3_CTS RTE_USART3_CTS_DEF +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_DEF +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_DEF +#define RTE_USART3_RTS RTE_USART3_RTS_DEF +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_DEF +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_USART3_RX_DMA 0 +#define RTE_USART3_RX_DMA_NUMBER 1 +#define RTE_USART3_RX_DMA_CHANNEL 3 +#define RTE_USART3_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_USART3_TX_DMA 0 +#define RTE_USART3_TX_DMA_NUMBER 1 +#define RTE_USART3_TX_DMA_CHANNEL 2 +#define RTE_USART3_TX_DMA_PRIORITY 0 + +// + + +// UART4 (Universal asynchronous receiver transmitter) +// Configuration settings for Driver_USART4 in component ::CMSIS Driver:USART +#define RTE_UART4 0 +#define RTE_UART4_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// UART4_TX Pin <0=>Not Used <1=>PC10 +#define RTE_UART4_TX_ID 0 +#if (RTE_UART4_TX_ID == 0) +#define RTE_UART4_TX 0 +#elif (RTE_UART4_TX_ID == 1) +#define RTE_UART4_TX 1 +#define RTE_UART4_TX_PORT GPIOC +#define RTE_UART4_TX_BIT 10 +#else +#error "Invalid UART4_TX Pin Configuration!" +#endif + +// UART4_RX Pin <0=>Not Used <1=>PC11 +#define RTE_UART4_RX_ID 0 +#if (RTE_UART4_RX_ID == 0) +#define RTE_UART4_RX 0 +#elif (RTE_UART4_RX_ID == 1) +#define RTE_UART4_RX 1 +#define RTE_UART4_RX_PORT GPIOC +#define RTE_UART4_RX_BIT 11 +#else +#error "Invalid UART4_RX Pin Configuration!" +#endif + + +// DMA Rx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_UART4_RX_DMA 0 +#define RTE_UART4_RX_DMA_NUMBER 2 +#define RTE_UART4_RX_DMA_CHANNEL 3 +#define RTE_UART4_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_UART4_TX_DMA 0 +#define RTE_UART4_TX_DMA_NUMBER 2 +#define RTE_UART4_TX_DMA_CHANNEL 5 +#define RTE_UART4_TX_DMA_PRIORITY 0 + +// + + +// UART5 (Universal asynchronous receiver transmitter) +// Configuration settings for Driver_USART5 in component ::CMSIS Driver:USART +#define RTE_UART5 0 +#define RTE_UART5_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// UART5_TX Pin <0=>Not Used <1=>PC12 +#define RTE_UART5_TX_ID 0 +#if (RTE_UART5_TX_ID == 0) +#define RTE_UART5_TX 0 +#elif (RTE_UART5_TX_ID == 1) +#define RTE_UART5_TX 1 +#define RTE_UART5_TX_PORT GPIOC +#define RTE_UART5_TX_BIT 12 +#else +#error "Invalid UART5_TX Pin Configuration!" +#endif + +// UART5_RX Pin <0=>Not Used <1=>PD2 +#define RTE_UART5_RX_ID 0 +#if (RTE_UART5_RX_ID == 0) +#define RTE_UART5_RX 0 +#elif (RTE_UART5_RX_ID == 1) +#define RTE_UART5_RX 1 +#define RTE_UART5_RX_PORT GPIOD +#define RTE_UART5_RX_BIT 2 +#else +#error "Invalid UART5_RX Pin Configuration!" +#endif +// + + +// I2C1 (Inter-integrated Circuit Interface 1) +// Configuration settings for Driver_I2C1 in component ::CMSIS Driver:I2C +#define RTE_I2C1 0 + +// I2C1_SCL Pin <0=>PB6 +#define RTE_I2C1_SCL_PORT_ID_DEF 0 +#if (RTE_I2C1_SCL_PORT_ID_DEF == 0) +#define RTE_I2C1_SCL_PORT_DEF GPIOB +#define RTE_I2C1_SCL_BIT_DEF 6 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1_SDA Pin <0=>PB7 +#define RTE_I2C1_SDA_PORT_ID_DEF 0 +#if (RTE_I2C1_SDA_PORT_ID_DEF == 0) +#define RTE_I2C1_SDA_PORT_DEF GPIOB +#define RTE_I2C1_SDA_BIT_DEF 7 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1 Pin Remap +// Enable I2C1 Pin Remapping +#define RTE_I2C1_REMAP_FULL 0 + +// I2C1_SCL Pin <0=>PB8 +#define RTE_I2C1_SCL_PORT_ID_FULL 0 +#if (RTE_I2C1_SCL_PORT_ID_FULL == 0) +#define RTE_I2C1_SCL_PORT_FULL GPIOB +#define RTE_I2C1_SCL_BIT_FULL 8 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1_SDA Pin <0=>PB9 +#define RTE_I2C1_SDA_PORT_ID_FULL 0 +#if (RTE_I2C1_SDA_PORT_ID_FULL == 0) +#define RTE_I2C1_SDA_PORT_FULL GPIOB +#define RTE_I2C1_SDA_BIT_FULL 9 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// + +#if (RTE_I2C1_REMAP_FULL) +#define RTE_I2C1_AF_REMAP AFIO_I2C1_REMAP +#define RTE_I2C1_SCL_PORT RTE_I2C1_SCL_PORT_FULL +#define RTE_I2C1_SCL_BIT RTE_I2C1_SCL_BIT_FULL +#define RTE_I2C1_SDA_PORT RTE_I2C1_SDA_PORT_FULL +#define RTE_I2C1_SDA_BIT RTE_I2C1_SDA_BIT_FULL +#else +#define RTE_I2C1_AF_REMAP AFIO_I2C1_NO_REMAP +#define RTE_I2C1_SCL_PORT RTE_I2C1_SCL_PORT_DEF +#define RTE_I2C1_SCL_BIT RTE_I2C1_SCL_BIT_DEF +#define RTE_I2C1_SDA_PORT RTE_I2C1_SDA_PORT_DEF +#define RTE_I2C1_SDA_BIT RTE_I2C1_SDA_BIT_DEF +#endif + + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <7=>7 +// Selects DMA Channel (only Channel 7 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C1_RX_DMA 0 +#define RTE_I2C1_RX_DMA_NUMBER 1 +#define RTE_I2C1_RX_DMA_CHANNEL 7 +#define RTE_I2C1_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <6=>6 +// Selects DMA Channel (only Channel 6 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C1_TX_DMA 0 +#define RTE_I2C1_TX_DMA_NUMBER 1 +#define RTE_I2C1_TX_DMA_CHANNEL 6 +#define RTE_I2C1_TX_DMA_PRIORITY 0 + +// + + +// I2C2 (Inter-integrated Circuit Interface 2) +// Configuration settings for Driver_I2C2 in component ::CMSIS Driver:I2C +#define RTE_I2C2 0 +#define RTE_I2C2_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// I2C2_SCL Pin <0=>PB10 +#define RTE_I2C2_SCL_PORT_ID 0 +#if (RTE_I2C2_SCL_PORT_ID == 0) +#define RTE_I2C2_SCL_PORT GPIOB +#define RTE_I2C2_SCL_BIT 10 +#else +#error "Invalid I2C2_SCL Pin Configuration!" +#endif + +// I2C2_SDA Pin <0=>PB11 +#define RTE_I2C2_SDA_PORT_ID 0 +#if (RTE_I2C2_SDA_PORT_ID == 0) +#define RTE_I2C2_SDA_PORT GPIOB +#define RTE_I2C2_SDA_BIT 11 +#else +#error "Invalid I2C2_SCL Pin Configuration!" +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C2_RX_DMA 1 +#define RTE_I2C2_RX_DMA_NUMBER 1 +#define RTE_I2C2_RX_DMA_CHANNEL 5 +#define RTE_I2C2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C2_TX_DMA 1 +#define RTE_I2C2_TX_DMA_NUMBER 1 +#define RTE_I2C2_TX_DMA_CHANNEL 4 +#define RTE_I2C2_TX_DMA_PRIORITY 0 + +// + + +// SPI1 (Serial Peripheral Interface 1) [Driver_SPI1] +// Configuration settings for Driver_SPI1 in component ::CMSIS Driver:SPI +#define RTE_SPI1 0 + +// SPI1_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI1_NSS_PIN 1 +#define RTE_SPI1_NSS_PORT GPIO_PORT(0) +#define RTE_SPI1_NSS_BIT 4 + +// SPI1_SCK Pin <0=>PA5 +#define RTE_SPI1_SCK_PORT_ID_DEF 0 +#if (RTE_SPI1_SCK_PORT_ID_DEF == 0) +#define RTE_SPI1_SCK_PORT_DEF GPIOA +#define RTE_SPI1_SCK_BIT_DEF 5 +#else +#error "Invalid SPI1_SCK Pin Configuration!" +#endif + +// SPI1_MISO Pin <0=>Not Used <1=>PA6 +#define RTE_SPI1_MISO_PORT_ID_DEF 0 +#if (RTE_SPI1_MISO_PORT_ID_DEF == 0) +#define RTE_SPI1_MISO_DEF 0 +#elif (RTE_SPI1_MISO_PORT_ID_DEF == 1) +#define RTE_SPI1_MISO_DEF 1 +#define RTE_SPI1_MISO_PORT_DEF GPIOA +#define RTE_SPI1_MISO_BIT_DEF 6 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif + +// SPI1_MOSI Pin <0=>Not Used <1=>PA7 +#define RTE_SPI1_MOSI_PORT_ID_DEF 0 +#if (RTE_SPI1_MOSI_PORT_ID_DEF == 0) +#define RTE_SPI1_MOSI_DEF 0 +#elif (RTE_SPI1_MOSI_PORT_ID_DEF == 1) +#define RTE_SPI1_MOSI_DEF 1 +#define RTE_SPI1_MOSI_PORT_DEF GPIOA +#define RTE_SPI1_MOSI_BIT_DEF 7 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif + +// SPI1 Pin Remap +// Enable SPI1 Pin Remapping. +#define RTE_SPI1_REMAP 0 + +// SPI1_SCK Pin <0=>PB3 +#define RTE_SPI1_SCK_PORT_ID_FULL 0 +#if (RTE_SPI1_SCK_PORT_ID_FULL == 0) +#define RTE_SPI1_SCK_PORT_FULL GPIOB +#define RTE_SPI1_SCK_BIT_FULL 3 +#else +#error "Invalid SPI1_SCK Pin Configuration!" +#endif + +// SPI1_MISO Pin <0=>Not Used <1=>PB4 +#define RTE_SPI1_MISO_PORT_ID_FULL 0 +#if (RTE_SPI1_MISO_PORT_ID_FULL == 0) +#define RTE_SPI1_MISO_FULL 0 +#elif (RTE_SPI1_MISO_PORT_ID_FULL == 1) +#define RTE_SPI1_MISO_FULL 1 +#define RTE_SPI1_MISO_PORT_FULL GPIOB +#define RTE_SPI1_MISO_BIT_FULL 4 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif +// SPI1_MOSI Pin <0=>Not Used <1=>PB5 +#define RTE_SPI1_MOSI_PORT_ID_FULL 0 +#if (RTE_SPI1_MOSI_PORT_ID_FULL == 0) +#define RTE_SPI1_MOSI_FULL 0 +#elif (RTE_SPI1_MOSI_PORT_ID_FULL == 1) +#define RTE_SPI1_MOSI_FULL 1 +#define RTE_SPI1_MOSI_PORT_FULL GPIOB +#define RTE_SPI1_MOSI_BIT_FULL 5 +#else +#error "Invalid SPI1_MOSI Pin Configuration!" +#endif + +// + +#if (RTE_SPI1_REMAP) +#define RTE_SPI1_AF_REMAP AFIO_SPI1_REMAP +#define RTE_SPI1_SCK_PORT RTE_SPI1_SCK_PORT_FULL +#define RTE_SPI1_SCK_BIT RTE_SPI1_SCK_BIT_FULL +#define RTE_SPI1_MISO RTE_SPI1_MISO_FULL +#define RTE_SPI1_MISO_PORT RTE_SPI1_MISO_PORT_FULL +#define RTE_SPI1_MISO_BIT RTE_SPI1_MISO_BIT_FULL +#define RTE_SPI1_MOSI RTE_SPI1_MOSI_FULL +#define RTE_SPI1_MOSI_PORT RTE_SPI1_MOSI_PORT_FULL +#define RTE_SPI1_MOSI_BIT RTE_SPI1_MOSI_BIT_FULL +#else +#define RTE_SPI1_AF_REMAP AFIO_SPI1_NO_REMAP +#define RTE_SPI1_SCK_PORT RTE_SPI1_SCK_PORT_DEF +#define RTE_SPI1_SCK_BIT RTE_SPI1_SCK_BIT_DEF +#define RTE_SPI1_MISO RTE_SPI1_MISO_DEF +#define RTE_SPI1_MISO_PORT RTE_SPI1_MISO_PORT_DEF +#define RTE_SPI1_MISO_BIT RTE_SPI1_MISO_BIT_DEF +#define RTE_SPI1_MOSI RTE_SPI1_MOSI_DEF +#define RTE_SPI1_MOSI_PORT RTE_SPI1_MOSI_PORT_DEF +#define RTE_SPI1_MOSI_BIT RTE_SPI1_MOSI_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI1_RX_DMA 0 +#define RTE_SPI1_RX_DMA_NUMBER 1 +#define RTE_SPI1_RX_DMA_CHANNEL 2 +#define RTE_SPI1_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI1_TX_DMA 0 +#define RTE_SPI1_TX_DMA_NUMBER 1 +#define RTE_SPI1_TX_DMA_CHANNEL 3 +#define RTE_SPI1_TX_DMA_PRIORITY 0 + +// + + +// SPI2 (Serial Peripheral Interface 2) [Driver_SPI2] +// Configuration settings for Driver_SPI2 in component ::CMSIS Driver:SPI +#define RTE_SPI2 0 + +// SPI2_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI2_NSS_PIN 1 +#define RTE_SPI2_NSS_PORT GPIO_PORT(1) +#define RTE_SPI2_NSS_BIT 12 + +// SPI2_SCK Pin <0=>PB13 +#define RTE_SPI2_SCK_PORT_ID 0 +#if (RTE_SPI2_SCK_PORT_ID == 0) +#define RTE_SPI2_SCK_PORT GPIOB +#define RTE_SPI2_SCK_BIT 13 +#define RTE_SPI2_SCK_REMAP 0 +#else +#error "Invalid SPI2_SCK Pin Configuration!" +#endif + +// SPI2_MISO Pin <0=>Not Used <1=>PB14 +#define RTE_SPI2_MISO_PORT_ID 0 +#if (RTE_SPI2_MISO_PORT_ID == 0) +#define RTE_SPI2_MISO 0 +#elif (RTE_SPI2_MISO_PORT_ID == 1) +#define RTE_SPI2_MISO 1 +#define RTE_SPI2_MISO_PORT GPIOB +#define RTE_SPI2_MISO_BIT 14 +#define RTE_SPI2_MISO_REMAP 0 +#else +#error "Invalid SPI2_MISO Pin Configuration!" +#endif + +// SPI2_MOSI Pin <0=>Not Used <1=>PB15 +#define RTE_SPI2_MOSI_PORT_ID 0 +#if (RTE_SPI2_MOSI_PORT_ID == 0) +#define RTE_SPI2_MOSI 0 +#elif (RTE_SPI2_MOSI_PORT_ID == 1) +#define RTE_SPI2_MOSI 1 +#define RTE_SPI2_MOSI_PORT GPIOB +#define RTE_SPI2_MOSI_BIT 15 +#define RTE_SPI2_MOSI_REMAP 0 +#else +#error "Invalid SPI2_MISO Pin Configuration!" +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI2_RX_DMA 0 +#define RTE_SPI2_RX_DMA_NUMBER 1 +#define RTE_SPI2_RX_DMA_CHANNEL 4 +#define RTE_SPI2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI2_TX_DMA 0 +#define RTE_SPI2_TX_DMA_NUMBER 1 +#define RTE_SPI2_TX_DMA_CHANNEL 5 +#define RTE_SPI2_TX_DMA_PRIORITY 0 + +// + + +// SPI3 (Serial Peripheral Interface 3) [Driver_SPI3] +// Configuration settings for Driver_SPI3 in component ::CMSIS Driver:SPI +#define RTE_SPI3 0 + +// SPI3_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI3_NSS_PIN 1 +#define RTE_SPI3_NSS_PORT GPIO_PORT(0) +#define RTE_SPI3_NSS_BIT 15 + +// SPI3_SCK Pin <0=>PB3 +#define RTE_SPI3_SCK_PORT_ID_DEF 0 +#if (RTE_SPI3_SCK_PORT_ID_DEF == 0) +#define RTE_SPI3_SCK_PORT_DEF GPIOB +#define RTE_SPI3_SCK_BIT_DEF 3 +#else +#error "Invalid SPI3_SCK Pin Configuration!" +#endif + +// SPI3_MISO Pin <0=>Not Used <1=>PB4 +#define RTE_SPI3_MISO_PORT_ID_DEF 0 +#if (RTE_SPI3_MISO_PORT_ID_DEF == 0) +#define RTE_SPI3_MISO_DEF 0 +#elif (RTE_SPI3_MISO_PORT_ID_DEF == 1) +#define RTE_SPI3_MISO_DEF 1 +#define RTE_SPI3_MISO_PORT_DEF GPIOB +#define RTE_SPI3_MISO_BIT_DEF 4 +#else +#error "Invalid SPI3_MISO Pin Configuration!" +#endif + +// SPI3_MOSI <0=>Not Used Pin <1=>PB5 +#define RTE_SPI3_MOSI_PORT_ID_DEF 0 +#if (RTE_SPI3_MOSI_PORT_ID_DEF == 0) +#define RTE_SPI3_MOSI_DEF 0 +#elif (RTE_SPI3_MOSI_PORT_ID_DEF == 1) +#define RTE_SPI3_MOSI_DEF 1 +#define RTE_SPI3_MOSI_PORT_DEF GPIOB +#define RTE_SPI3_MOSI_BIT_DEF 5 +#else +#error "Invalid SPI3_MOSI Pin Configuration!" +#endif + +// SPI3 Pin Remap +// Enable SPI3 Pin Remapping. +// SPI 3 Pin Remapping is available only in connectivity line devices! +#define RTE_SPI3_REMAP 0 + +// SPI3_SCK Pin <0=>PC10 +#define RTE_SPI3_SCK_PORT_ID_FULL 0 +#if (RTE_SPI3_SCK_PORT_ID_FULL == 0) +#define RTE_SPI3_SCK_PORT_FULL GPIOC +#define RTE_SPI3_SCK_BIT_FULL 10 +#else +#error "Invalid SPI3_SCK Pin Configuration!" +#endif + +// SPI3_MISO Pin <0=>Not Used <1=>PC11 +#define RTE_SPI3_MISO_PORT_ID_FULL 0 +#if (RTE_SPI3_MISO_PORT_ID_FULL == 0) +#define RTE_SPI3_MISO_FULL 0 +#elif (RTE_SPI3_MISO_PORT_ID_FULL == 1) +#define RTE_SPI3_MISO_FULL 1 +#define RTE_SPI3_MISO_PORT_FULL GPIOC +#define RTE_SPI3_MISO_BIT_FULL 11 +#else +#error "Invalid SPI3_MISO Pin Configuration!" +#endif +// SPI3_MOSI Pin <0=>Not Used <1=>PC12 +#define RTE_SPI3_MOSI_PORT_ID_FULL 0 +#if (RTE_SPI3_MOSI_PORT_ID_FULL == 0) +#define RTE_SPI3_MOSI_FULL 0 +#elif (RTE_SPI3_MOSI_PORT_ID_FULL == 1) +#define RTE_SPI3_MOSI_FULL 1 +#define RTE_SPI3_MOSI_PORT_FULL GPIOC +#define RTE_SPI3_MOSI_BIT_FULL 12 +#else +#error "Invalid SPI3_MOSI Pin Configuration!" +#endif + +// + +#if (RTE_SPI3_REMAP) +#define RTE_SPI3_AF_REMAP AFIO_SPI3_REMAP +#define RTE_SPI3_SCK_PORT RTE_SPI3_SCK_PORT_FULL +#define RTE_SPI3_SCK_BIT RTE_SPI3_SCK_BIT_FULL +#define RTE_SPI3_MISO RTE_SPI3_MISO_FULL +#define RTE_SPI3_MISO_PORT RTE_SPI3_MISO_PORT_FULL +#define RTE_SPI3_MISO_BIT RTE_SPI3_MISO_BIT_FULL +#define RTE_SPI3_MOSI RTE_SPI3_MOSI_FULL +#define RTE_SPI3_MOSI_PORT RTE_SPI3_MOSI_PORT_FULL +#define RTE_SPI3_MOSI_BIT RTE_SPI3_MOSI_BIT_FULL +#else +#define RTE_SPI3_AF_REMAP AFIO_SPI3_NO_REMAP +#define RTE_SPI3_SCK_PORT RTE_SPI3_SCK_PORT_DEF +#define RTE_SPI3_SCK_BIT RTE_SPI3_SCK_BIT_DEF +#define RTE_SPI3_MISO RTE_SPI3_MISO_DEF +#define RTE_SPI3_MISO_PORT RTE_SPI3_MISO_PORT_DEF +#define RTE_SPI3_MISO_BIT RTE_SPI3_MISO_BIT_DEF +#define RTE_SPI3_MOSI RTE_SPI3_MOSI_DEF +#define RTE_SPI3_MOSI_PORT RTE_SPI3_MOSI_PORT_DEF +#define RTE_SPI3_MOSI_BIT RTE_SPI3_MOSI_BIT_DEF +#endif + +// DMA Rx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <1=>1 +// Selects DMA Channel (only Channel 1 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI3_RX_DMA 0 +#define RTE_SPI3_RX_DMA_NUMBER 2 +#define RTE_SPI3_RX_DMA_CHANNEL 1 +#define RTE_SPI3_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI3_TX_DMA 0 +#define RTE_SPI3_TX_DMA_NUMBER 2 +#define RTE_SPI3_TX_DMA_CHANNEL 2 +#define RTE_SPI3_TX_DMA_PRIORITY 0 + +// + + +// SDIO (Secure Digital Input/Output) [Driver_MCI0] +// Configuration settings for Driver_MCI0 in component ::CMSIS Driver:MCI +#define RTE_SDIO 0 + +// SDIO Peripheral Bus +// SDIO_CK Pin <0=>PC12 +#define RTE_SDIO_CK_PORT_ID 0 +#if (RTE_SDIO_CK_PORT_ID == 0) + #define RTE_SDIO_CK_PORT GPIOC + #define RTE_SDIO_CK_PIN 12 +#else + #error "Invalid SDIO_CLK Pin Configuration!" +#endif +// SDIO_CMD Pin <0=>PD2 +#define RTE_SDIO_CMD_PORT_ID 0 +#if (RTE_SDIO_CMD_PORT_ID == 0) + #define RTE_SDIO_CMD_PORT GPIOD + #define RTE_SDIO_CMD_PIN 2 +#else + #error "Invalid SDIO_CMD Pin Configuration!" +#endif +// SDIO_D0 Pin <0=>PC8 +#define RTE_SDIO_D0_PORT_ID 0 +#if (RTE_SDIO_D0_PORT_ID == 0) + #define RTE_SDIO_D0_PORT GPIOC + #define RTE_SDIO_D0_PIN 8 +#else + #error "Invalid SDIO_DAT0 Pin Configuration!" +#endif +// SDIO_D[1 .. 3] +#define RTE_SDIO_BUS_WIDTH_4 1 +// SDIO_D1 Pin <0=>PC9 +#define RTE_SDIO_D1_PORT_ID 0 +#if (RTE_SDIO_D1_PORT_ID == 0) + #define RTE_SDIO_D1_PORT GPIOC + #define RTE_SDIO_D1_PIN 9 +#else + #error "Invalid SDIO_D1 Pin Configuration!" +#endif +// SDIO_D2 Pin <0=>PC10 +#define RTE_SDIO_D2_PORT_ID 0 +#if (RTE_SDIO_D2_PORT_ID == 0) + #define RTE_SDIO_D2_PORT GPIOC + #define RTE_SDIO_D2_PIN 10 +#else + #error "Invalid SDIO_D2 Pin Configuration!" +#endif +// SDIO_D3 Pin <0=>PC11 +#define RTE_SDIO_D3_PORT_ID 0 +#if (RTE_SDIO_D3_PORT_ID == 0) + #define RTE_SDIO_D3_PORT GPIOC + #define RTE_SDIO_D3_PIN 11 +#else + #error "Invalid SDIO_D3 Pin Configuration!" +#endif +// SDIO_D[1 .. 3] +// SDIO_D[4 .. 7] +#define RTE_SDIO_BUS_WIDTH_8 0 +// SDIO_D4 Pin <0=>PB8 +#define RTE_SDIO_D4_PORT_ID 0 +#if (RTE_SDIO_D4_PORT_ID == 0) + #define RTE_SDIO_D4_PORT GPIOB + #define RTE_SDIO_D4_PIN 8 +#else + #error "Invalid SDIO_D4 Pin Configuration!" +#endif +// SDIO_D5 Pin <0=>PB9 +#define RTE_SDIO_D5_PORT_ID 0 +#if (RTE_SDIO_D5_PORT_ID == 0) + #define RTE_SDIO_D5_PORT GPIOB + #define RTE_SDIO_D5_PIN 9 +#else + #error "Invalid SDIO_D5 Pin Configuration!" +#endif +// SDIO_D6 Pin <0=>PC6 +#define RTE_SDIO_D6_PORT_ID 0 +#if (RTE_SDIO_D6_PORT_ID == 0) + #define RTE_SDIO_D6_PORT GPIOC + #define RTE_SDIO_D6_PIN 6 +#else + #error "Invalid SDIO_D6 Pin Configuration!" +#endif +// SDIO_D7 Pin <0=>PC7 +#define RTE_SDIO_D7_PORT_ID 0 +#if (RTE_SDIO_D7_PORT_ID == 0) + #define RTE_SDIO_D7_PORT GPIOC + #define RTE_SDIO_D7_PIN 7 +#else + #error "Invalid SDIO_D7 Pin Configuration!" +#endif +// SDIO_D[4 .. 7] +// SDIO Peripheral Bus + +// Card Detect Pin +// Configure Pin if exists +// GPIO Pxy (x = A..H, y = 0..15) or (x = I, y = 0..11) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SDIO_CD_EN 1 +#define RTE_SDIO_CD_ACTIVE 0 +#define RTE_SDIO_CD_PORT GPIO_PORT(5) +#define RTE_SDIO_CD_PIN 11 + +// Write Protect Pin +// Configure Pin if exists +// GPIO Pxy (x = A..H, y = 0..15) or (x = I, y = 0..11) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SDIO_WP_EN 0 +#define RTE_SDIO_WP_ACTIVE 1 +#define RTE_SDIO_WP_PORT GPIO_PORT(0) +#define RTE_SDIO_WP_PIN 10 + +// DMA +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SDIO_DMA_NUMBER 2 +#define RTE_SDIO_DMA_CHANNEL 4 +#define RTE_SDIO_DMA_PRIORITY 0 + +// + + +// CAN1 (Controller Area Network 1) [Driver_CAN1] +// Configuration settings for Driver_CAN1 in component ::CMSIS Driver:CAN +#define RTE_CAN1 0 + +// CAN1_RX Pin <0=>PA11 <1=>PB8 <2=>PD0 +#define RTE_CAN1_RX_PORT_ID 0 +#if (RTE_CAN1_RX_PORT_ID == 0) +#define RTE_CAN1_RX_PORT GPIOA +#define RTE_CAN1_RX_BIT 11 +#elif (RTE_CAN1_RX_PORT_ID == 1) +#define RTE_CAN1_RX_PORT GPIOB +#define RTE_CAN1_RX_BIT 8 +#elif (RTE_CAN1_RX_PORT_ID == 2) +#define RTE_CAN1_RX_PORT GPIOD +#define RTE_CAN1_RX_BIT 0 +#else +#error "Invalid CAN1_RX Pin Configuration!" +#endif + +// CAN1_TX Pin <0=>PA12 <1=>PB9 <2=>PD1 +#define RTE_CAN1_TX_PORT_ID 0 +#if (RTE_CAN1_TX_PORT_ID == 0) +#define RTE_CAN1_TX_PORT GPIOA +#define RTE_CAN1_TX_BIT 12 +#elif (RTE_CAN1_TX_PORT_ID == 1) +#define RTE_CAN1_TX_PORT GPIOB +#define RTE_CAN1_TX_BIT 9 +#elif (RTE_CAN1_TX_PORT_ID == 2) +#define RTE_CAN1_TX_PORT GPIOD +#define RTE_CAN1_TX_BIT 1 +#else +#error "Invalid CAN1_TX Pin Configuration!" +#endif + +// + + +// CAN2 (Controller Area Network 2) [Driver_CAN2] +// Configuration settings for Driver_CAN2 in component ::CMSIS Driver:CAN +#define RTE_CAN2 0 + +// CAN2_RX Pin <0=>PB5 <1=>PB12 +#define RTE_CAN2_RX_PORT_ID 0 +#if (RTE_CAN2_RX_PORT_ID == 0) +#define RTE_CAN2_RX_PORT GPIOB +#define RTE_CAN2_RX_BIT 5 +#elif (RTE_CAN2_RX_PORT_ID == 1) +#define RTE_CAN2_RX_PORT GPIOB +#define RTE_CAN2_RX_BIT 12 +#else +#error "Invalid CAN2_RX Pin Configuration!" +#endif + +// CAN2_TX Pin <0=>PB6 <1=>PB13 +#define RTE_CAN2_TX_PORT_ID 0 +#if (RTE_CAN2_TX_PORT_ID == 0) +#define RTE_CAN2_TX_PORT GPIOB +#define RTE_CAN2_TX_BIT 6 +#elif (RTE_CAN2_TX_PORT_ID == 1) +#define RTE_CAN2_TX_PORT GPIOB +#define RTE_CAN2_TX_BIT 13 +#else +#error "Invalid CAN2_TX Pin Configuration!" +#endif + +// + + +// ETH (Ethernet Interface) [Driver_ETH_MAC0] +// Configuration settings for Driver_ETH_MAC0 in component ::CMSIS Driver:Ethernet MAC +#define RTE_ETH 0 + +// MII (Media Independent Interface) +// Enable Media Independent Interface pin configuration +#define RTE_ETH_MII 0 + +// ETH_MII_TX_CLK Pin <0=>PC3 +#define RTE_ETH_MII_TX_CLK_PORT_ID 0 +#if (RTE_ETH_MII_TX_CLK_PORT_ID == 0) +#define RTE_ETH_MII_TX_CLK_PORT GPIOC +#define RTE_ETH_MII_TX_CLK_PIN 3 +#else +#error "Invalid ETH_MII_TX_CLK Pin Configuration!" +#endif +// ETH_MII_TXD0 Pin <0=>PB12 +#define RTE_ETH_MII_TXD0_PORT_ID 0 +#if (RTE_ETH_MII_TXD0_PORT_ID == 0) +#define RTE_ETH_MII_TXD0_PORT GPIOB +#define RTE_ETH_MII_TXD0_PIN 12 +#else +#error "Invalid ETH_MII_TXD0 Pin Configuration!" +#endif +// ETH_MII_TXD1 Pin <0=>PB13 +#define RTE_ETH_MII_TXD1_PORT_ID 0 +#if (RTE_ETH_MII_TXD1_PORT_ID == 0) +#define RTE_ETH_MII_TXD1_PORT GPIOB +#define RTE_ETH_MII_TXD1_PIN 13 +#else +#error "Invalid ETH_MII_TXD1 Pin Configuration!" +#endif +// ETH_MII_TXD2 Pin <0=>PC2 +#define RTE_ETH_MII_TXD2_PORT_ID 0 +#if (RTE_ETH_MII_TXD2_PORT_ID == 0) +#define RTE_ETH_MII_TXD2_PORT GPIOC +#define RTE_ETH_MII_TXD2_PIN 2 +#else +#error "Invalid ETH_MII_TXD2 Pin Configuration!" +#endif +// ETH_MII_TXD3 Pin <0=>PB8 +#define RTE_ETH_MII_TXD3_PORT_ID 0 +#if (RTE_ETH_MII_TXD3_PORT_ID == 0) +#define RTE_ETH_MII_TXD3_PORT GPIOB +#define RTE_ETH_MII_TXD3_PIN 8 +#else +#error "Invalid ETH_MII_TXD3 Pin Configuration!" +#endif +// ETH_MII_TX_EN Pin <0=>PB11 +#define RTE_ETH_MII_TX_EN_PORT_ID 0 +#if (RTE_ETH_MII_TX_EN_PORT_ID == 0) +#define RTE_ETH_MII_TX_EN_PORT GPIOB +#define RTE_ETH_MII_TX_EN_PIN 11 +#else +#error "Invalid ETH_MII_TX_EN Pin Configuration!" +#endif +// ETH_MII_RX_CLK Pin <0=>PA1 +#define RTE_ETH_MII_RX_CLK_PORT_ID 0 +#if (RTE_ETH_MII_RX_CLK_PORT_ID == 0) +#define RTE_ETH_MII_RX_CLK_PORT GPIOA +#define RTE_ETH_MII_RX_CLK_PIN 1 +#else +#error "Invalid ETH_MII_RX_CLK Pin Configuration!" +#endif +// ETH_MII_RXD0 Pin <0=>PC4 +#define RTE_ETH_MII_RXD0_DEF 0 + +// ETH_MII_RXD1 Pin <0=>PC5 +#define RTE_ETH_MII_RXD1_DEF 0 + +// ETH_MII_RXD2 Pin <0=>PB0 +#define RTE_ETH_MII_RXD2_DEF 0 + +// ETH_MII_RXD3 Pin <0=>PB1 <1=>PD12 +#define RTE_ETH_MII_RXD3_DEF 0 + +// ETH_MII_RX_DV Pin <0=>PA7 +#define RTE_ETH_MII_RX_DV_DEF 0 + +// ETH_MII_RX_ER Pin <0=>PB10 +#define RTE_ETH_MII_RX_ER_PORT_ID 0 +#if (RTE_ETH_MII_RX_ER_PORT_ID == 0) +#define RTE_ETH_MII_RX_ER_PORT GPIOB +#define RTE_ETH_MII_RX_ER_PIN 10 +#else +#error "Invalid ETH_MII_RX_ER Pin Configuration!" +#endif +// ETH_MII_CRS Pin <0=>PA0 +#define RTE_ETH_MII_CRS_PORT_ID 0 +#if (RTE_ETH_MII_CRS_PORT_ID == 0) +#define RTE_ETH_MII_CRS_PORT GPIOA +#define RTE_ETH_MII_CRS_PIN 0 +#else +#error "Invalid ETH_MII_CRS Pin Configuration!" +#endif +// ETH_MII_COL Pin <0=>PA3 +#define RTE_ETH_MII_COL_PORT_ID 0 +#if (RTE_ETH_MII_COL_PORT_ID == 0) +#define RTE_ETH_MII_COL_PORT GPIOA +#define RTE_ETH_MII_COL_PIN 3 +#else +#error "Invalid ETH_MII_COL Pin Configuration!" +#endif + +// Ethernet MAC I/O remapping +// Remap Ethernet pins +#define RTE_ETH_MII_REMAP 0 + +// ETH_MII_RXD0 Pin <1=>PD9 +#define RTE_ETH_MII_RXD0_REMAP 1 + +// ETH_MII_RXD1 Pin <1=>PD10 +#define RTE_ETH_MII_RXD1_REMAP 1 + +// ETH_MII_RXD2 Pin <1=>PD11 +#define RTE_ETH_MII_RXD2_REMAP 1 + +// ETH_MII_RXD3 Pin <1=>PD12 +#define RTE_ETH_MII_RXD3_REMAP 1 + +// ETH_MII_RX_DV Pin <1=>PD8 +#define RTE_ETH_MII_RX_DV_REMAP 1 +// + +// + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD0_DEF == 0)) +#define RTE_ETH_MII_RXD0_PORT GPIOC +#define RTE_ETH_MII_RXD0_PIN 4 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD0_REMAP == 1)) +#define RTE_ETH_MII_RXD0_PORT GPIOD +#define RTE_ETH_MII_RXD0_PIN 9 +#else +#error "Invalid ETH_MII_RXD0 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD1_DEF == 0)) +#define RTE_ETH_MII_RXD1_PORT GPIOC +#define RTE_ETH_MII_RXD1_PIN 5 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD1_REMAP == 1)) +#define RTE_ETH_MII_RXD1_PORT GPIOD +#define RTE_ETH_MII_RXD1_PIN 10 +#else +#error "Invalid ETH_MII_RXD1 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD2_DEF == 0)) +#define RTE_ETH_MII_RXD2_PORT GPIOB +#define RTE_ETH_MII_RXD2_PIN 0 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD2_REMAP == 1)) +#define RTE_ETH_MII_RXD2_PORT GPIOD +#define RTE_ETH_MII_RXD2_PIN 11 +#else +#error "Invalid ETH_MII_RXD2 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD3_DEF == 0)) +#define RTE_ETH_MII_RXD3_PORT GPIOB +#define RTE_ETH_MII_RXD3_PIN 1 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD3_REMAP == 1)) +#define RTE_ETH_MII_RXD3_PORT GPIOD +#define RTE_ETH_MII_RXD3_PIN 12 +#else +#error "Invalid ETH_MII_RXD3 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RX_DV_DEF == 0)) +#define RTE_ETH_MII_RX_DV_PORT GPIOA +#define RTE_ETH_MII_RX_DV_PIN 7 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RX_DV_REMAP == 1)) +#define RTE_ETH_MII_RX_DV_PORT GPIOD +#define RTE_ETH_MII_RX_DV_PIN 8 +#else +#error "Invalid ETH_MII_RX_DV Pin Configuration!" +#endif + +// RMII (Reduced Media Independent Interface) +#define RTE_ETH_RMII 0 + +// ETH_RMII_TXD0 Pin <0=>PB12 +#define RTE_ETH_RMII_TXD0_PORT_ID 0 +#if (RTE_ETH_RMII_TXD0_PORT_ID == 0) +#define RTE_ETH_RMII_TXD0_PORT GPIOB +#define RTE_ETH_RMII_TXD0_PIN 12 +#else +#error "Invalid ETH_RMII_TXD0 Pin Configuration!" +#endif +// ETH_RMII_TXD1 Pin <0=>PB13 +#define RTE_ETH_RMII_TXD1_PORT_ID 0 +#if (RTE_ETH_RMII_TXD1_PORT_ID == 0) +#define RTE_ETH_RMII_TXD1_PORT GPIOB +#define RTE_ETH_RMII_TXD1_PIN 13 +#else +#error "Invalid ETH_RMII_TXD1 Pin Configuration!" +#endif +// ETH_RMII_TX_EN Pin <0=>PB11 +#define RTE_ETH_RMII_TX_EN_PORT_ID 0 +#if (RTE_ETH_RMII_TX_EN_PORT_ID == 0) +#define RTE_ETH_RMII_TX_EN_PORT GPIOB +#define RTE_ETH_RMII_TX_EN_PIN 11 +#else +#error "Invalid ETH_RMII_TX_EN Pin Configuration!" +#endif +// ETH_RMII_RXD0 Pin <0=>PC4 +#define RTE_ETH_RMII_RXD0_DEF 0 + +// ETH_RMII_RXD1 Pin <0=>PC5 +#define RTE_ETH_RMII_RXD1_DEF 0 + +// ETH_RMII_REF_CLK Pin <0=>PA1 +#define RTE_ETH_RMII_REF_CLK_PORT_ID 0 +#if (RTE_ETH_RMII_REF_CLK_PORT_ID == 0) +#define RTE_ETH_RMII_REF_CLK_PORT GPIOA +#define RTE_ETH_RMII_REF_CLK_PIN 1 +#else +#error "Invalid ETH_RMII_REF_CLK Pin Configuration!" +#endif +// ETH_RMII_CRS_DV Pin <0=>PA7 +#define RTE_ETH_RMII_CRS_DV_DEF 0 + +// Ethernet MAC I/O remapping +// Remap Ethernet pins +#define RTE_ETH_RMII_REMAP 0 +// ETH_RMII_RXD0 Pin <1=>PD9 +#define RTE_ETH_RMII_RXD0_REMAP 1 + +// ETH_RMII_RXD1 Pin <1=>PD10 +#define RTE_ETH_RMII_RXD1_REMAP 1 + +// ETH_RMII_CRS_DV Pin <1=>PD8 +#define RTE_ETH_RMII_CRS_DV_REMAP 1 +// + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_RXD0_DEF == 0)) +#define RTE_ETH_RMII_RXD0_PORT GPIOC +#define RTE_ETH_RMII_RXD0_PIN 4 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_RXD0_REMAP == 1)) +#define RTE_ETH_RMII_RXD0_PORT GPIOD +#define RTE_ETH_RMII_RXD0_PIN 9 +#else +#error "Invalid ETH_RMII_RXD0 Pin Configuration!" +#endif + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_RXD1_DEF == 0)) +#define RTE_ETH_RMII_RXD1_PORT GPIOC +#define RTE_ETH_RMII_RXD1_PIN 5 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_RXD1_REMAP == 1)) +#define RTE_ETH_RMII_RXD1_PORT GPIOD +#define RTE_ETH_RMII_RXD1_PIN 10 +#else +#error "Invalid ETH_RMII_RXD1 Pin Configuration!" +#endif + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_CRS_DV_DEF == 0)) +#define RTE_ETH_RMII_CRS_DV_PORT GPIOA +#define RTE_ETH_RMII_CRS_DV_PIN 7 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_CRS_DV_REMAP == 1)) +#define RTE_ETH_RMII_CRS_DV_PORT GPIOD +#define RTE_ETH_RMII_CRS_DV_PIN 8 +#else +#error "Invalid ETH_RMII_CRS_DV Pin Configuration!" +#endif + +// + +// Management Data Interface +// ETH_MDC Pin <0=>PC1 +#define RTE_ETH_MDI_MDC_PORT_ID 0 +#if (RTE_ETH_MDI_MDC_PORT_ID == 0) +#define RTE_ETH_MDI_MDC_PORT GPIOC +#define RTE_ETH_MDI_MDC_PIN 1 +#else +#error "Invalid ETH_MDC Pin Configuration!" +#endif +// ETH_MDIO Pin <0=>PA2 +#define RTE_ETH_MDI_MDIO_PORT_ID 0 +#if (RTE_ETH_MDI_MDIO_PORT_ID == 0) +#define RTE_ETH_MDI_MDIO_PORT GPIOA +#define RTE_ETH_MDI_MDIO_PIN 2 +#else +#error "Invalid ETH_MDIO Pin Configuration!" +#endif +// + +// Reference 25MHz Clock generation on MCO pin <0=>Disabled <1=>Enabled +#define RTE_ETH_REF_CLOCK_ID 0 +#if (RTE_ETH_REF_CLOCK_ID == 0) +#define RTE_ETH_REF_CLOCK 0 +#elif (RTE_ETH_REF_CLOCK_ID == 1) +#define RTE_ETH_REF_CLOCK 1 +#else +#error "Invalid MCO Ethernet Reference Clock Configuration!" +#endif +// + + +// USB Device Full-speed +// Configuration settings for Driver_USBD0 in component ::Drivers:USB Device +#define RTE_USB_DEVICE 0 + +// CON On/Off Pin +// Configure Pin for driving D+ pull-up +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_USB_DEVICE_CON_PIN 1 +#define RTE_USB_DEVICE_CON_ACTIVE 0 +#define RTE_USB_DEVICE_CON_PORT GPIO_PORT(1) +#define RTE_USB_DEVICE_CON_BIT 14 + +// + + +// USB OTG Full-speed +#define RTE_USB_OTG_FS 0 + +// Host [Driver_USBH0] +// Configuration settings for Driver_USBH0 in component ::Drivers:USB Host + +#define RTE_USB_OTG_FS_HOST 0 + +// VBUS Power On/Off Pin +// Configure Pin for driving VBUS +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_OTG_FS_VBUS_PIN 1 +#define RTE_OTG_FS_VBUS_ACTIVE 0 +#define RTE_OTG_FS_VBUS_PORT GPIO_PORT(2) +#define RTE_OTG_FS_VBUS_BIT 9 + +// Overcurrent Detection Pin +// Configure Pin for overcurrent detection +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_OTG_FS_OC_PIN 1 +#define RTE_OTG_FS_OC_ACTIVE 0 +#define RTE_OTG_FS_OC_PORT GPIO_PORT(4) +#define RTE_OTG_FS_OC_BIT 1 +// + +// + + +#endif /* __RTE_DEVICE_H */ diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h.base@1.1.2 b/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h.base@1.1.2 new file mode 100644 index 0000000..70c8002 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/RTE_Device.h.base@1.1.2 @@ -0,0 +1,1828 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2013-2016 Arm Limited (or its affiliates). All + * rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * + * $Date: 09. September 2016 + * $Revision: V1.1.2 + * + * Project: RTE Device Configuration for STMicroelectronics STM32F1xx + * + * -------------------------------------------------------------------------- */ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +#ifndef __RTE_DEVICE_H +#define __RTE_DEVICE_H + + +#define GPIO_PORT(num) \ + ((num == 0) ? GPIOA : \ + (num == 1) ? GPIOB : \ + (num == 2) ? GPIOC : \ + (num == 3) ? GPIOD : \ + (num == 4) ? GPIOE : \ + (num == 5) ? GPIOF : \ + (num == 6) ? GPIOG : \ + NULL) + + +// Clock Configuration +// High-speed Internal Clock <1-999999999> +#define RTE_HSI 8000000 +// High-speed External Clock <1-999999999> +#define RTE_HSE 25000000 +// System Clock <1-999999999> +#define RTE_SYSCLK 72000000 +// HCLK Clock <1-999999999> +#define RTE_HCLK 72000000 +// APB1 Clock <1-999999999> +#define RTE_PCLK1 36000000 +// APB2 Clock <1-999999999> +#define RTE_PCLK2 72000000 +// ADC Clock <1-999999999> +#define RTE_ADCCLK 36000000 +// USB Clock +#define RTE_USBCLK 48000000 +// + + +// USART1 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART1 in component ::CMSIS Driver:USART +#define RTE_USART1 0 + +// USART1_TX Pin <0=>Not Used <1=>PA9 +#define RTE_USART1_TX_PORT_ID_DEF 0 +#if (RTE_USART1_TX_PORT_ID_DEF == 0) +#define RTE_USART1_TX_DEF 0 +#elif (RTE_USART1_TX_PORT_ID_DEF == 1) +#define RTE_USART1_TX_DEF 1 +#define RTE_USART1_TX_PORT_DEF GPIOA +#define RTE_USART1_TX_BIT_DEF 9 +#else +#error "Invalid USART1_TX Pin Configuration!" +#endif + +// USART1_RX Pin <0=>Not Used <1=>PA10 +#define RTE_USART1_RX_PORT_ID_DEF 0 +#if (RTE_USART1_RX_PORT_ID_DEF == 0) +#define RTE_USART1_RX_DEF 0 +#elif (RTE_USART1_RX_PORT_ID_DEF == 1) +#define RTE_USART1_RX_DEF 1 +#define RTE_USART1_RX_PORT_DEF GPIOA +#define RTE_USART1_RX_BIT_DEF 10 +#else +#error "Invalid USART1_RX Pin Configuration!" +#endif + +// USART1_CK Pin <0=>Not Used <1=>PA8 +#define RTE_USART1_CK_PORT_ID_DEF 0 +#if (RTE_USART1_CK_PORT_ID_DEF == 0) +#define RTE_USART1_CK 0 +#elif (RTE_USART1_CK_PORT_ID_DEF == 1) +#define RTE_USART1_CK 1 +#define RTE_USART1_CK_PORT_DEF GPIOA +#define RTE_USART1_CK_BIT_DEF 8 +#else +#error "Invalid USART1_CK Pin Configuration!" +#endif + +// USART1_CTS Pin <0=>Not Used <1=>PA11 +#define RTE_USART1_CTS_PORT_ID_DEF 0 +#if (RTE_USART1_CTS_PORT_ID_DEF == 0) +#define RTE_USART1_CTS 0 +#elif (RTE_USART1_CTS_PORT_ID_DEF == 1) +#define RTE_USART1_CTS 1 +#define RTE_USART1_CTS_PORT_DEF GPIOA +#define RTE_USART1_CTS_BIT_DEF 11 +#else +#error "Invalid USART1_CTS Pin Configuration!" +#endif + +// USART1_RTS Pin <0=>Not Used <1=>PA12 +#define RTE_USART1_RTS_PORT_ID_DEF 0 +#if (RTE_USART1_RTS_PORT_ID_DEF == 0) +#define RTE_USART1_RTS 0 +#elif (RTE_USART1_RTS_PORT_ID_DEF == 1) +#define RTE_USART1_RTS 1 +#define RTE_USART1_RTS_PORT_DEF GPIOA +#define RTE_USART1_RTS_BIT_DEF 12 +#else +#error "Invalid USART1_RTS Pin Configuration!" +#endif + +// USART1 Pin Remap +// Enable USART1 Pin Remapping +#define RTE_USART1_REMAP_FULL 0 + +// USART1_TX Pin <0=>Not Used <1=>PB6 +#define RTE_USART1_TX_PORT_ID_FULL 0 +#if (RTE_USART1_TX_PORT_ID_FULL == 0) +#define RTE_USART1_TX_FULL 0 +#elif (RTE_USART1_TX_PORT_ID_FULL == 1) +#define RTE_USART1_TX_FULL 1 +#define RTE_USART1_TX_PORT_FULL GPIOB +#define RTE_USART1_TX_BIT_FULL 6 +#else +#error "Invalid USART1_TX Pin Configuration!" +#endif + +// USART1_RX Pin <0=>Not Used <1=>PB7 +#define RTE_USART1_RX_PORT_ID_FULL 0 +#if (RTE_USART1_RX_PORT_ID_FULL == 0) +#define RTE_USART1_RX_FULL 0 +#elif (RTE_USART1_RX_PORT_ID_FULL == 1) +#define RTE_USART1_RX_FULL 1 +#define RTE_USART1_RX_PORT_FULL GPIOB +#define RTE_USART1_RX_BIT_FULL 7 +#else +#error "Invalid USART1_RX Pin Configuration!" +#endif +// + +#if (RTE_USART1_REMAP_FULL) +#define RTE_USART1_AF_REMAP AFIO_USART1_REMAP +#define RTE_USART1_TX RTE_USART1_TX_FULL +#define RTE_USART1_TX_PORT RTE_USART1_TX_PORT_FULL +#define RTE_USART1_TX_BIT RTE_USART1_TX_BIT_FULL +#define RTE_USART1_RX RTE_USART1_RX_FULL +#define RTE_USART1_RX_PORT RTE_USART1_RX_PORT_FULL +#define RTE_USART1_RX_BIT RTE_USART1_RX_BIT_FULL +#define RTE_USART1_CK_PORT RTE_USART1_CK_PORT_DEF +#define RTE_USART1_CK_BIT RTE_USART1_CK_BIT_DEF +#define RTE_USART1_CTS_PORT RTE_USART1_CTS_PORT_DEF +#define RTE_USART1_CTS_BIT RTE_USART1_CTS_BIT_DEF +#define RTE_USART1_RTS_PORT RTE_USART1_RTS_PORT_DEF +#define RTE_USART1_RTS_BIT RTE_USART1_RTS_BIT_DEF +#else +#define RTE_USART1_AF_REMAP AFIO_USART1_NO_REMAP +#define RTE_USART1_TX RTE_USART1_TX_DEF +#define RTE_USART1_TX_PORT RTE_USART1_TX_PORT_DEF +#define RTE_USART1_TX_BIT RTE_USART1_TX_BIT_DEF +#define RTE_USART1_RX RTE_USART1_RX_DEF +#define RTE_USART1_RX_PORT RTE_USART1_RX_PORT_DEF +#define RTE_USART1_RX_BIT RTE_USART1_RX_BIT_DEF +#define RTE_USART1_CK_PORT RTE_USART1_CK_PORT_DEF +#define RTE_USART1_CK_BIT RTE_USART1_CK_BIT_DEF +#define RTE_USART1_CTS_PORT RTE_USART1_CTS_PORT_DEF +#define RTE_USART1_CTS_BIT RTE_USART1_CTS_BIT_DEF +#define RTE_USART1_RTS_PORT RTE_USART1_RTS_PORT_DEF +#define RTE_USART1_RTS_BIT RTE_USART1_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART1_RX_DMA 0 +#define RTE_USART1_RX_DMA_NUMBER 1 +#define RTE_USART1_RX_DMA_CHANNEL 5 +#define RTE_USART1_RX_DMA_PRIORITY 0 +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART1_TX_DMA 0 +#define RTE_USART1_TX_DMA_NUMBER 1 +#define RTE_USART1_TX_DMA_CHANNEL 4 +#define RTE_USART1_TX_DMA_PRIORITY 0 +// + + +// USART2 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART2 in component ::CMSIS Driver:USART +#define RTE_USART2 0 + +// USART2_TX Pin <0=>Not Used <1=>PA2 +#define RTE_USART2_TX_PORT_ID_DEF 0 +#if (RTE_USART2_TX_PORT_ID_DEF == 0) +#define RTE_USART2_TX_DEF 0 +#elif (RTE_USART2_TX_PORT_ID_DEF == 1) +#define RTE_USART2_TX_DEF 1 +#define RTE_USART2_TX_PORT_DEF GPIOA +#define RTE_USART2_TX_BIT_DEF 2 +#else +#error "Invalid USART2_TX Pin Configuration!" +#endif + +// USART2_RX Pin <0=>Not Used <1=>PA3 +#define RTE_USART2_RX_PORT_ID_DEF 0 +#if (RTE_USART2_RX_PORT_ID_DEF == 0) +#define RTE_USART2_RX_DEF 0 +#elif (RTE_USART2_RX_PORT_ID_DEF == 1) +#define RTE_USART2_RX_DEF 1 +#define RTE_USART2_RX_PORT_DEF GPIOA +#define RTE_USART2_RX_BIT_DEF 3 +#else +#error "Invalid USART2_RX Pin Configuration!" +#endif + +// USART2_CK Pin <0=>Not Used <1=>PA4 +#define RTE_USART2_CK_PORT_ID_DEF 0 +#if (RTE_USART2_CK_PORT_ID_DEF == 0) +#define RTE_USART2_CK_DEF 0 +#elif (RTE_USART2_CK_PORT_ID_DEF == 1) +#define RTE_USART2_CK_DEF 1 +#define RTE_USART2_CK_PORT_DEF GPIOA +#define RTE_USART2_CK_BIT_DEF 4 +#else +#error "Invalid USART2_CK Pin Configuration!" +#endif + +// USART2_CTS Pin <0=>Not Used <1=>PA0 +#define RTE_USART2_CTS_PORT_ID_DEF 0 +#if (RTE_USART2_CTS_PORT_ID_DEF == 0) +#define RTE_USART2_CTS_DEF 0 +#elif (RTE_USART2_CTS_PORT_ID_DEF == 1) +#define RTE_USART2_CTS_DEF 1 +#define RTE_USART2_CTS_PORT_DEF GPIOA +#define RTE_USART2_CTS_BIT_DEF 0 +#else +#error "Invalid USART2_CTS Pin Configuration!" +#endif + +// USART2_RTS Pin <0=>Not Used <1=>PA1 +#define RTE_USART2_RTS_PORT_ID_DEF 0 +#if (RTE_USART2_RTS_PORT_ID_DEF == 0) +#define RTE_USART2_RTS_DEF 0 +#elif (RTE_USART2_RTS_PORT_ID_DEF == 1) +#define RTE_USART2_RTS_DEF 1 +#define RTE_USART2_RTS_PORT_DEF GPIOA +#define RTE_USART2_RTS_BIT_DEF 1 +#else +#error "Invalid USART2_RTS Pin Configuration!" +#endif + +// USART2 Pin Remap +// Enable USART2 Pin Remapping +#define RTE_USART2_REMAP_FULL 0 + +// USART2_TX Pin <0=>Not Used <1=>PD5 +#define RTE_USART2_TX_PORT_ID_FULL 0 +#if (RTE_USART2_TX_PORT_ID_FULL == 0) +#define RTE_USART2_TX_FULL 0 +#elif (RTE_USART2_TX_PORT_ID_FULL == 1) +#define RTE_USART2_TX_FULL 1 +#define RTE_USART2_TX_PORT_FULL GPIOD +#define RTE_USART2_TX_BIT_FULL 5 +#else +#error "Invalid USART2_TX Pin Configuration!" +#endif + +// USART2_RX Pin <0=>Not Used <1=>PD6 +#define RTE_USART2_RX_PORT_ID_FULL 0 +#if (RTE_USART2_RX_PORT_ID_FULL == 0) +#define RTE_USART2_RX_FULL 0 +#elif (RTE_USART2_RX_PORT_ID_FULL == 1) +#define RTE_USART2_RX_FULL 1 +#define RTE_USART2_RX_PORT_FULL GPIOD +#define RTE_USART2_RX_BIT_FULL 6 +#else +#error "Invalid USART2_RX Pin Configuration!" +#endif + +// USART2_CK Pin <0=>Not Used <1=>PD7 +#define RTE_USART2_CK_PORT_ID_FULL 0 +#if (RTE_USART2_CK_PORT_ID_FULL == 0) +#define RTE_USART2_CK_FULL 0 +#elif (RTE_USART2_CK_PORT_ID_FULL == 1) +#define RTE_USART2_CK_FULL 1 +#define RTE_USART2_CK_PORT_FULL GPIOD +#define RTE_USART2_CK_BIT_FULL 7 +#else +#error "Invalid USART2_CK Pin Configuration!" +#endif + +// USART2_CTS Pin <0=>Not Used <1=>PD3 +#define RTE_USART2_CTS_PORT_ID_FULL 0 +#if (RTE_USART2_CTS_PORT_ID_FULL == 0) +#define RTE_USART2_CTS_FULL 0 +#elif (RTE_USART2_CTS_PORT_ID_FULL == 1) +#define RTE_USART2_CTS_FULL 1 +#define RTE_USART2_CTS_PORT_FULL GPIOD +#define RTE_USART2_CTS_BIT_FULL 3 +#else +#error "Invalid USART2_CTS Pin Configuration!" +#endif + +// USART2_RTS Pin <0=>Not Used <1=>PD4 +#define RTE_USART2_RTS_PORT_ID_FULL 0 +#if (RTE_USART2_RTS_PORT_ID_FULL == 0) +#define RTE_USART2_RTS_FULL 0 +#elif (RTE_USART2_RTS_PORT_ID_FULL == 1) +#define RTE_USART2_RTS_FULL 1 +#define RTE_USART2_RTS_PORT_FULL GPIOD +#define RTE_USART2_RTS_BIT_FULL 4 +#else +#error "Invalid USART2_RTS Pin Configuration!" +#endif +// + +#if (RTE_USART2_REMAP_FULL) +#define RTE_USART2_AF_REMAP AFIO_USART2_REMAP +#define RTE_USART2_TX RTE_USART2_TX_FULL +#define RTE_USART2_TX_PORT RTE_USART2_TX_PORT_FULL +#define RTE_USART2_TX_BIT RTE_USART2_TX_BIT_FULL +#define RTE_USART2_RX RTE_USART2_RX_FULL +#define RTE_USART2_RX_PORT RTE_USART2_RX_PORT_FULL +#define RTE_USART2_RX_BIT RTE_USART2_RX_BIT_FULL +#define RTE_USART2_CK RTE_USART2_CK_FULL +#define RTE_USART2_CK_PORT RTE_USART2_CK_PORT_FULL +#define RTE_USART2_CK_BIT RTE_USART2_CK_BIT_FULL +#define RTE_USART2_CTS RTE_USART2_CTS_FULL +#define RTE_USART2_CTS_PORT RTE_USART2_CTS_PORT_FULL +#define RTE_USART2_CTS_BIT RTE_USART2_CTS_BIT_FULL +#define RTE_USART2_RTS RTE_USART2_RTS_FULL +#define RTE_USART2_RTS_PORT RTE_USART2_RTS_PORT_FULL +#define RTE_USART2_RTS_BIT RTE_USART2_RTS_BIT_FULL +#else +#define RTE_USART2_AF_REMAP AFIO_USART2_NO_REMAP +#define RTE_USART2_TX RTE_USART2_TX_DEF +#define RTE_USART2_TX_PORT RTE_USART2_TX_PORT_DEF +#define RTE_USART2_TX_BIT RTE_USART2_TX_BIT_DEF +#define RTE_USART2_RX RTE_USART2_RX_DEF +#define RTE_USART2_RX_PORT RTE_USART2_RX_PORT_DEF +#define RTE_USART2_RX_BIT RTE_USART2_RX_BIT_DEF +#define RTE_USART2_CK RTE_USART2_CK_DEF +#define RTE_USART2_CK_PORT RTE_USART2_CK_PORT_DEF +#define RTE_USART2_CK_BIT RTE_USART2_CK_BIT_DEF +#define RTE_USART2_CTS RTE_USART2_CTS_DEF +#define RTE_USART2_CTS_PORT RTE_USART2_CTS_PORT_DEF +#define RTE_USART2_CTS_BIT RTE_USART2_CTS_BIT_DEF +#define RTE_USART2_RTS RTE_USART2_RTS_DEF +#define RTE_USART2_RTS_PORT RTE_USART2_RTS_PORT_DEF +#define RTE_USART2_RTS_BIT RTE_USART2_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <6=>6 +// Selects DMA Channel (only Channel 6 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART2_RX_DMA 0 +#define RTE_USART2_RX_DMA_NUMBER 1 +#define RTE_USART2_RX_DMA_CHANNEL 6 +#define RTE_USART2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <7=>7 +// Selects DMA Channel (only Channel 7 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Set DMA Channel priority +// +#define RTE_USART2_TX_DMA 0 +#define RTE_USART2_TX_DMA_NUMBER 1 +#define RTE_USART2_TX_DMA_CHANNEL 7 +#define RTE_USART2_TX_DMA_PRIORITY 0 + +// + + +// USART3 (Universal synchronous asynchronous receiver transmitter) +// Configuration settings for Driver_USART3 in component ::CMSIS Driver:USART +#define RTE_USART3 0 + +// USART3_TX Pin <0=>Not Used <1=>PB10 +#define RTE_USART3_TX_PORT_ID_DEF 0 +#if (RTE_USART3_TX_PORT_ID_DEF == 0) +#define RTE_USART3_TX_DEF 0 +#elif (RTE_USART3_TX_PORT_ID_DEF == 1) +#define RTE_USART3_TX_DEF 1 +#define RTE_USART3_TX_PORT_DEF GPIOB +#define RTE_USART3_TX_BIT_DEF 10 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PB11 +#define RTE_USART3_RX_PORT_ID_DEF 0 +#if (RTE_USART3_RX_PORT_ID_DEF == 0) +#define RTE_USART3_RX_DEF 0 +#elif (RTE_USART3_RX_PORT_ID_DEF == 1) +#define RTE_USART3_RX_DEF 1 +#define RTE_USART3_RX_PORT_DEF GPIOB +#define RTE_USART3_RX_BIT_DEF 11 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PB12 +#define RTE_USART3_CK_PORT_ID_DEF 0 +#if (RTE_USART3_CK_PORT_ID_DEF == 0) +#define RTE_USART3_CK_DEF 0 +#elif (RTE_USART3_CK_PORT_ID_DEF == 1) +#define RTE_USART3_CK_DEF 1 +#define RTE_USART3_CK_PORT_DEF GPIOB +#define RTE_USART3_CK_BIT_DEF 12 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif + +// USART3_CTS Pin <0=>Not Used <1=>PB13 +#define RTE_USART3_CTS_PORT_ID_DEF 0 +#if (RTE_USART3_CTS_PORT_ID_DEF == 0) +#define RTE_USART3_CTS_DEF 0 +#elif (RTE_USART3_CTS_PORT_ID_DEF == 1) +#define RTE_USART3_CTS_DEF 1 +#define RTE_USART3_CTS_PORT_DEF GPIOB +#define RTE_USART3_CTS_BIT_DEF 13 +#else +#error "Invalid USART3_CTS Pin Configuration!" +#endif + +// USART3_RTS Pin <0=>Not Used <1=>PB14 +#define RTE_USART3_RTS_PORT_ID_DEF 0 +#if (RTE_USART3_RTS_PORT_ID_DEF == 0) +#define RTE_USART3_RTS_DEF 0 +#elif (RTE_USART3_RTS_PORT_ID_DEF == 1) +#define RTE_USART3_RTS_DEF 1 +#define RTE_USART3_RTS_PORT_DEF GPIOB +#define RTE_USART3_RTS_BIT_DEF 14 +#else +#error "Invalid USART3_RTS Pin Configuration!" +#endif + +// USART3 Partial Pin Remap +// Enable USART3 Partial Pin Remapping +#define RTE_USART3_REMAP_PARTIAL 0 + +// USART3_TX Pin <0=>Not Used <1=>PC10 +#define RTE_USART3_TX_PORT_ID_PARTIAL 0 +#if (RTE_USART3_TX_PORT_ID_PARTIAL == 0) +#define RTE_USART3_TX_PARTIAL 0 +#elif (RTE_USART3_TX_PORT_ID_PARTIAL == 1) +#define RTE_USART3_TX_PARTIAL 1 +#define RTE_USART3_TX_PORT_PARTIAL GPIOC +#define RTE_USART3_TX_BIT_PARTIAL 10 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PC11 +#define RTE_USART3_RX_PORT_ID_PARTIAL 0 +#if (RTE_USART3_RX_PORT_ID_PARTIAL == 0) +#define RTE_USART3_RX_PARTIAL 0 +#elif (RTE_USART3_RX_PORT_ID_PARTIAL == 1) +#define RTE_USART3_RX_PARTIAL 1 +#define RTE_USART3_RX_PORT_PARTIAL GPIOC +#define RTE_USART3_RX_BIT_PARTIAL 11 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PC12 +#define RTE_USART3_CK_PORT_ID_PARTIAL 0 +#if (RTE_USART3_CK_PORT_ID_PARTIAL == 0) +#define RTE_USART3_CK_PARTIAL 0 +#elif (RTE_USART3_CK_PORT_ID_PARTIAL == 1) +#define RTE_USART3_CK_PARTIAL 1 +#define RTE_USART3_CK_PORT_PARTIAL GPIOC +#define RTE_USART3_CK_BIT_PARTIAL 12 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif +// + +// USART3 Full Pin Remap +// Enable USART3 Full Pin Remapping +#define RTE_USART3_REMAP_FULL 0 + +// USART3_TX Pin <0=>Not Used <1=>PD8 +#define RTE_USART3_TX_PORT_ID_FULL 0 +#if (RTE_USART3_TX_PORT_ID_FULL == 0) +#define RTE_USART3_TX_FULL 0 +#elif (RTE_USART3_TX_PORT_ID_FULL == 1) +#define RTE_USART3_TX_FULL 1 +#define RTE_USART3_TX_PORT_FULL GPIOD +#define RTE_USART3_TX_BIT_FULL 8 +#else +#error "Invalid USART3_TX Pin Configuration!" +#endif + +// USART3_RX Pin <0=>Not Used <1=>PD9 +#define RTE_USART3_RX_PORT_ID_FULL 0 +#if (RTE_USART3_RX_PORT_ID_FULL == 0) +#define RTE_USART3_RX_FULL 0 +#elif (RTE_USART3_RX_PORT_ID_FULL == 1) +#define RTE_USART3_RX_FULL 1 +#define RTE_USART3_RX_PORT_FULL GPIOD +#define RTE_USART3_RX_BIT_FULL 9 +#else +#error "Invalid USART3_RX Pin Configuration!" +#endif + +// USART3_CK Pin <0=>Not Used <1=>PD10 +#define RTE_USART3_CK_PORT_ID_FULL 0 +#if (RTE_USART3_CK_PORT_ID_FULL == 0) +#define RTE_USART3_CK_FULL 0 +#elif (RTE_USART3_CK_PORT_ID_FULL == 1) +#define RTE_USART3_CK_FULL 1 +#define RTE_USART3_CK_PORT_FULL GPIOD +#define RTE_USART3_CK_BIT_FULL 10 +#else +#error "Invalid USART3_CK Pin Configuration!" +#endif + +// USART3_CTS Pin <0=>Not Used <1=>PD11 +#define RTE_USART3_CTS_PORT_ID_FULL 0 +#if (RTE_USART3_CTS_PORT_ID_FULL == 0) +#define RTE_USART3_CTS_FULL 0 +#elif (RTE_USART3_CTS_PORT_ID_FULL == 1) +#define RTE_USART3_CTS_FULL 1 +#define RTE_USART3_CTS_PORT_FULL GPIOD +#define RTE_USART3_CTS_BIT_FULL 11 +#else +#error "Invalid USART3_CTS Pin Configuration!" +#endif + +// USART3_RTS Pin <0=>Not Used <1=>PD12 +#define RTE_USART3_RTS_PORT_ID_FULL 0 +#if (RTE_USART3_RTS_PORT_ID_FULL == 0) +#define RTE_USART3_RTS_FULL 0 +#elif (RTE_USART3_RTS_PORT_ID_FULL == 1) +#define RTE_USART3_RTS_FULL 1 +#define RTE_USART3_RTS_PORT_FULL GPIOD +#define RTE_USART3_RTS_BIT_FULL 12 +#else +#error "Invalid USART3_RTS Pin Configuration!" +#endif +// + +#if ((RTE_USART3_REMAP_PARTIAL == 1) && (RTE_USART3_REMAP_FULL == 1)) +#error "Invalid USART3 Pin Remap Configuration!" +#endif + +#if (RTE_USART3_REMAP_FULL) +#define RTE_USART3_AF_REMAP AFIO_USART3_REMAP_FULL +#define RTE_USART3_TX RTE_USART3_TX_FULL +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_FULL +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_FULL +#define RTE_USART3_RX RTE_USART3_RX_FULL +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_FULL +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_FULL +#define RTE_USART3_CK RTE_USART3_CK_FULL +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_FULL +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_FULL +#define RTE_USART3_CTS RTE_USART3_CTS_FULL +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_FULL +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_FULL +#define RTE_USART3_RTS RTE_USART3_RTS_FULL +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_FULL +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_FULL +#elif (RTE_USART3_REMAP_PARTIAL) +#define RTE_USART3_AF_REMAP AFIO_USART3_REMAP_PARTIAL +#define RTE_USART3_TX RTE_USART3_TX_PARTIAL +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_PARTIAL +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_PARTIAL +#define RTE_USART3_RX RTE_USART3_RX_PARTIAL +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_PARTIAL +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_PARTIAL +#define RTE_USART3_CK RTE_USART3_CK_PARTIAL +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_PARTIAL +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_PARTIAL +#define RTE_USART3_CTS RTE_USART3_CTS_DEF +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_DEF +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_DEF +#define RTE_USART3_RTS RTE_USART3_RTS_DEF +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_DEF +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_DEF +#else +#define RTE_USART3_AF_REMAP AFIO_USART3_NO_REMAP +#define RTE_USART3_TX RTE_USART3_TX_DEF +#define RTE_USART3_TX_PORT RTE_USART3_TX_PORT_DEF +#define RTE_USART3_TX_BIT RTE_USART3_TX_BIT_DEF +#define RTE_USART3_RX RTE_USART3_RX_DEF +#define RTE_USART3_RX_PORT RTE_USART3_RX_PORT_DEF +#define RTE_USART3_RX_BIT RTE_USART3_RX_BIT_DEF +#define RTE_USART3_CK RTE_USART3_CK_DEF +#define RTE_USART3_CK_PORT RTE_USART3_CK_PORT_DEF +#define RTE_USART3_CK_BIT RTE_USART3_CK_BIT_DEF +#define RTE_USART3_CTS RTE_USART3_CTS_DEF +#define RTE_USART3_CTS_PORT RTE_USART3_CTS_PORT_DEF +#define RTE_USART3_CTS_BIT RTE_USART3_CTS_BIT_DEF +#define RTE_USART3_RTS RTE_USART3_RTS_DEF +#define RTE_USART3_RTS_PORT RTE_USART3_RTS_PORT_DEF +#define RTE_USART3_RTS_BIT RTE_USART3_RTS_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_USART3_RX_DMA 0 +#define RTE_USART3_RX_DMA_NUMBER 1 +#define RTE_USART3_RX_DMA_CHANNEL 3 +#define RTE_USART3_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_USART3_TX_DMA 0 +#define RTE_USART3_TX_DMA_NUMBER 1 +#define RTE_USART3_TX_DMA_CHANNEL 2 +#define RTE_USART3_TX_DMA_PRIORITY 0 + +// + + +// UART4 (Universal asynchronous receiver transmitter) +// Configuration settings for Driver_USART4 in component ::CMSIS Driver:USART +#define RTE_UART4 0 +#define RTE_UART4_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// UART4_TX Pin <0=>Not Used <1=>PC10 +#define RTE_UART4_TX_ID 0 +#if (RTE_UART4_TX_ID == 0) +#define RTE_UART4_TX 0 +#elif (RTE_UART4_TX_ID == 1) +#define RTE_UART4_TX 1 +#define RTE_UART4_TX_PORT GPIOC +#define RTE_UART4_TX_BIT 10 +#else +#error "Invalid UART4_TX Pin Configuration!" +#endif + +// UART4_RX Pin <0=>Not Used <1=>PC11 +#define RTE_UART4_RX_ID 0 +#if (RTE_UART4_RX_ID == 0) +#define RTE_UART4_RX 0 +#elif (RTE_UART4_RX_ID == 1) +#define RTE_UART4_RX 1 +#define RTE_UART4_RX_PORT GPIOC +#define RTE_UART4_RX_BIT 11 +#else +#error "Invalid UART4_RX Pin Configuration!" +#endif + + +// DMA Rx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_UART4_RX_DMA 0 +#define RTE_UART4_RX_DMA_NUMBER 2 +#define RTE_UART4_RX_DMA_CHANNEL 3 +#define RTE_UART4_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very high +// Sets DMA Channel priority +// +#define RTE_UART4_TX_DMA 0 +#define RTE_UART4_TX_DMA_NUMBER 2 +#define RTE_UART4_TX_DMA_CHANNEL 5 +#define RTE_UART4_TX_DMA_PRIORITY 0 + +// + + +// UART5 (Universal asynchronous receiver transmitter) +// Configuration settings for Driver_USART5 in component ::CMSIS Driver:USART +#define RTE_UART5 0 +#define RTE_UART5_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// UART5_TX Pin <0=>Not Used <1=>PC12 +#define RTE_UART5_TX_ID 0 +#if (RTE_UART5_TX_ID == 0) +#define RTE_UART5_TX 0 +#elif (RTE_UART5_TX_ID == 1) +#define RTE_UART5_TX 1 +#define RTE_UART5_TX_PORT GPIOC +#define RTE_UART5_TX_BIT 12 +#else +#error "Invalid UART5_TX Pin Configuration!" +#endif + +// UART5_RX Pin <0=>Not Used <1=>PD2 +#define RTE_UART5_RX_ID 0 +#if (RTE_UART5_RX_ID == 0) +#define RTE_UART5_RX 0 +#elif (RTE_UART5_RX_ID == 1) +#define RTE_UART5_RX 1 +#define RTE_UART5_RX_PORT GPIOD +#define RTE_UART5_RX_BIT 2 +#else +#error "Invalid UART5_RX Pin Configuration!" +#endif +// + + +// I2C1 (Inter-integrated Circuit Interface 1) +// Configuration settings for Driver_I2C1 in component ::CMSIS Driver:I2C +#define RTE_I2C1 0 + +// I2C1_SCL Pin <0=>PB6 +#define RTE_I2C1_SCL_PORT_ID_DEF 0 +#if (RTE_I2C1_SCL_PORT_ID_DEF == 0) +#define RTE_I2C1_SCL_PORT_DEF GPIOB +#define RTE_I2C1_SCL_BIT_DEF 6 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1_SDA Pin <0=>PB7 +#define RTE_I2C1_SDA_PORT_ID_DEF 0 +#if (RTE_I2C1_SDA_PORT_ID_DEF == 0) +#define RTE_I2C1_SDA_PORT_DEF GPIOB +#define RTE_I2C1_SDA_BIT_DEF 7 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1 Pin Remap +// Enable I2C1 Pin Remapping +#define RTE_I2C1_REMAP_FULL 0 + +// I2C1_SCL Pin <0=>PB8 +#define RTE_I2C1_SCL_PORT_ID_FULL 0 +#if (RTE_I2C1_SCL_PORT_ID_FULL == 0) +#define RTE_I2C1_SCL_PORT_FULL GPIOB +#define RTE_I2C1_SCL_BIT_FULL 8 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// I2C1_SDA Pin <0=>PB9 +#define RTE_I2C1_SDA_PORT_ID_FULL 0 +#if (RTE_I2C1_SDA_PORT_ID_FULL == 0) +#define RTE_I2C1_SDA_PORT_FULL GPIOB +#define RTE_I2C1_SDA_BIT_FULL 9 +#else +#error "Invalid I2C1_SCL Pin Configuration!" +#endif + +// + +#if (RTE_I2C1_REMAP_FULL) +#define RTE_I2C1_AF_REMAP AFIO_I2C1_REMAP +#define RTE_I2C1_SCL_PORT RTE_I2C1_SCL_PORT_FULL +#define RTE_I2C1_SCL_BIT RTE_I2C1_SCL_BIT_FULL +#define RTE_I2C1_SDA_PORT RTE_I2C1_SDA_PORT_FULL +#define RTE_I2C1_SDA_BIT RTE_I2C1_SDA_BIT_FULL +#else +#define RTE_I2C1_AF_REMAP AFIO_I2C1_NO_REMAP +#define RTE_I2C1_SCL_PORT RTE_I2C1_SCL_PORT_DEF +#define RTE_I2C1_SCL_BIT RTE_I2C1_SCL_BIT_DEF +#define RTE_I2C1_SDA_PORT RTE_I2C1_SDA_PORT_DEF +#define RTE_I2C1_SDA_BIT RTE_I2C1_SDA_BIT_DEF +#endif + + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <7=>7 +// Selects DMA Channel (only Channel 7 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C1_RX_DMA 0 +#define RTE_I2C1_RX_DMA_NUMBER 1 +#define RTE_I2C1_RX_DMA_CHANNEL 7 +#define RTE_I2C1_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <6=>6 +// Selects DMA Channel (only Channel 6 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C1_TX_DMA 0 +#define RTE_I2C1_TX_DMA_NUMBER 1 +#define RTE_I2C1_TX_DMA_CHANNEL 6 +#define RTE_I2C1_TX_DMA_PRIORITY 0 + +// + + +// I2C2 (Inter-integrated Circuit Interface 2) +// Configuration settings for Driver_I2C2 in component ::CMSIS Driver:I2C +#define RTE_I2C2 0 +#define RTE_I2C2_AF_REMAP AFIO_UNAVAILABLE_REMAP + +// I2C2_SCL Pin <0=>PB10 +#define RTE_I2C2_SCL_PORT_ID 0 +#if (RTE_I2C2_SCL_PORT_ID == 0) +#define RTE_I2C2_SCL_PORT GPIOB +#define RTE_I2C2_SCL_BIT 10 +#else +#error "Invalid I2C2_SCL Pin Configuration!" +#endif + +// I2C2_SDA Pin <0=>PB11 +#define RTE_I2C2_SDA_PORT_ID 0 +#if (RTE_I2C2_SDA_PORT_ID == 0) +#define RTE_I2C2_SDA_PORT GPIOB +#define RTE_I2C2_SDA_BIT 11 +#else +#error "Invalid I2C2_SCL Pin Configuration!" +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C2_RX_DMA 1 +#define RTE_I2C2_RX_DMA_NUMBER 1 +#define RTE_I2C2_RX_DMA_CHANNEL 5 +#define RTE_I2C2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_I2C2_TX_DMA 1 +#define RTE_I2C2_TX_DMA_NUMBER 1 +#define RTE_I2C2_TX_DMA_CHANNEL 4 +#define RTE_I2C2_TX_DMA_PRIORITY 0 + +// + + +// SPI1 (Serial Peripheral Interface 1) [Driver_SPI1] +// Configuration settings for Driver_SPI1 in component ::CMSIS Driver:SPI +#define RTE_SPI1 0 + +// SPI1_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI1_NSS_PIN 1 +#define RTE_SPI1_NSS_PORT GPIO_PORT(0) +#define RTE_SPI1_NSS_BIT 4 + +// SPI1_SCK Pin <0=>PA5 +#define RTE_SPI1_SCK_PORT_ID_DEF 0 +#if (RTE_SPI1_SCK_PORT_ID_DEF == 0) +#define RTE_SPI1_SCK_PORT_DEF GPIOA +#define RTE_SPI1_SCK_BIT_DEF 5 +#else +#error "Invalid SPI1_SCK Pin Configuration!" +#endif + +// SPI1_MISO Pin <0=>Not Used <1=>PA6 +#define RTE_SPI1_MISO_PORT_ID_DEF 0 +#if (RTE_SPI1_MISO_PORT_ID_DEF == 0) +#define RTE_SPI1_MISO_DEF 0 +#elif (RTE_SPI1_MISO_PORT_ID_DEF == 1) +#define RTE_SPI1_MISO_DEF 1 +#define RTE_SPI1_MISO_PORT_DEF GPIOA +#define RTE_SPI1_MISO_BIT_DEF 6 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif + +// SPI1_MOSI Pin <0=>Not Used <1=>PA7 +#define RTE_SPI1_MOSI_PORT_ID_DEF 0 +#if (RTE_SPI1_MOSI_PORT_ID_DEF == 0) +#define RTE_SPI1_MOSI_DEF 0 +#elif (RTE_SPI1_MOSI_PORT_ID_DEF == 1) +#define RTE_SPI1_MOSI_DEF 1 +#define RTE_SPI1_MOSI_PORT_DEF GPIOA +#define RTE_SPI1_MOSI_BIT_DEF 7 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif + +// SPI1 Pin Remap +// Enable SPI1 Pin Remapping. +#define RTE_SPI1_REMAP 0 + +// SPI1_SCK Pin <0=>PB3 +#define RTE_SPI1_SCK_PORT_ID_FULL 0 +#if (RTE_SPI1_SCK_PORT_ID_FULL == 0) +#define RTE_SPI1_SCK_PORT_FULL GPIOB +#define RTE_SPI1_SCK_BIT_FULL 3 +#else +#error "Invalid SPI1_SCK Pin Configuration!" +#endif + +// SPI1_MISO Pin <0=>Not Used <1=>PB4 +#define RTE_SPI1_MISO_PORT_ID_FULL 0 +#if (RTE_SPI1_MISO_PORT_ID_FULL == 0) +#define RTE_SPI1_MISO_FULL 0 +#elif (RTE_SPI1_MISO_PORT_ID_FULL == 1) +#define RTE_SPI1_MISO_FULL 1 +#define RTE_SPI1_MISO_PORT_FULL GPIOB +#define RTE_SPI1_MISO_BIT_FULL 4 +#else +#error "Invalid SPI1_MISO Pin Configuration!" +#endif +// SPI1_MOSI Pin <0=>Not Used <1=>PB5 +#define RTE_SPI1_MOSI_PORT_ID_FULL 0 +#if (RTE_SPI1_MOSI_PORT_ID_FULL == 0) +#define RTE_SPI1_MOSI_FULL 0 +#elif (RTE_SPI1_MOSI_PORT_ID_FULL == 1) +#define RTE_SPI1_MOSI_FULL 1 +#define RTE_SPI1_MOSI_PORT_FULL GPIOB +#define RTE_SPI1_MOSI_BIT_FULL 5 +#else +#error "Invalid SPI1_MOSI Pin Configuration!" +#endif + +// + +#if (RTE_SPI1_REMAP) +#define RTE_SPI1_AF_REMAP AFIO_SPI1_REMAP +#define RTE_SPI1_SCK_PORT RTE_SPI1_SCK_PORT_FULL +#define RTE_SPI1_SCK_BIT RTE_SPI1_SCK_BIT_FULL +#define RTE_SPI1_MISO RTE_SPI1_MISO_FULL +#define RTE_SPI1_MISO_PORT RTE_SPI1_MISO_PORT_FULL +#define RTE_SPI1_MISO_BIT RTE_SPI1_MISO_BIT_FULL +#define RTE_SPI1_MOSI RTE_SPI1_MOSI_FULL +#define RTE_SPI1_MOSI_PORT RTE_SPI1_MOSI_PORT_FULL +#define RTE_SPI1_MOSI_BIT RTE_SPI1_MOSI_BIT_FULL +#else +#define RTE_SPI1_AF_REMAP AFIO_SPI1_NO_REMAP +#define RTE_SPI1_SCK_PORT RTE_SPI1_SCK_PORT_DEF +#define RTE_SPI1_SCK_BIT RTE_SPI1_SCK_BIT_DEF +#define RTE_SPI1_MISO RTE_SPI1_MISO_DEF +#define RTE_SPI1_MISO_PORT RTE_SPI1_MISO_PORT_DEF +#define RTE_SPI1_MISO_BIT RTE_SPI1_MISO_BIT_DEF +#define RTE_SPI1_MOSI RTE_SPI1_MOSI_DEF +#define RTE_SPI1_MOSI_PORT RTE_SPI1_MOSI_PORT_DEF +#define RTE_SPI1_MOSI_BIT RTE_SPI1_MOSI_BIT_DEF +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI1_RX_DMA 0 +#define RTE_SPI1_RX_DMA_NUMBER 1 +#define RTE_SPI1_RX_DMA_CHANNEL 2 +#define RTE_SPI1_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <3=>3 +// Selects DMA Channel (only Channel 3 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI1_TX_DMA 0 +#define RTE_SPI1_TX_DMA_NUMBER 1 +#define RTE_SPI1_TX_DMA_CHANNEL 3 +#define RTE_SPI1_TX_DMA_PRIORITY 0 + +// + + +// SPI2 (Serial Peripheral Interface 2) [Driver_SPI2] +// Configuration settings for Driver_SPI2 in component ::CMSIS Driver:SPI +#define RTE_SPI2 0 + +// SPI2_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI2_NSS_PIN 1 +#define RTE_SPI2_NSS_PORT GPIO_PORT(1) +#define RTE_SPI2_NSS_BIT 12 + +// SPI2_SCK Pin <0=>PB13 +#define RTE_SPI2_SCK_PORT_ID 0 +#if (RTE_SPI2_SCK_PORT_ID == 0) +#define RTE_SPI2_SCK_PORT GPIOB +#define RTE_SPI2_SCK_BIT 13 +#define RTE_SPI2_SCK_REMAP 0 +#else +#error "Invalid SPI2_SCK Pin Configuration!" +#endif + +// SPI2_MISO Pin <0=>Not Used <1=>PB14 +#define RTE_SPI2_MISO_PORT_ID 0 +#if (RTE_SPI2_MISO_PORT_ID == 0) +#define RTE_SPI2_MISO 0 +#elif (RTE_SPI2_MISO_PORT_ID == 1) +#define RTE_SPI2_MISO 1 +#define RTE_SPI2_MISO_PORT GPIOB +#define RTE_SPI2_MISO_BIT 14 +#define RTE_SPI2_MISO_REMAP 0 +#else +#error "Invalid SPI2_MISO Pin Configuration!" +#endif + +// SPI2_MOSI Pin <0=>Not Used <1=>PB15 +#define RTE_SPI2_MOSI_PORT_ID 0 +#if (RTE_SPI2_MOSI_PORT_ID == 0) +#define RTE_SPI2_MOSI 0 +#elif (RTE_SPI2_MOSI_PORT_ID == 1) +#define RTE_SPI2_MOSI 1 +#define RTE_SPI2_MOSI_PORT GPIOB +#define RTE_SPI2_MOSI_BIT 15 +#define RTE_SPI2_MOSI_REMAP 0 +#else +#error "Invalid SPI2_MISO Pin Configuration!" +#endif + +// DMA Rx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI2_RX_DMA 0 +#define RTE_SPI2_RX_DMA_NUMBER 1 +#define RTE_SPI2_RX_DMA_CHANNEL 4 +#define RTE_SPI2_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <1=>1 +// Selects DMA Number (only DMA1 can be used) +// Channel <5=>5 +// Selects DMA Channel (only Channel 5 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI2_TX_DMA 0 +#define RTE_SPI2_TX_DMA_NUMBER 1 +#define RTE_SPI2_TX_DMA_CHANNEL 5 +#define RTE_SPI2_TX_DMA_PRIORITY 0 + +// + + +// SPI3 (Serial Peripheral Interface 3) [Driver_SPI3] +// Configuration settings for Driver_SPI3 in component ::CMSIS Driver:SPI +#define RTE_SPI3 0 + +// SPI3_NSS Pin +// Configure Pin if exists +// GPIO Pxy (x = A..G, y = 0..15) +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SPI3_NSS_PIN 1 +#define RTE_SPI3_NSS_PORT GPIO_PORT(0) +#define RTE_SPI3_NSS_BIT 15 + +// SPI3_SCK Pin <0=>PB3 +#define RTE_SPI3_SCK_PORT_ID_DEF 0 +#if (RTE_SPI3_SCK_PORT_ID_DEF == 0) +#define RTE_SPI3_SCK_PORT_DEF GPIOB +#define RTE_SPI3_SCK_BIT_DEF 3 +#else +#error "Invalid SPI3_SCK Pin Configuration!" +#endif + +// SPI3_MISO Pin <0=>Not Used <1=>PB4 +#define RTE_SPI3_MISO_PORT_ID_DEF 0 +#if (RTE_SPI3_MISO_PORT_ID_DEF == 0) +#define RTE_SPI3_MISO_DEF 0 +#elif (RTE_SPI3_MISO_PORT_ID_DEF == 1) +#define RTE_SPI3_MISO_DEF 1 +#define RTE_SPI3_MISO_PORT_DEF GPIOB +#define RTE_SPI3_MISO_BIT_DEF 4 +#else +#error "Invalid SPI3_MISO Pin Configuration!" +#endif + +// SPI3_MOSI <0=>Not Used Pin <1=>PB5 +#define RTE_SPI3_MOSI_PORT_ID_DEF 0 +#if (RTE_SPI3_MOSI_PORT_ID_DEF == 0) +#define RTE_SPI3_MOSI_DEF 0 +#elif (RTE_SPI3_MOSI_PORT_ID_DEF == 1) +#define RTE_SPI3_MOSI_DEF 1 +#define RTE_SPI3_MOSI_PORT_DEF GPIOB +#define RTE_SPI3_MOSI_BIT_DEF 5 +#else +#error "Invalid SPI3_MOSI Pin Configuration!" +#endif + +// SPI3 Pin Remap +// Enable SPI3 Pin Remapping. +// SPI 3 Pin Remapping is available only in connectivity line devices! +#define RTE_SPI3_REMAP 0 + +// SPI3_SCK Pin <0=>PC10 +#define RTE_SPI3_SCK_PORT_ID_FULL 0 +#if (RTE_SPI3_SCK_PORT_ID_FULL == 0) +#define RTE_SPI3_SCK_PORT_FULL GPIOC +#define RTE_SPI3_SCK_BIT_FULL 10 +#else +#error "Invalid SPI3_SCK Pin Configuration!" +#endif + +// SPI3_MISO Pin <0=>Not Used <1=>PC11 +#define RTE_SPI3_MISO_PORT_ID_FULL 0 +#if (RTE_SPI3_MISO_PORT_ID_FULL == 0) +#define RTE_SPI3_MISO_FULL 0 +#elif (RTE_SPI3_MISO_PORT_ID_FULL == 1) +#define RTE_SPI3_MISO_FULL 1 +#define RTE_SPI3_MISO_PORT_FULL GPIOC +#define RTE_SPI3_MISO_BIT_FULL 11 +#else +#error "Invalid SPI3_MISO Pin Configuration!" +#endif +// SPI3_MOSI Pin <0=>Not Used <1=>PC12 +#define RTE_SPI3_MOSI_PORT_ID_FULL 0 +#if (RTE_SPI3_MOSI_PORT_ID_FULL == 0) +#define RTE_SPI3_MOSI_FULL 0 +#elif (RTE_SPI3_MOSI_PORT_ID_FULL == 1) +#define RTE_SPI3_MOSI_FULL 1 +#define RTE_SPI3_MOSI_PORT_FULL GPIOC +#define RTE_SPI3_MOSI_BIT_FULL 12 +#else +#error "Invalid SPI3_MOSI Pin Configuration!" +#endif + +// + +#if (RTE_SPI3_REMAP) +#define RTE_SPI3_AF_REMAP AFIO_SPI3_REMAP +#define RTE_SPI3_SCK_PORT RTE_SPI3_SCK_PORT_FULL +#define RTE_SPI3_SCK_BIT RTE_SPI3_SCK_BIT_FULL +#define RTE_SPI3_MISO RTE_SPI3_MISO_FULL +#define RTE_SPI3_MISO_PORT RTE_SPI3_MISO_PORT_FULL +#define RTE_SPI3_MISO_BIT RTE_SPI3_MISO_BIT_FULL +#define RTE_SPI3_MOSI RTE_SPI3_MOSI_FULL +#define RTE_SPI3_MOSI_PORT RTE_SPI3_MOSI_PORT_FULL +#define RTE_SPI3_MOSI_BIT RTE_SPI3_MOSI_BIT_FULL +#else +#define RTE_SPI3_AF_REMAP AFIO_SPI3_NO_REMAP +#define RTE_SPI3_SCK_PORT RTE_SPI3_SCK_PORT_DEF +#define RTE_SPI3_SCK_BIT RTE_SPI3_SCK_BIT_DEF +#define RTE_SPI3_MISO RTE_SPI3_MISO_DEF +#define RTE_SPI3_MISO_PORT RTE_SPI3_MISO_PORT_DEF +#define RTE_SPI3_MISO_BIT RTE_SPI3_MISO_BIT_DEF +#define RTE_SPI3_MOSI RTE_SPI3_MOSI_DEF +#define RTE_SPI3_MOSI_PORT RTE_SPI3_MOSI_PORT_DEF +#define RTE_SPI3_MOSI_BIT RTE_SPI3_MOSI_BIT_DEF +#endif + +// DMA Rx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <1=>1 +// Selects DMA Channel (only Channel 1 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI3_RX_DMA 0 +#define RTE_SPI3_RX_DMA_NUMBER 2 +#define RTE_SPI3_RX_DMA_CHANNEL 1 +#define RTE_SPI3_RX_DMA_PRIORITY 0 + +// DMA Tx +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <2=>2 +// Selects DMA Channel (only Channel 2 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SPI3_TX_DMA 0 +#define RTE_SPI3_TX_DMA_NUMBER 2 +#define RTE_SPI3_TX_DMA_CHANNEL 2 +#define RTE_SPI3_TX_DMA_PRIORITY 0 + +// + + +// SDIO (Secure Digital Input/Output) [Driver_MCI0] +// Configuration settings for Driver_MCI0 in component ::CMSIS Driver:MCI +#define RTE_SDIO 0 + +// SDIO Peripheral Bus +// SDIO_CK Pin <0=>PC12 +#define RTE_SDIO_CK_PORT_ID 0 +#if (RTE_SDIO_CK_PORT_ID == 0) + #define RTE_SDIO_CK_PORT GPIOC + #define RTE_SDIO_CK_PIN 12 +#else + #error "Invalid SDIO_CLK Pin Configuration!" +#endif +// SDIO_CMD Pin <0=>PD2 +#define RTE_SDIO_CMD_PORT_ID 0 +#if (RTE_SDIO_CMD_PORT_ID == 0) + #define RTE_SDIO_CMD_PORT GPIOD + #define RTE_SDIO_CMD_PIN 2 +#else + #error "Invalid SDIO_CMD Pin Configuration!" +#endif +// SDIO_D0 Pin <0=>PC8 +#define RTE_SDIO_D0_PORT_ID 0 +#if (RTE_SDIO_D0_PORT_ID == 0) + #define RTE_SDIO_D0_PORT GPIOC + #define RTE_SDIO_D0_PIN 8 +#else + #error "Invalid SDIO_DAT0 Pin Configuration!" +#endif +// SDIO_D[1 .. 3] +#define RTE_SDIO_BUS_WIDTH_4 1 +// SDIO_D1 Pin <0=>PC9 +#define RTE_SDIO_D1_PORT_ID 0 +#if (RTE_SDIO_D1_PORT_ID == 0) + #define RTE_SDIO_D1_PORT GPIOC + #define RTE_SDIO_D1_PIN 9 +#else + #error "Invalid SDIO_D1 Pin Configuration!" +#endif +// SDIO_D2 Pin <0=>PC10 +#define RTE_SDIO_D2_PORT_ID 0 +#if (RTE_SDIO_D2_PORT_ID == 0) + #define RTE_SDIO_D2_PORT GPIOC + #define RTE_SDIO_D2_PIN 10 +#else + #error "Invalid SDIO_D2 Pin Configuration!" +#endif +// SDIO_D3 Pin <0=>PC11 +#define RTE_SDIO_D3_PORT_ID 0 +#if (RTE_SDIO_D3_PORT_ID == 0) + #define RTE_SDIO_D3_PORT GPIOC + #define RTE_SDIO_D3_PIN 11 +#else + #error "Invalid SDIO_D3 Pin Configuration!" +#endif +// SDIO_D[1 .. 3] +// SDIO_D[4 .. 7] +#define RTE_SDIO_BUS_WIDTH_8 0 +// SDIO_D4 Pin <0=>PB8 +#define RTE_SDIO_D4_PORT_ID 0 +#if (RTE_SDIO_D4_PORT_ID == 0) + #define RTE_SDIO_D4_PORT GPIOB + #define RTE_SDIO_D4_PIN 8 +#else + #error "Invalid SDIO_D4 Pin Configuration!" +#endif +// SDIO_D5 Pin <0=>PB9 +#define RTE_SDIO_D5_PORT_ID 0 +#if (RTE_SDIO_D5_PORT_ID == 0) + #define RTE_SDIO_D5_PORT GPIOB + #define RTE_SDIO_D5_PIN 9 +#else + #error "Invalid SDIO_D5 Pin Configuration!" +#endif +// SDIO_D6 Pin <0=>PC6 +#define RTE_SDIO_D6_PORT_ID 0 +#if (RTE_SDIO_D6_PORT_ID == 0) + #define RTE_SDIO_D6_PORT GPIOC + #define RTE_SDIO_D6_PIN 6 +#else + #error "Invalid SDIO_D6 Pin Configuration!" +#endif +// SDIO_D7 Pin <0=>PC7 +#define RTE_SDIO_D7_PORT_ID 0 +#if (RTE_SDIO_D7_PORT_ID == 0) + #define RTE_SDIO_D7_PORT GPIOC + #define RTE_SDIO_D7_PIN 7 +#else + #error "Invalid SDIO_D7 Pin Configuration!" +#endif +// SDIO_D[4 .. 7] +// SDIO Peripheral Bus + +// Card Detect Pin +// Configure Pin if exists +// GPIO Pxy (x = A..H, y = 0..15) or (x = I, y = 0..11) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SDIO_CD_EN 1 +#define RTE_SDIO_CD_ACTIVE 0 +#define RTE_SDIO_CD_PORT GPIO_PORT(5) +#define RTE_SDIO_CD_PIN 11 + +// Write Protect Pin +// Configure Pin if exists +// GPIO Pxy (x = A..H, y = 0..15) or (x = I, y = 0..11) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_SDIO_WP_EN 0 +#define RTE_SDIO_WP_ACTIVE 1 +#define RTE_SDIO_WP_PORT GPIO_PORT(0) +#define RTE_SDIO_WP_PIN 10 + +// DMA +// Number <2=>2 +// Selects DMA Number (only DMA2 can be used) +// Channel <4=>4 +// Selects DMA Channel (only Channel 4 can be used) +// Priority <0=>Low <1=>Medium <2=>High <3=>Very High +// Selects DMA Priority +// +#define RTE_SDIO_DMA_NUMBER 2 +#define RTE_SDIO_DMA_CHANNEL 4 +#define RTE_SDIO_DMA_PRIORITY 0 + +// + + +// CAN1 (Controller Area Network 1) [Driver_CAN1] +// Configuration settings for Driver_CAN1 in component ::CMSIS Driver:CAN +#define RTE_CAN1 0 + +// CAN1_RX Pin <0=>PA11 <1=>PB8 <2=>PD0 +#define RTE_CAN1_RX_PORT_ID 0 +#if (RTE_CAN1_RX_PORT_ID == 0) +#define RTE_CAN1_RX_PORT GPIOA +#define RTE_CAN1_RX_BIT 11 +#elif (RTE_CAN1_RX_PORT_ID == 1) +#define RTE_CAN1_RX_PORT GPIOB +#define RTE_CAN1_RX_BIT 8 +#elif (RTE_CAN1_RX_PORT_ID == 2) +#define RTE_CAN1_RX_PORT GPIOD +#define RTE_CAN1_RX_BIT 0 +#else +#error "Invalid CAN1_RX Pin Configuration!" +#endif + +// CAN1_TX Pin <0=>PA12 <1=>PB9 <2=>PD1 +#define RTE_CAN1_TX_PORT_ID 0 +#if (RTE_CAN1_TX_PORT_ID == 0) +#define RTE_CAN1_TX_PORT GPIOA +#define RTE_CAN1_TX_BIT 12 +#elif (RTE_CAN1_TX_PORT_ID == 1) +#define RTE_CAN1_TX_PORT GPIOB +#define RTE_CAN1_TX_BIT 9 +#elif (RTE_CAN1_TX_PORT_ID == 2) +#define RTE_CAN1_TX_PORT GPIOD +#define RTE_CAN1_TX_BIT 1 +#else +#error "Invalid CAN1_TX Pin Configuration!" +#endif + +// + + +// CAN2 (Controller Area Network 2) [Driver_CAN2] +// Configuration settings for Driver_CAN2 in component ::CMSIS Driver:CAN +#define RTE_CAN2 0 + +// CAN2_RX Pin <0=>PB5 <1=>PB12 +#define RTE_CAN2_RX_PORT_ID 0 +#if (RTE_CAN2_RX_PORT_ID == 0) +#define RTE_CAN2_RX_PORT GPIOB +#define RTE_CAN2_RX_BIT 5 +#elif (RTE_CAN2_RX_PORT_ID == 1) +#define RTE_CAN2_RX_PORT GPIOB +#define RTE_CAN2_RX_BIT 12 +#else +#error "Invalid CAN2_RX Pin Configuration!" +#endif + +// CAN2_TX Pin <0=>PB6 <1=>PB13 +#define RTE_CAN2_TX_PORT_ID 0 +#if (RTE_CAN2_TX_PORT_ID == 0) +#define RTE_CAN2_TX_PORT GPIOB +#define RTE_CAN2_TX_BIT 6 +#elif (RTE_CAN2_TX_PORT_ID == 1) +#define RTE_CAN2_TX_PORT GPIOB +#define RTE_CAN2_TX_BIT 13 +#else +#error "Invalid CAN2_TX Pin Configuration!" +#endif + +// + + +// ETH (Ethernet Interface) [Driver_ETH_MAC0] +// Configuration settings for Driver_ETH_MAC0 in component ::CMSIS Driver:Ethernet MAC +#define RTE_ETH 0 + +// MII (Media Independent Interface) +// Enable Media Independent Interface pin configuration +#define RTE_ETH_MII 0 + +// ETH_MII_TX_CLK Pin <0=>PC3 +#define RTE_ETH_MII_TX_CLK_PORT_ID 0 +#if (RTE_ETH_MII_TX_CLK_PORT_ID == 0) +#define RTE_ETH_MII_TX_CLK_PORT GPIOC +#define RTE_ETH_MII_TX_CLK_PIN 3 +#else +#error "Invalid ETH_MII_TX_CLK Pin Configuration!" +#endif +// ETH_MII_TXD0 Pin <0=>PB12 +#define RTE_ETH_MII_TXD0_PORT_ID 0 +#if (RTE_ETH_MII_TXD0_PORT_ID == 0) +#define RTE_ETH_MII_TXD0_PORT GPIOB +#define RTE_ETH_MII_TXD0_PIN 12 +#else +#error "Invalid ETH_MII_TXD0 Pin Configuration!" +#endif +// ETH_MII_TXD1 Pin <0=>PB13 +#define RTE_ETH_MII_TXD1_PORT_ID 0 +#if (RTE_ETH_MII_TXD1_PORT_ID == 0) +#define RTE_ETH_MII_TXD1_PORT GPIOB +#define RTE_ETH_MII_TXD1_PIN 13 +#else +#error "Invalid ETH_MII_TXD1 Pin Configuration!" +#endif +// ETH_MII_TXD2 Pin <0=>PC2 +#define RTE_ETH_MII_TXD2_PORT_ID 0 +#if (RTE_ETH_MII_TXD2_PORT_ID == 0) +#define RTE_ETH_MII_TXD2_PORT GPIOC +#define RTE_ETH_MII_TXD2_PIN 2 +#else +#error "Invalid ETH_MII_TXD2 Pin Configuration!" +#endif +// ETH_MII_TXD3 Pin <0=>PB8 +#define RTE_ETH_MII_TXD3_PORT_ID 0 +#if (RTE_ETH_MII_TXD3_PORT_ID == 0) +#define RTE_ETH_MII_TXD3_PORT GPIOB +#define RTE_ETH_MII_TXD3_PIN 8 +#else +#error "Invalid ETH_MII_TXD3 Pin Configuration!" +#endif +// ETH_MII_TX_EN Pin <0=>PB11 +#define RTE_ETH_MII_TX_EN_PORT_ID 0 +#if (RTE_ETH_MII_TX_EN_PORT_ID == 0) +#define RTE_ETH_MII_TX_EN_PORT GPIOB +#define RTE_ETH_MII_TX_EN_PIN 11 +#else +#error "Invalid ETH_MII_TX_EN Pin Configuration!" +#endif +// ETH_MII_RX_CLK Pin <0=>PA1 +#define RTE_ETH_MII_RX_CLK_PORT_ID 0 +#if (RTE_ETH_MII_RX_CLK_PORT_ID == 0) +#define RTE_ETH_MII_RX_CLK_PORT GPIOA +#define RTE_ETH_MII_RX_CLK_PIN 1 +#else +#error "Invalid ETH_MII_RX_CLK Pin Configuration!" +#endif +// ETH_MII_RXD0 Pin <0=>PC4 +#define RTE_ETH_MII_RXD0_DEF 0 + +// ETH_MII_RXD1 Pin <0=>PC5 +#define RTE_ETH_MII_RXD1_DEF 0 + +// ETH_MII_RXD2 Pin <0=>PB0 +#define RTE_ETH_MII_RXD2_DEF 0 + +// ETH_MII_RXD3 Pin <0=>PB1 <1=>PD12 +#define RTE_ETH_MII_RXD3_DEF 0 + +// ETH_MII_RX_DV Pin <0=>PA7 +#define RTE_ETH_MII_RX_DV_DEF 0 + +// ETH_MII_RX_ER Pin <0=>PB10 +#define RTE_ETH_MII_RX_ER_PORT_ID 0 +#if (RTE_ETH_MII_RX_ER_PORT_ID == 0) +#define RTE_ETH_MII_RX_ER_PORT GPIOB +#define RTE_ETH_MII_RX_ER_PIN 10 +#else +#error "Invalid ETH_MII_RX_ER Pin Configuration!" +#endif +// ETH_MII_CRS Pin <0=>PA0 +#define RTE_ETH_MII_CRS_PORT_ID 0 +#if (RTE_ETH_MII_CRS_PORT_ID == 0) +#define RTE_ETH_MII_CRS_PORT GPIOA +#define RTE_ETH_MII_CRS_PIN 0 +#else +#error "Invalid ETH_MII_CRS Pin Configuration!" +#endif +// ETH_MII_COL Pin <0=>PA3 +#define RTE_ETH_MII_COL_PORT_ID 0 +#if (RTE_ETH_MII_COL_PORT_ID == 0) +#define RTE_ETH_MII_COL_PORT GPIOA +#define RTE_ETH_MII_COL_PIN 3 +#else +#error "Invalid ETH_MII_COL Pin Configuration!" +#endif + +// Ethernet MAC I/O remapping +// Remap Ethernet pins +#define RTE_ETH_MII_REMAP 0 + +// ETH_MII_RXD0 Pin <1=>PD9 +#define RTE_ETH_MII_RXD0_REMAP 1 + +// ETH_MII_RXD1 Pin <1=>PD10 +#define RTE_ETH_MII_RXD1_REMAP 1 + +// ETH_MII_RXD2 Pin <1=>PD11 +#define RTE_ETH_MII_RXD2_REMAP 1 + +// ETH_MII_RXD3 Pin <1=>PD12 +#define RTE_ETH_MII_RXD3_REMAP 1 + +// ETH_MII_RX_DV Pin <1=>PD8 +#define RTE_ETH_MII_RX_DV_REMAP 1 +// + +// + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD0_DEF == 0)) +#define RTE_ETH_MII_RXD0_PORT GPIOC +#define RTE_ETH_MII_RXD0_PIN 4 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD0_REMAP == 1)) +#define RTE_ETH_MII_RXD0_PORT GPIOD +#define RTE_ETH_MII_RXD0_PIN 9 +#else +#error "Invalid ETH_MII_RXD0 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD1_DEF == 0)) +#define RTE_ETH_MII_RXD1_PORT GPIOC +#define RTE_ETH_MII_RXD1_PIN 5 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD1_REMAP == 1)) +#define RTE_ETH_MII_RXD1_PORT GPIOD +#define RTE_ETH_MII_RXD1_PIN 10 +#else +#error "Invalid ETH_MII_RXD1 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD2_DEF == 0)) +#define RTE_ETH_MII_RXD2_PORT GPIOB +#define RTE_ETH_MII_RXD2_PIN 0 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD2_REMAP == 1)) +#define RTE_ETH_MII_RXD2_PORT GPIOD +#define RTE_ETH_MII_RXD2_PIN 11 +#else +#error "Invalid ETH_MII_RXD2 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RXD3_DEF == 0)) +#define RTE_ETH_MII_RXD3_PORT GPIOB +#define RTE_ETH_MII_RXD3_PIN 1 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RXD3_REMAP == 1)) +#define RTE_ETH_MII_RXD3_PORT GPIOD +#define RTE_ETH_MII_RXD3_PIN 12 +#else +#error "Invalid ETH_MII_RXD3 Pin Configuration!" +#endif + +#if ((RTE_ETH_MII_REMAP == 0) && (RTE_ETH_MII_RX_DV_DEF == 0)) +#define RTE_ETH_MII_RX_DV_PORT GPIOA +#define RTE_ETH_MII_RX_DV_PIN 7 +#elif ((RTE_ETH_MII_REMAP == 1) && (RTE_ETH_MII_RX_DV_REMAP == 1)) +#define RTE_ETH_MII_RX_DV_PORT GPIOD +#define RTE_ETH_MII_RX_DV_PIN 8 +#else +#error "Invalid ETH_MII_RX_DV Pin Configuration!" +#endif + +// RMII (Reduced Media Independent Interface) +#define RTE_ETH_RMII 0 + +// ETH_RMII_TXD0 Pin <0=>PB12 +#define RTE_ETH_RMII_TXD0_PORT_ID 0 +#if (RTE_ETH_RMII_TXD0_PORT_ID == 0) +#define RTE_ETH_RMII_TXD0_PORT GPIOB +#define RTE_ETH_RMII_TXD0_PIN 12 +#else +#error "Invalid ETH_RMII_TXD0 Pin Configuration!" +#endif +// ETH_RMII_TXD1 Pin <0=>PB13 +#define RTE_ETH_RMII_TXD1_PORT_ID 0 +#if (RTE_ETH_RMII_TXD1_PORT_ID == 0) +#define RTE_ETH_RMII_TXD1_PORT GPIOB +#define RTE_ETH_RMII_TXD1_PIN 13 +#else +#error "Invalid ETH_RMII_TXD1 Pin Configuration!" +#endif +// ETH_RMII_TX_EN Pin <0=>PB11 +#define RTE_ETH_RMII_TX_EN_PORT_ID 0 +#if (RTE_ETH_RMII_TX_EN_PORT_ID == 0) +#define RTE_ETH_RMII_TX_EN_PORT GPIOB +#define RTE_ETH_RMII_TX_EN_PIN 11 +#else +#error "Invalid ETH_RMII_TX_EN Pin Configuration!" +#endif +// ETH_RMII_RXD0 Pin <0=>PC4 +#define RTE_ETH_RMII_RXD0_DEF 0 + +// ETH_RMII_RXD1 Pin <0=>PC5 +#define RTE_ETH_RMII_RXD1_DEF 0 + +// ETH_RMII_REF_CLK Pin <0=>PA1 +#define RTE_ETH_RMII_REF_CLK_PORT_ID 0 +#if (RTE_ETH_RMII_REF_CLK_PORT_ID == 0) +#define RTE_ETH_RMII_REF_CLK_PORT GPIOA +#define RTE_ETH_RMII_REF_CLK_PIN 1 +#else +#error "Invalid ETH_RMII_REF_CLK Pin Configuration!" +#endif +// ETH_RMII_CRS_DV Pin <0=>PA7 +#define RTE_ETH_RMII_CRS_DV_DEF 0 + +// Ethernet MAC I/O remapping +// Remap Ethernet pins +#define RTE_ETH_RMII_REMAP 0 +// ETH_RMII_RXD0 Pin <1=>PD9 +#define RTE_ETH_RMII_RXD0_REMAP 1 + +// ETH_RMII_RXD1 Pin <1=>PD10 +#define RTE_ETH_RMII_RXD1_REMAP 1 + +// ETH_RMII_CRS_DV Pin <1=>PD8 +#define RTE_ETH_RMII_CRS_DV_REMAP 1 +// + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_RXD0_DEF == 0)) +#define RTE_ETH_RMII_RXD0_PORT GPIOC +#define RTE_ETH_RMII_RXD0_PIN 4 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_RXD0_REMAP == 1)) +#define RTE_ETH_RMII_RXD0_PORT GPIOD +#define RTE_ETH_RMII_RXD0_PIN 9 +#else +#error "Invalid ETH_RMII_RXD0 Pin Configuration!" +#endif + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_RXD1_DEF == 0)) +#define RTE_ETH_RMII_RXD1_PORT GPIOC +#define RTE_ETH_RMII_RXD1_PIN 5 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_RXD1_REMAP == 1)) +#define RTE_ETH_RMII_RXD1_PORT GPIOD +#define RTE_ETH_RMII_RXD1_PIN 10 +#else +#error "Invalid ETH_RMII_RXD1 Pin Configuration!" +#endif + +#if ((RTE_ETH_RMII_REMAP == 0) && (RTE_ETH_RMII_CRS_DV_DEF == 0)) +#define RTE_ETH_RMII_CRS_DV_PORT GPIOA +#define RTE_ETH_RMII_CRS_DV_PIN 7 +#elif ((RTE_ETH_RMII_REMAP == 1) && (RTE_ETH_RMII_CRS_DV_REMAP == 1)) +#define RTE_ETH_RMII_CRS_DV_PORT GPIOD +#define RTE_ETH_RMII_CRS_DV_PIN 8 +#else +#error "Invalid ETH_RMII_CRS_DV Pin Configuration!" +#endif + +// + +// Management Data Interface +// ETH_MDC Pin <0=>PC1 +#define RTE_ETH_MDI_MDC_PORT_ID 0 +#if (RTE_ETH_MDI_MDC_PORT_ID == 0) +#define RTE_ETH_MDI_MDC_PORT GPIOC +#define RTE_ETH_MDI_MDC_PIN 1 +#else +#error "Invalid ETH_MDC Pin Configuration!" +#endif +// ETH_MDIO Pin <0=>PA2 +#define RTE_ETH_MDI_MDIO_PORT_ID 0 +#if (RTE_ETH_MDI_MDIO_PORT_ID == 0) +#define RTE_ETH_MDI_MDIO_PORT GPIOA +#define RTE_ETH_MDI_MDIO_PIN 2 +#else +#error "Invalid ETH_MDIO Pin Configuration!" +#endif +// + +// Reference 25MHz Clock generation on MCO pin <0=>Disabled <1=>Enabled +#define RTE_ETH_REF_CLOCK_ID 0 +#if (RTE_ETH_REF_CLOCK_ID == 0) +#define RTE_ETH_REF_CLOCK 0 +#elif (RTE_ETH_REF_CLOCK_ID == 1) +#define RTE_ETH_REF_CLOCK 1 +#else +#error "Invalid MCO Ethernet Reference Clock Configuration!" +#endif +// + + +// USB Device Full-speed +// Configuration settings for Driver_USBD0 in component ::Drivers:USB Device +#define RTE_USB_DEVICE 0 + +// CON On/Off Pin +// Configure Pin for driving D+ pull-up +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_USB_DEVICE_CON_PIN 1 +#define RTE_USB_DEVICE_CON_ACTIVE 0 +#define RTE_USB_DEVICE_CON_PORT GPIO_PORT(1) +#define RTE_USB_DEVICE_CON_BIT 14 + +// + + +// USB OTG Full-speed +#define RTE_USB_OTG_FS 0 + +// Host [Driver_USBH0] +// Configuration settings for Driver_USBH0 in component ::Drivers:USB Host + +#define RTE_USB_OTG_FS_HOST 0 + +// VBUS Power On/Off Pin +// Configure Pin for driving VBUS +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_OTG_FS_VBUS_PIN 1 +#define RTE_OTG_FS_VBUS_ACTIVE 0 +#define RTE_OTG_FS_VBUS_PORT GPIO_PORT(2) +#define RTE_OTG_FS_VBUS_BIT 9 + +// Overcurrent Detection Pin +// Configure Pin for overcurrent detection +// GPIO Pxy (x = A..G, y = 0..15) +// Active State <0=>Low <1=>High +// Selects Active State Logical Level +// Port <0=>GPIOA <1=>GPIOB <2=>GPIOC <3=>GPIOD +// <4=>GPIOE <5=>GPIOF <6=>GPIOG +// Selects Port Name +// Bit <0-15> +// Selects Port Bit +// +#define RTE_OTG_FS_OC_PIN 1 +#define RTE_OTG_FS_OC_ACTIVE 0 +#define RTE_OTG_FS_OC_PORT GPIO_PORT(4) +#define RTE_OTG_FS_OC_BIT 1 +// + +// + + +#endif /* __RTE_DEVICE_H */ diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf b/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf new file mode 100644 index 0000000..9c4804d --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf @@ -0,0 +1,36 @@ +// File: STM32F101_102_103_105_107.dbgconf +// Version: 1.0.0 +// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008) +// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets + +// <<< Use Configuration Wizard in Context Menu >>> + +// Debug MCU configuration register (DBGMCU_CR) +// Reserved bits must be kept at reset value +// DBG_TIM11_STOP TIM11 counter stopped when core is halted +// DBG_TIM10_STOP TIM10 counter stopped when core is halted +// DBG_TIM9_STOP TIM9 counter stopped when core is halted +// DBG_TIM14_STOP TIM14 counter stopped when core is halted +// DBG_TIM13_STOP TIM13 counter stopped when core is halted +// DBG_TIM12_STOP TIM12 counter stopped when core is halted +// DBG_CAN2_STOP Debug CAN2 stopped when core is halted +// DBG_TIM7_STOP TIM7 counter stopped when core is halted +// DBG_TIM6_STOP TIM6 counter stopped when core is halted +// DBG_TIM5_STOP TIM5 counter stopped when core is halted +// DBG_TIM8_STOP TIM8 counter stopped when core is halted +// DBG_I2C2_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C1_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_CAN1_STOP Debug CAN1 stopped when Core is halted +// DBG_TIM4_STOP TIM4 counter stopped when core is halted +// DBG_TIM3_STOP TIM3 counter stopped when core is halted +// DBG_TIM2_STOP TIM2 counter stopped when core is halted +// DBG_TIM1_STOP TIM1 counter stopped when core is halted +// DBG_WWDG_STOP Debug window watchdog stopped when core is halted +// DBG_IWDG_STOP Debug independent watchdog stopped when core is halted +// DBG_STANDBY Debug standby mode +// DBG_STOP Debug stop mode +// DBG_SLEEP Debug sleep mode +// +DbgMCU_CR = 0x00000007; + +// <<< end of configuration section >>> diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf.base@1.0.0 b/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf.base@1.0.0 new file mode 100644 index 0000000..9c4804d --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/STM32F101_102_103_105_107.dbgconf.base@1.0.0 @@ -0,0 +1,36 @@ +// File: STM32F101_102_103_105_107.dbgconf +// Version: 1.0.0 +// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008) +// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets + +// <<< Use Configuration Wizard in Context Menu >>> + +// Debug MCU configuration register (DBGMCU_CR) +// Reserved bits must be kept at reset value +// DBG_TIM11_STOP TIM11 counter stopped when core is halted +// DBG_TIM10_STOP TIM10 counter stopped when core is halted +// DBG_TIM9_STOP TIM9 counter stopped when core is halted +// DBG_TIM14_STOP TIM14 counter stopped when core is halted +// DBG_TIM13_STOP TIM13 counter stopped when core is halted +// DBG_TIM12_STOP TIM12 counter stopped when core is halted +// DBG_CAN2_STOP Debug CAN2 stopped when core is halted +// DBG_TIM7_STOP TIM7 counter stopped when core is halted +// DBG_TIM6_STOP TIM6 counter stopped when core is halted +// DBG_TIM5_STOP TIM5 counter stopped when core is halted +// DBG_TIM8_STOP TIM8 counter stopped when core is halted +// DBG_I2C2_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C1_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_CAN1_STOP Debug CAN1 stopped when Core is halted +// DBG_TIM4_STOP TIM4 counter stopped when core is halted +// DBG_TIM3_STOP TIM3 counter stopped when core is halted +// DBG_TIM2_STOP TIM2 counter stopped when core is halted +// DBG_TIM1_STOP TIM1 counter stopped when core is halted +// DBG_WWDG_STOP Debug window watchdog stopped when core is halted +// DBG_IWDG_STOP Debug independent watchdog stopped when core is halted +// DBG_STANDBY Debug standby mode +// DBG_STOP Debug stop mode +// DBG_SLEEP Debug sleep mode +// +DbgMCU_CR = 0x00000007; + +// <<< end of configuration section >>> diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s b/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s new file mode 100644 index 0000000..3db5920 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s @@ -0,0 +1,308 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.1 +;* Date : 08-September-2021 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +;* +;* Copyright (c) 2011 STMicroelectronics. +;* All rights reserved. +;* +;* This software is licensed under terms that can be found in the LICENSE file +;* in the root directory of this software component. +;* If no LICENSE file comes with this software, it is provided AS-IS. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + IMPORT SystemInit + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s.base@1.0.1 b/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s.base@1.0.1 new file mode 100644 index 0000000..3db5920 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/startup_stm32f10x_md.s.base@1.0.1 @@ -0,0 +1,308 @@ +;******************** (C) COPYRIGHT 2011 STMicroelectronics ******************** +;* File Name : startup_stm32f10x_md.s +;* Author : MCD Application Team +;* Version : V3.5.1 +;* Date : 08-September-2021 +;* Description : STM32F10x Medium Density Devices vector table for MDK-ARM +;* toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +;* +;* Copyright (c) 2011 STMicroelectronics. +;* All rights reserved. +;* +;* This software is licensed under terms that can be found in the LICENSE file +;* in the root directory of this software component. +;* If no LICENSE file comes with this software, it is provided AS-IS. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + IMPORT SystemInit + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTCAlarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTCAlarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c b/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c new file mode 100644 index 0000000..3301967 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c @@ -0,0 +1,1092 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.c + * @author MCD Application Team + * @version V3.5.1 + * @date 08-September-2021 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f10x_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f10x_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 3. If the system clock source selected by user fails to startup, the SystemInit() + * function will do nothing and HSI still used as system clock source. User can + * add some code to deal with this issue inside the SetSysClock() function. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file. + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2011 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** @addtogroup STM32F10x_System_Private_Includes + * @{ + */ + +#include "stm32f10x.h" + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Defines + * @{ + */ + +/*!< Uncomment the line corresponding to the desired System clock (SYSCLK) + frequency (after reset the HSI is used as SYSCLK source) + + IMPORTANT NOTE: + ============== + 1. After each device reset the HSI is used as System clock source. + + 2. Please make sure that the selected System clock doesn't exceed your device's + maximum frequency. + + 3. If none of the define below is enabled, the HSI is used as System clock + source. + + 4. The System clock configuration functions provided within this file assume that: + - For Low, Medium and High density Value line devices an external 8MHz + crystal is used to drive the System clock. + - For Low, Medium and High density devices an external 8MHz crystal is + used to drive the System clock. + - For Connectivity line devices an external 25MHz crystal is used to drive + the System clock. + If you are using different crystal you have to adapt those functions accordingly. + */ + +#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ + #define SYSCLK_FREQ_24MHz 24000000 +#else +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ +/* #define SYSCLK_FREQ_24MHz 24000000 */ +/* #define SYSCLK_FREQ_36MHz 36000000 */ +/* #define SYSCLK_FREQ_48MHz 48000000 */ +/* #define SYSCLK_FREQ_56MHz 56000000 */ +#define SYSCLK_FREQ_72MHz 72000000 +#endif + +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM3210E-EVAL board (STM32 High density and XL-density devices) or on + STM32100E-EVAL board (STM32 High-density value line devices) as data memory */ +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) +/* #define DATA_IN_ExtSRAM */ +#endif + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#ifdef SYSCLK_FREQ_HSE + uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_24MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_36MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */ +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE + static void SetSysClockToHSE(void); +#elif defined SYSCLK_FREQ_24MHz + static void SetSysClockTo24(void); +#elif defined SYSCLK_FREQ_36MHz + static void SetSysClockTo36(void); +#elif defined SYSCLK_FREQ_48MHz + static void SetSysClockTo48(void); +#elif defined SYSCLK_FREQ_56MHz + static void SetSysClockTo56(void); +#elif defined SYSCLK_FREQ_72MHz + static void SetSysClockTo72(void); +#endif + +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#ifndef STM32F10X_CL + RCC->CFGR &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR &= (uint32_t)0xF0FF0000; +#endif /* STM32F10X_CL */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + +#ifdef STM32F10X_CL + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= (uint32_t)0xEBFFFFFF; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ + /* Configure the Flash Latency cycles and enable prefetch buffer */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0; + +#ifdef STM32F10X_CL + uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + uint32_t prediv1factor = 0; +#endif /* STM32F10X_LD_VL or STM32F10X_MD_VL or STM32F10X_HD_VL */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#ifndef STM32F10X_CL + pllmull = ( pllmull >> 18) + 2; + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + { + #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18; + + if (pllmull != 0x0D) + { + pllmull += 2; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13 / 2; + } + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + + if (prediv1source == 0) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F10X_CL */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * @param None + * @retval None + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_24MHz + SetSysClockTo24(); +#elif defined SYSCLK_FREQ_36MHz + SetSysClockTo36(); +#elif defined SYSCLK_FREQ_48MHz + SetSysClockTo48(); +#elif defined SYSCLK_FREQ_56MHz + SetSysClockTo56(); +#elif defined SYSCLK_FREQ_72MHz + SetSysClockTo72(); +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + source (default after reset) */ +} + +/** + * @brief Setup the external memory controller. Called in startup_stm32f10x.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f10x_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ +/*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114; + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0; + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BB; + GPIOD->CRH = 0xBBBBBBBB; + + GPIOE->CRL = 0xB44444BB; + GPIOE->CRH = 0xBBBBBBBB; + + GPIOF->CRL = 0x44BBBBBB; + GPIOF->CRH = 0xBBBB4444; + + GPIOG->CRL = 0x44BBBBBB; + GPIOG->CRH = 0x44444B44; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4] = 0x00001011; + FSMC_Bank1->BTCR[5] = 0x00000200; +} +#endif /* DATA_IN_ExtSRAM */ + +#ifdef SYSCLK_FREQ_HSE +/** + * @brief Selects HSE as System clock source and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + +#ifndef STM32F10X_CL + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#else + if (HSE_VALUE <= 24000000) + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; + } + else + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + } +#endif /* STM32F10X_CL */ +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* Select HSE as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_24MHz +/** + * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo24(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); + + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_36MHz +/** + * @brief Sets System clock frequency to 36MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo36(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); + + /*!< PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + +#else + /* PLL configuration: PLLCLK = (HSE / 2) * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_48MHz +/** + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo48(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_56MHz +/** + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo56(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL7); +#else + /* PLL configuration: PLLCLK = HSE * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL7); + +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_72MHz +/** + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo72(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); +#else + /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | + RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c.base@1.0.1 b/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c.base@1.0.1 new file mode 100644 index 0000000..3301967 --- /dev/null +++ b/ProjetVoilier/RTE/Device/STM32F103RB/system_stm32f10x.c.base@1.0.1 @@ -0,0 +1,1092 @@ +/** + ****************************************************************************** + * @file system_stm32f10x.c + * @author MCD Application Team + * @version V3.5.1 + * @date 08-September-2021 + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f10x_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f10x_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 3. If the system clock source selected by user fails to startup, the SystemInit() + * function will do nothing and HSI still used as system clock source. User can + * add some code to deal with this issue inside the SetSysClock() function. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file. + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2011 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f10x_system + * @{ + */ + +/** @addtogroup STM32F10x_System_Private_Includes + * @{ + */ + +#include "stm32f10x.h" + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Defines + * @{ + */ + +/*!< Uncomment the line corresponding to the desired System clock (SYSCLK) + frequency (after reset the HSI is used as SYSCLK source) + + IMPORTANT NOTE: + ============== + 1. After each device reset the HSI is used as System clock source. + + 2. Please make sure that the selected System clock doesn't exceed your device's + maximum frequency. + + 3. If none of the define below is enabled, the HSI is used as System clock + source. + + 4. The System clock configuration functions provided within this file assume that: + - For Low, Medium and High density Value line devices an external 8MHz + crystal is used to drive the System clock. + - For Low, Medium and High density devices an external 8MHz crystal is + used to drive the System clock. + - For Connectivity line devices an external 25MHz crystal is used to drive + the System clock. + If you are using different crystal you have to adapt those functions accordingly. + */ + +#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ + #define SYSCLK_FREQ_24MHz 24000000 +#else +/* #define SYSCLK_FREQ_HSE HSE_VALUE */ +/* #define SYSCLK_FREQ_24MHz 24000000 */ +/* #define SYSCLK_FREQ_36MHz 36000000 */ +/* #define SYSCLK_FREQ_48MHz 48000000 */ +/* #define SYSCLK_FREQ_56MHz 56000000 */ +#define SYSCLK_FREQ_72MHz 72000000 +#endif + +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM3210E-EVAL board (STM32 High density and XL-density devices) or on + STM32100E-EVAL board (STM32 High-density value line devices) as data memory */ +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) +/* #define DATA_IN_ExtSRAM */ +#endif + +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ + + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Variables + * @{ + */ + +/******************************************************************************* +* Clock Definitions +*******************************************************************************/ +#ifdef SYSCLK_FREQ_HSE + uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_24MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_36MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */ +#else /*!< HSI Selected as System Clock source */ + uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */ +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_FunctionPrototypes + * @{ + */ + +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE + static void SetSysClockToHSE(void); +#elif defined SYSCLK_FREQ_24MHz + static void SetSysClockTo24(void); +#elif defined SYSCLK_FREQ_36MHz + static void SetSysClockTo36(void); +#elif defined SYSCLK_FREQ_48MHz + static void SetSysClockTo48(void); +#elif defined SYSCLK_FREQ_56MHz + static void SetSysClockTo56(void); +#elif defined SYSCLK_FREQ_72MHz + static void SetSysClockTo72(void); +#endif + +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ + +/** + * @} + */ + +/** @addtogroup STM32F10x_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ +#ifndef STM32F10X_CL + RCC->CFGR &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR &= (uint32_t)0xF0FF0000; +#endif /* STM32F10X_CL */ + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + +#ifdef STM32F10X_CL + /* Reset PLL2ON and PLL3ON bits */ + RCC->CR &= (uint32_t)0xEBFFFFFF; + + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x00FF0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; + + /* Reset CFGR2 register */ + RCC->CFGR2 = 0x00000000; +#else + /* Disable all interrupts and clear pending bits */ + RCC->CIR = 0x009F0000; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ + /* Configure the Flash Latency cycles and enable prefetch buffer */ + SetSysClock(); + +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0; + +#ifdef STM32F10X_CL + uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0; +#endif /* STM32F10X_CL */ + +#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + uint32_t prediv1factor = 0; +#endif /* STM32F10X_LD_VL or STM32F10X_MD_VL or STM32F10X_HD_VL */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#ifndef STM32F10X_CL + pllmull = ( pllmull >> 18) + 2; + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + { + #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18; + + if (pllmull != 0x0D) + { + pllmull += 2; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13 / 2; + } + + if (pllsource == 0x00) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1; + + if (prediv1source == 0) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F10X_CL */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * @param None + * @retval None + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_24MHz + SetSysClockTo24(); +#elif defined SYSCLK_FREQ_36MHz + SetSysClockTo36(); +#elif defined SYSCLK_FREQ_48MHz + SetSysClockTo48(); +#elif defined SYSCLK_FREQ_56MHz + SetSysClockTo56(); +#elif defined SYSCLK_FREQ_72MHz + SetSysClockTo72(); +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + source (default after reset) */ +} + +/** + * @brief Setup the external memory controller. Called in startup_stm32f10x.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f10x_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ +/*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114; + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0; + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BB; + GPIOD->CRH = 0xBBBBBBBB; + + GPIOE->CRL = 0xB44444BB; + GPIOE->CRH = 0xBBBBBBBB; + + GPIOF->CRL = 0x44BBBBBB; + GPIOF->CRH = 0xBBBB4444; + + GPIOG->CRL = 0x44BBBBBB; + GPIOG->CRH = 0x44444B44; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4] = 0x00001011; + FSMC_Bank1->BTCR[5] = 0x00000200; +} +#endif /* DATA_IN_ExtSRAM */ + +#ifdef SYSCLK_FREQ_HSE +/** + * @brief Selects HSE as System clock source and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + +#ifndef STM32F10X_CL + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#else + if (HSE_VALUE <= 24000000) + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; + } + else + { + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + } +#endif /* STM32F10X_CL */ +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + + /* Select HSE as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_24MHz +/** + * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo24(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { +#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 0 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0; +#endif + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); + + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } +#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: = (HSE / 2) * 6 = 24 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_36MHz +/** + * @brief Sets System clock frequency to 36MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo36(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); + + /*!< PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 10 = 4 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV10); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + +#else + /* PLL configuration: PLLCLK = (HSE / 2) * 9 = 36 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#elif defined SYSCLK_FREQ_48MHz +/** + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo48(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 1 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL6); +#else + /* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_56MHz +/** + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo56(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL7); +#else + /* PLL configuration: PLLCLK = HSE * 7 = 56 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL7); + +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} + +#elif defined SYSCLK_FREQ_72MHz +/** + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 + * and PCLK1 prescalers. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +static void SetSysClockTo72(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ + /* Enable HSE */ + RCC->CR |= ((uint32_t)RCC_CR_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CR & RCC_CR_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CR & RCC_CR_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* Enable Prefetch Buffer */ + FLASH->ACR |= FLASH_ACR_PRFTBE; + + /* Flash 2 wait state */ + FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); + FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; + + + /* HCLK = SYSCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; + + /* PCLK2 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; + + /* PCLK1 = HCLK */ + RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; + +#ifdef STM32F10X_CL + /* Configure PLLs ------------------------------------------------------*/ + /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */ + /* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */ + + RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | + RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); + RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 | + RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); + + /* Enable PLL2 */ + RCC->CR |= RCC_CR_PLL2ON; + /* Wait till PLL2 is ready */ + while((RCC->CR & RCC_CR_PLL2RDY) == 0) + { + } + + + /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | + RCC_CFGR_PLLMULL9); +#else + /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | + RCC_CFGR_PLLMULL)); + RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); +#endif /* STM32F10X_CL */ + + /* Enable PLL */ + RCC->CR |= RCC_CR_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); + RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; + + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) + { + } + } + else + { /* If HSE fails to start-up, the application will have wrong clock + configuration. User can add here some code to deal with this error */ + } +} +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/ProjetVoilier/RTE/_Reel/RTE_Components.h b/ProjetVoilier/RTE/_Reel/RTE_Components.h new file mode 100644 index 0000000..f313aca --- /dev/null +++ b/ProjetVoilier/RTE/_Reel/RTE_Components.h @@ -0,0 +1,20 @@ +/* + * UVISION generated file: DO NOT EDIT! + * Generated by: uVision version 5.42.0.0 + * + * Project: 'ProjetVoilier' + * Target: 'Reel' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "stm32f10x.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/ProjetVoilier/RTE/_Simulation/RTE_Components.h b/ProjetVoilier/RTE/_Simulation/RTE_Components.h new file mode 100644 index 0000000..0ce3f00 --- /dev/null +++ b/ProjetVoilier/RTE/_Simulation/RTE_Components.h @@ -0,0 +1,20 @@ +/* + * UVISION generated file: DO NOT EDIT! + * Generated by: uVision version 5.42.0.0 + * + * Project: 'ProjetVoilier' + * Target: 'Simulation' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "stm32f10x.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/ProjetVoilier/Services/Include/Accelerometre.h b/ProjetVoilier/Services/Include/Accelerometre.h new file mode 100644 index 0000000..f2354b1 --- /dev/null +++ b/ProjetVoilier/Services/Include/Accelerometre.h @@ -0,0 +1,21 @@ +#ifndef ACC_H +#define ACC_H +#include +#include + +#define LONGUEUR_MOY 10 +#define ANGLE_LIMITE 60 // Angle ou les voiles seront lachés, SE MODIFIE + +//uint16_t moyenne[LONGUEUR_MOY]; +//uint32_t sum; +//uint16_t i; +//volatile uint32_t moy; // Volatile pour pouvoir le regarder dans Keil µVision + +void initAccelo(void); +void initLacheur(void); +uint16_t * RecupAccelo(void); +void LacheVoile(int AngelLim, uint16_t moyennen); + +//uint16_t moyenneGlissante(); +//int actualiserTableau(int i ); +#endif \ No newline at end of file diff --git a/ProjetVoilier/Services/Include/Girouette.h b/ProjetVoilier/Services/Include/Girouette.h new file mode 100644 index 0000000..04d03b3 --- /dev/null +++ b/ProjetVoilier/Services/Include/Girouette.h @@ -0,0 +1,8 @@ +#ifndef _GIROUETTE_H +#define _GIROUETTE_H +#include "stm32f10x.h" +extern void configEncoder(TIM_TypeDef * Timer); +extern int angleVent (TIM_TypeDef * Timer); +extern int vent2voile(int angle); +extern void LocaliserZero(void); +#endif diff --git a/ProjetVoilier/Services/Include/Servo.h b/ProjetVoilier/Services/Include/Servo.h new file mode 100644 index 0000000..81ace88 --- /dev/null +++ b/ProjetVoilier/Services/Include/Servo.h @@ -0,0 +1,7 @@ +#ifndef SERVO_H_ +#define SERVO_H_ +#include +void Servo_Moteur(int angle, TIM_TypeDef * Timer, int Channel); +extern void initServo(TIM_TypeDef * Timer, int Channel); + +#endif // SERVO_H_ diff --git a/ProjetVoilier/Services/Source/Accelerometre.c b/ProjetVoilier/Services/Source/Accelerometre.c new file mode 100644 index 0000000..60d7fa1 --- /dev/null +++ b/ProjetVoilier/Services/Source/Accelerometre.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include +#include +#include +#include + +void initAccelo(void) +{ + //MySPI_Init(SPI1); + + // Power_CTL register = 0x2D ? write 0x08 (MEASURE = 1) + //MySPI_Clear_NSS(); + //MySPI_Send(0x31); // DATA_FORMAT + //MySPI_Send(0b00001101); // Justify met le MSB à gauche et b0 et b1 donne une resolution de +-2g + //MySPI_Set_NSS(); + + //MySPI_Clear_NSS(); + //MySPI_Send(0x2D & 0x3F); // Écriture de l'adresse (pas de bit de read!) + //MySPI_Send(0x08); // Affectation du bit MEASURE + //MySPI_Set_NSS(); + RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // Activation de l'horloge Utiliser une service pour cela peut-être ??? + for (volatile int i = 0; i < 10000; i++); // small delay +} + +uint16_t * RecupAccelo(void) { // Recuperation des donnees de l'accelerometre + static uint16_t Messie[3]; + uint8_t buf[6]; + //MySPI_Clear_NSS(); + // Lecture multi-octet à partir de 0x32 (X0, X1, Y0, Y1, Z0 et Z1) + //MySPI_Send(0x80 | 0x40 | 0x32); // On envoie RW MB A5 ... A0 pour recuperer les données + //for (int i = 0; i < 6; i++) {buf[i] = (uint8_t)MySPI_Read();} // Lecture des 6 registres en séquenciel + //MySPI_Set_NSS(); + + // Conversion des données récupérés en uint16_t + Messie[0] = (uint16_t)(buf[1] << 8 | buf[0]); // X + Messie[1] = (uint16_t)(buf[3] << 8 | buf[2]); // Y + Messie[2] = (uint16_t)(buf[5] << 8 | buf[4]); // Z + return Messie; +} + +void initLacheur(void){ + GPIOB->CRH &= ~(0xF << (0 * 4)); + GPIOB->CRH |= (0xA << (0 * 4)); //On met GPIOB.8 en mode output 2Mhz, alternate pp + + Timer_Init(TIM4, 0xFFFF, 22); +} + +void LacheVoile(int AngelLim, uint16_t moyennen){ + volatile uint16_t Val_lim = 0x1E20 - 60*AngelLim; + if (moyennen= LONGUEUR_MOY) {i = 0;} // Géstion de la position i dans le tableau pour la moyenne glissante +// return i; +//} +//uint16_t moyenneGlissante(){ +// sum = 0; +// for (int j = 0; j < LONGUEUR_MOY; j++){sum += moyenne[j];} moy = sum / LONGUEUR_MOY; // Calcul de la moyenne glissante +// return(moy); +// } +// À faire : Gestion par interruption + diff --git a/ProjetVoilier/Services/Source/Girouette.c b/ProjetVoilier/Services/Source/Girouette.c new file mode 100644 index 0000000..398bcde --- /dev/null +++ b/ProjetVoilier/Services/Source/Girouette.c @@ -0,0 +1,61 @@ +#include "stm32f10x.h" +#include "Timer.h" +#include "DriverGPIO.h" +#include "Girouette.h" +#include "PWM.h" + +#include // Pour abs() + +#define POSITIONS (360*4) //0x5A0 + +void configEncoder(TIM_TypeDef * Timer){ + // Timer + EnableTimer(Timer); + + // Settings + Timer -> CCMR1 |= TIM_CCMR1_CC1S; // TI1FP1 mapped on TI1 + Timer -> CCMR1 |= TIM_CCMR1_CC2S; // TI1FP2 mapped on TI2 + Timer -> CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); // TI1FP1 output non-inverted + Timer -> CCMR1 &= ~(TIM_CCMR1_IC1F); // Input capture 1 filter, no filter + Timer -> CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); // TI1FP2 output non-inverted + Timer -> CCMR2 &= ~(TIM_CCMR1_IC2F); // Input capture 2 filter, no filter + Timer -> SMCR &= ~TIM_SMCR_SMS; // Reset SMS-bits + Timer -> SMCR |= TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1;// SMS = "011" + Timer -> CR1 |= TIM_CR1_CEN; // Enable counter + Timer -> ARR = 0x5A0; // Setting ARR as 1440 + + // GPIO + MyGPIO_Init(GPIOA,0,In_Floating ); // GPIOA pin 0 in mode floating TIM2_CH1 + MyGPIO_Init(GPIOA,1,In_Floating ); // GPIOA pin 1 in mode floating TIM2_CH2 + MyGPIO_Init(GPIOA,8,In_PullDown ); // GPIOA pin 8 in mode floating Index +} + + +int angleVent (TIM_TypeDef * Timer){ // Returner l'angle du vent + int angle =(((Timer -> CNT*360)/POSITIONS )); + if (angle > 180){ + angle = 360 - angle; // Pour que l'angle soit entre 0 et 180 + } + return(angle); +} + +int vent2voile(int angle){ // Conversion angle vent à angle voile + if(angle < 45){ + return 0; // Les voiles restent immobiles + } + else{ + return(2*(angle-45)/3); // Augmentation linéaire + } +} + + // Localisation de z +void LocaliserZero(void){ +int Z_trouve = 0; + while (Z_trouve != 1){ + if(MyGPIO_Read(GPIOA,8)){ // Index + TIM2 -> CNT = 0x0; // Remet angle à zero + Z_trouve = 1; + } + } +} + diff --git a/ProjetVoilier/Services/Source/Servo.c b/ProjetVoilier/Services/Source/Servo.c new file mode 100644 index 0000000..881cdf1 --- /dev/null +++ b/ProjetVoilier/Services/Source/Servo.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +void Servo_Moteur(int angle, TIM_TypeDef * Timer, int Channel){ // Controle du moteur + int dutyCycle = (5* angle + 5*90)/90; // 5-10 % Duty Cycle + Set_DutyCycle_PWM(Timer, Channel, dutyCycle); +} + +void initServo(TIM_TypeDef * Timer, int Channel){ // Config du moteur servo + if (Timer == TIM4) { + Timer_Init(TIM4, 0xFFFF, 22); // Pour obtenir un période de 20 ms + + if (Channel == 3){ + MyGPIO_Init(GPIOB, 8, AltOut_Ppull); // Outut push pull alternate + MyTimer_PWM(TIM4, 3); //TIM4 CH3 pour PB8 + } + else{ + //printf("Cet pilôte n'existe pas"); + } + } + else{ + //printf("Cet pilôte n'existe pas"); + } +} + diff --git a/ProjetVoilier/Services/null b/ProjetVoilier/Services/null deleted file mode 100644 index e69de29..0000000