diff --git a/Inc/traitement.h b/Inc/traitement.h
index e075d0f5dcb23751c3a3e257dc677afc995b5766..83754f07a67655dcae2339088b1a77845221f7ca 100644
--- a/Inc/traitement.h
+++ b/Inc/traitement.h
@@ -17,6 +17,14 @@
 #include "robot_configuration.h"
 #include "pid.h"
 
+/*decrit si on est en mode visee automatique ou manuelle*/
+enum mode_assistance_ai_t{
+	automatique, manuel
+};
+
+/*change le mode d'assisatance AI pour la visee*/
+void switch_assistance_ai(void);
+
 /* Calcul les pids de tous les moteurs (calcul des commandes en fonction des consignes */
 void traitement_pids_compute(void);
 
@@ -24,4 +32,8 @@ void traitement_pids_compute(void);
 void traitement_1(void);
 
 void chassis_consigne(double Vx, double Vy, double W);
+
+/*Effectue le suivi automatique des cibles */
+void auto_follow_target(void);
+
 #endif
diff --git a/MDK-ARM/RobotMaster_allRobots.uvoptx b/MDK-ARM/RobotMaster_allRobots.uvoptx
index f61020c55f1708836293eadfb285475d90fd1be6..c1ab07aaf12f90c5d1e3be4a9afe19db0debff08 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvoptx
+++ b/MDK-ARM/RobotMaster_allRobots.uvoptx
@@ -79,8 +79,8 @@
       </OPTFL>
       <CpuCode>18</CpuCode>
       <DebugOpt>
-        <uSim>1</uSim>
-        <uTrg>0</uTrg>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
         <sLdApp>1</sLdApp>
         <sGomain>1</sGomain>
         <sRbreak>1</sRbreak>
@@ -148,7 +148,24 @@
           <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048 -FS08000000 -FL0200000 -FP0($$Device:STM32F427IIHx$CMSIS\Flash\STM32F4xx_2048.FLM))</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>131</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>0</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>0</BreakIfRCount>
+          <Filename>../Src/main.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -525,7 +542,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -653,7 +670,7 @@
 
   <Group>
     <GroupName>Libraries</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -673,7 +690,7 @@
 
   <Group>
     <GroupName>BoardA</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -797,7 +814,7 @@
 
   <Group>
     <GroupName>Traitement</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
diff --git a/MDK-ARM/RobotMaster_allRobots.uvprojx b/MDK-ARM/RobotMaster_allRobots.uvprojx
index d819dc3d5eac172935a027cbc687c2326c0f5349..1a5ae0cb6e49d68f2b0acfe90122a657c8b88d19 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvprojx
+++ b/MDK-ARM/RobotMaster_allRobots.uvprojx
@@ -134,11 +134,11 @@
             <RunIndependent>0</RunIndependent>
             <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
             <Capability>1</Capability>
-            <DriverSelection>4107</DriverSelection>
+            <DriverSelection>4096</DriverSelection>
           </Flash1>
           <bUseTDR>1</bUseTDR>
           <Flash2>BIN\UL2CM3.DLL</Flash2>
-          <Flash3></Flash3>
+          <Flash3>"" ()</Flash3>
           <Flash4></Flash4>
           <pFcarmOut></pFcarmOut>
           <pFcarmGrp></pFcarmGrp>
@@ -339,7 +339,7 @@
               <MiscControls></MiscControls>
               <Define>USE_HAL_DRIVER,STM32F427xx,USE_HAL_DRIVER,STM32F427xx</Define>
               <Undefine></Undefine>
-              <IncludePath>../Inc;                       ../Drivers/STM32F4xx_HAL_Driver/Inc;                       ../Drivers/CMSIS/Device/ST/STM32F4xx/Include;                       ../Drivers/CMSIS/Include;      ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy</IncludePath>
+              <IncludePath>../Inc;                        ../Drivers/STM32F4xx_HAL_Driver/Inc;                        ../Drivers/CMSIS/Device/ST/STM32F4xx/Include;                        ../Drivers/CMSIS/Include;       ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
diff --git a/RobotMaster_allRobots.ioc b/RobotMaster_allRobots.ioc
index fdad20e2aa620e739cac9353cd71e3b9ffbcfb68..495d4f82b180523e25fa72365947fe331af0871b 100644
--- a/RobotMaster_allRobots.ioc
+++ b/RobotMaster_allRobots.ioc
@@ -1,414 +1,414 @@
 #MicroXplorer Configuration settings - do not modify
-Dma.USART6_TX.3.MemInc=DMA_MINC_ENABLE
-Dma.USART6_TX.3.PeriphInc=DMA_PINC_DISABLE
-PE11.GPIOParameters=GPIO_Label
-SPI1.VirtualType=VM_MASTER
-TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
-PG4.Signal=GPIO_Output
-PG8.Signal=GPIO_Output
-PG8.Locked=true
-PG4.Locked=true
-RCC.PLLCLKFreq_Value=168000000
-PG6.GPIO_Label=BOARD_LED_C
-RCC.PLLQCLKFreq_Value=84000000
-PG3.GPIOParameters=GPIO_Label
-RCC.RTCFreq_Value=32000
-PA6.GPIO_Label=OLED_Analog
-PB6.GPIO_Label=ReceiverRC_TX
-PD0.Locked=true
-PG14.GPIOParameters=GPIO_Label
-SH.S_TIM1_CH1.ConfNb=1
-USART1.IPParameters=VirtualMode,BaudRate,Parity,Mode
-PG2.GPIOParameters=GPIO_Label
-PinOutPanel.RotationAngle=0
-RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
-Dma.UART7_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-Dma.UART7_TX.6.Direction=DMA_MEMORY_TO_PERIPH
-PH5.Signal=GPIO_Output
-NVIC.CAN1_TX_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-SPI1.Direction=SPI_DIRECTION_1LINE
-RCC.APB2TimFreq_Value=168000000
-PB6.Signal=USART1_TX
-PB6.Mode=Asynchronous
-PH1/OSC_OUT.Signal=RCC_OSC_OUT
-SPI1.CalculateBaudRate=1.3125 MBits/s
-PD0.Signal=CAN1_RX
-Dma.UART8_TX.4.Priority=DMA_PRIORITY_LOW
-PE1.Signal=UART8_TX
-ProjectManager.ProjectBuild=false
-NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PB3.Mode=Simplex_Bidirectional_Master
-PD1.GPIOParameters=GPIO_Label
-PD1.GPIO_Label=CAN1_TX
-PG14.Mode=Asynchronous
-PG1.GPIOParameters=GPIO_Label
-ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.25.2
-MxDb.Version=DB.6.0.10
-PE0.GPIOParameters=GPIO_Label
-ProjectManager.BackupPrevious=false
-TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
-PG4.GPIO_Label=BOARD_LED_E
-PA8.Signal=S_TIM1_CH1
-PE1.Locked=true
-NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-ProjectManager.HalAssertFull=false
+ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_6
+ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
+ADC1.NbrOfConversionFlag=1
+ADC1.Rank-0\#ChannelRegularConversion=1
 ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
-RCC.MCO2PinFreq_Value=168000000
-CAN1.Prescaler=3
-PB9.Signal=GPIO_Output
-Mcu.Package=UFBGA176
-PG5.GPIOParameters=GPIO_Label
-VP_SYS_VS_Systick.Signal=SYS_VS_Systick
-Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Dma.UART8_TX.4.MemInc=DMA_MINC_ENABLE
-PH2.Signal=GPIO_Output
-RCC.APB2CLKDivider=RCC_HCLK_DIV2
-NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-PF14.Signal=GPIO_Output
-RCC.APB1TimFreq_Value=84000000
-NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-TIM1.Period=9999
-PB10.GPIOParameters=GPIO_Label
-NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+ADC1.master=1
+CAN1.ABOM=ENABLE
+CAN1.BS1=CAN_BS1_10TQ
+CAN1.BS2=CAN_BS2_4TQ
+CAN1.CalculateBaudRate=933333
 CAN1.CalculateTimeBit=1071.42
-ProjectManager.CustomerFirmwarePackage=
-RCC.SAI_AClocksFreq_Value=24500000
-Dma.UART7_RX.5.PeriphInc=DMA_PINC_DISABLE
 CAN1.CalculateTimeQuantum=71.42857142857143
+CAN1.IPParameters=CalculateTimeQuantum,Prescaler,BS1,BS2,ABOM,CalculateTimeBit,CalculateBaudRate
+CAN1.Prescaler=3
+Dma.Request0=USART1_RX
+Dma.Request1=USART1_TX
+Dma.Request2=USART6_RX
+Dma.Request3=USART6_TX
+Dma.Request4=UART8_TX
+Dma.Request5=UART7_RX
+Dma.Request6=UART7_TX
+Dma.RequestsNb=7
+Dma.UART7_RX.5.Direction=DMA_PERIPH_TO_MEMORY
+Dma.UART7_RX.5.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.UART7_RX.5.Instance=DMA1_Stream3
 Dma.UART7_RX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PA6.GPIOParameters=GPIO_Label
-ProjectManager.ProjectFileName=RobotMaster_allRobots.ioc
-NVIC.UART8_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-ADC1.Rank-0\#ChannelRegularConversion=1
-Mcu.PinsNb=36
+Dma.UART7_RX.5.MemInc=DMA_MINC_ENABLE
+Dma.UART7_RX.5.Mode=DMA_CIRCULAR
+Dma.UART7_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.UART7_RX.5.PeriphInc=DMA_PINC_DISABLE
+Dma.UART7_RX.5.Priority=DMA_PRIORITY_LOW
+Dma.UART7_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.UART7_TX.6.Direction=DMA_MEMORY_TO_PERIPH
+Dma.UART7_TX.6.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.UART7_TX.6.Instance=DMA1_Stream1
+Dma.UART7_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.UART7_TX.6.MemInc=DMA_MINC_ENABLE
+Dma.UART7_TX.6.Mode=DMA_NORMAL
+Dma.UART7_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
 Dma.UART7_TX.6.PeriphInc=DMA_PINC_DISABLE
-SH.ADCx_IN6.0=ADC1_IN6,IN6
-ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
-PG5.Locked=true
-Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-PG5.Signal=GPIO_Output
-PG9.Signal=USART6_RX
-PG3.Locked=true
-CAN1.IPParameters=CalculateTimeQuantum,Prescaler,BS1,BS2,ABOM,CalculateTimeBit,CalculateBaudRate
-PE1.Mode=Asynchronous
-CAN1.CalculateBaudRate=933333
-PG9.Mode=Asynchronous
-PD1.Signal=CAN1_TX
-RCC.VCOSAIOutputFreq_ValueQ=24500000
-PF14.GPIO_Label=BOARD_LED_GREEN
-NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-RCC.APB1CLKDivider=RCC_HCLK_DIV4
-UART8.VirtualMode=Asynchronous
+Dma.UART7_TX.6.Priority=DMA_PRIORITY_LOW
+Dma.UART7_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
 Dma.UART8_TX.4.Direction=DMA_MEMORY_TO_PERIPH
-PE8.Mode=Asynchronous
-Dma.UART7_RX.5.Instance=DMA1_Stream3
-Dma.USART6_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-PH4.Locked=true
+Dma.UART8_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.UART8_TX.4.Instance=DMA1_Stream0
+Dma.UART8_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.UART8_TX.4.MemInc=DMA_MINC_ENABLE
+Dma.UART8_TX.4.Mode=DMA_NORMAL
+Dma.UART8_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.UART8_TX.4.PeriphInc=DMA_PINC_DISABLE
+Dma.UART8_TX.4.Priority=DMA_PRIORITY_LOW
+Dma.UART8_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
 Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
-PE8.GPIO_Label=JETSON_TX
-PA9.Signal=S_TIM1_CH2
-Dma.UART7_RX.5.FIFOMode=DMA_FIFOMODE_DISABLE
-TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
-PB9.Locked=true
-Dma.UART7_TX.6.MemInc=DMA_MINC_ENABLE
-NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+Dma.USART1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART1_RX.0.Instance=DMA2_Stream2
+Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
+Dma.USART1_RX.0.Mode=DMA_CIRCULAR
+Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
 Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE
-PB10.Signal=GPIO_Output
-PG6.GPIOParameters=GPIO_Label
-Dma.USART6_TX.3.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW
+Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART1_TX.1.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART1_TX.1.Instance=DMA2_Stream7
 Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PE1.GPIO_Label=DEBUG_TX
-ProjectManager.LastFirmware=true
-PD1.Mode=CAN_Activate
-Dma.UART8_TX.4.PeriphInc=DMA_PINC_DISABLE
-USART1.Mode=MODE_TX_RX
-Mcu.Pin35=VP_SYS_VS_Systick
-PE8.Signal=UART7_TX
-SPI1.Mode=SPI_MODE_MASTER
-PG7.GPIO_Label=BOARD_LED_B
-Dma.UART8_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE
-Mcu.Pin30=PE11
-RCC.EthernetFreq_Value=168000000
-Mcu.Pin33=PE7
-Dma.UART7_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Mcu.Pin34=PB10
-Mcu.Pin31=PA7
-Mcu.Pin32=PF14
-NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PE7.Locked=true
-PA13.Mode=Serial_Wire
-PG14.GPIO_Label=RefereeSystem_Tx
-ProjectManager.FreePins=false
-Mcu.Pin26=PG2
-Mcu.Pin27=PG1
-RCC.RTCHSEDivFreq_Value=6000000
-Mcu.Pin24=PG4
-ProjectManager.UnderRoot=false
-Mcu.Pin25=PG3
-Mcu.Pin28=PA6
-Mcu.Pin29=PE8
-Mcu.Pin22=PG6
-Mcu.Pin23=PG5
-Mcu.Pin20=PH5
-ADC1.master=1
-Mcu.Pin21=PG7
-NVIC.ForceEnableDMAVector=true
-Dma.USART1_TX.1.Mode=DMA_NORMAL
-NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-USART1.VirtualMode=VM_ASYNC
-ProjectManager.CompilerOptimize=6
-Dma.UART8_TX.4.Instance=DMA1_Stream0
-ProjectManager.HeapSize=0x200
-Mcu.Pin15=PH0/OSC_IN
-Dma.UART7_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
-NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-Mcu.Pin16=PH3
-PH5.Locked=true
-Mcu.Pin13=PH2
-UART7.IPParameters=VirtualMode,BaudRate
-Mcu.Pin14=PA8
-Mcu.Pin19=PG8
-UART7.BaudRate=230400
-ProjectManager.ComputerToolchain=false
-Mcu.Pin17=PH1/OSC_OUT
-Mcu.Pin18=PH4
-NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
-Mcu.Pin11=PD1
-Mcu.Pin12=PA9
-PD0.GPIOParameters=GPIO_Label
-Mcu.Pin10=PG9
-PG3.GPIO_Label=BOARD_LED_F
-Dma.USART6_RX.2.PeriphInc=DMA_PINC_DISABLE
-PD1.Locked=true
-PA7.GPIOParameters=GPIO_Label
-PH2.GPIO_Label=BOARD_POWER1_CTRL
-PG7.GPIOParameters=GPIO_Label
-NVIC.CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-Mcu.Family=STM32F4
-ProjectManager.MainLocation=Src
-RCC.CortexFreq_Value=168000000
-PG6.Signal=GPIO_Output
-PG9.GPIOParameters=GPIO_Label
-ProjectManager.KeepUserCode=true
-Mcu.UserName=STM32F427IIHx
 Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE
-UART8.IPParameters=VirtualMode
-PG2.Signal=GPIO_Output
-PE11.GPIO_Label=BOARD_LED_RED
-USART1.BaudRate=100000
+Dma.USART1_TX.1.Mode=DMA_NORMAL
+Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
+Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
 Dma.USART6_RX.2.Direction=DMA_PERIPH_TO_MEMORY
-PG6.Locked=true
-PG2.Locked=true
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART6_UART_Init-USART6-false-HAL-true,8-MX_CAN1_Init-CAN1-false-HAL-true,9-MX_UART8_Init-UART8-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_UART7_Init-UART7-false-HAL-true
-PD0.GPIO_Label=CAN1_RX
-TIM1.Pulse-PWM\ Generation1\ CH1=1000
-PH5.GPIO_Label=BOARD_POWER4_CTRL
-PG5.GPIO_Label=BOARD_LED_D
-Dma.UART7_TX.6.Instance=DMA1_Stream1
+Dma.USART6_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_RX.2.Instance=DMA2_Stream1
 Dma.USART6_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PH5.GPIOParameters=GPIO_Label
-ProjectManager.StackSize=0x400
+Dma.USART6_RX.2.MemInc=DMA_MINC_ENABLE
+Dma.USART6_RX.2.Mode=DMA_CIRCULAR
+Dma.USART6_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART6_RX.2.PeriphInc=DMA_PINC_DISABLE
+Dma.USART6_RX.2.Priority=DMA_PRIORITY_LOW
+Dma.USART6_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART6_TX.3.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART6_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_TX.3.Instance=DMA2_Stream6
+Dma.USART6_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART6_TX.3.MemInc=DMA_MINC_ENABLE
+Dma.USART6_TX.3.Mode=DMA_NORMAL
 Dma.USART6_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-RCC.SAI_BClocksFreq_Value=24500000
-Mcu.IP4=RCC
-RCC.FCLKCortexFreq_Value=168000000
-Mcu.IP5=SPI1
-Mcu.IP2=DMA
-Mcu.IP3=NVIC
+Dma.USART6_TX.3.PeriphInc=DMA_PINC_DISABLE
+Dma.USART6_TX.3.Priority=DMA_PRIORITY_LOW
+Dma.USART6_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+File.Version=6
+GPIO.groupedBy=Group By Peripherals
+KeepUserPlacement=false
+Mcu.Family=STM32F4
 Mcu.IP0=ADC1
 Mcu.IP1=CAN1
-PH4.GPIOParameters=GPIO_Label
-TIM1.Prescaler=167
-Mcu.UserConstants=
-PH3.Locked=true
-Dma.USART6_TX.3.Priority=DMA_PRIORITY_LOW
-Mcu.ThirdPartyNb=0
-PH0/OSC_IN.Mode=HSE-External-Oscillator
-RCC.HCLKFreq_Value=168000000
+Mcu.IP10=USART1
+Mcu.IP11=USART6
+Mcu.IP2=DMA
+Mcu.IP3=NVIC
+Mcu.IP4=RCC
+Mcu.IP5=SPI1
+Mcu.IP6=SYS
+Mcu.IP7=TIM1
+Mcu.IP8=UART7
+Mcu.IP9=UART8
 Mcu.IPNb=12
-RCC.I2SClocksFreq_Value=192000000
-ProjectManager.PreviousToolchain=
-RCC.VcooutputI2S=192000000
-PG8.GPIOParameters=GPIO_Label
-Dma.USART6_RX.2.Instance=DMA2_Stream1
-Mcu.Pin6=PB9
-Mcu.Pin7=PB7
-Mcu.Pin8=PB6
-Mcu.Pin9=PD0
-RCC.VCOSAIOutputFreq_Value=98000000
-Dma.UART7_RX.5.MemInc=DMA_MINC_ENABLE
-RCC.AHBFreq_Value=168000000
-Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW
+Mcu.Name=STM32F427I(G-I)Hx
+Mcu.Package=UFBGA176
 Mcu.Pin0=PE1
 Mcu.Pin1=PE0
-GPIO.groupedBy=Group By Peripherals
+Mcu.Pin10=PG9
+Mcu.Pin11=PD1
+Mcu.Pin12=PA9
+Mcu.Pin13=PH2
+Mcu.Pin14=PA8
+Mcu.Pin15=PH0/OSC_IN
+Mcu.Pin16=PH3
+Mcu.Pin17=PH1/OSC_OUT
+Mcu.Pin18=PH4
+Mcu.Pin19=PG8
 Mcu.Pin2=PG14
+Mcu.Pin20=PH5
+Mcu.Pin21=PG7
+Mcu.Pin22=PG6
+Mcu.Pin23=PG5
+Mcu.Pin24=PG4
+Mcu.Pin25=PG3
+Mcu.Pin26=PG2
+Mcu.Pin27=PG1
+Mcu.Pin28=PA6
+Mcu.Pin29=PE8
 Mcu.Pin3=PB3
+Mcu.Pin30=PE11
+Mcu.Pin31=PA7
+Mcu.Pin32=PF14
+Mcu.Pin33=PE7
+Mcu.Pin34=PB10
+Mcu.Pin35=VP_SYS_VS_Systick
 Mcu.Pin4=PA14
 Mcu.Pin5=PA13
-ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_6
-RCC.HSE_VALUE=12000000
+Mcu.Pin6=PB9
+Mcu.Pin7=PB7
+Mcu.Pin8=PB6
+Mcu.Pin9=PD0
+Mcu.PinsNb=36
+Mcu.ThirdPartyNb=0
+Mcu.UserConstants=
+Mcu.UserName=STM32F427IIHx
+MxCube.Version=6.1.1
+MxDb.Version=DB.6.0.10
+NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.CAN1_TX_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA1_Stream3_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-Mcu.IP10=USART1
+NVIC.ForceEnableDMAVector=true
+NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
+NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
 NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-Mcu.IP11=USART6
-Dma.USART6_RX.2.Priority=DMA_PRIORITY_LOW
-RCC.VCOInputFreq_Value=2000000
+NVIC.UART7_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.UART8_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true
+NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+PA13.Mode=Serial_Wire
+PA13.Signal=SYS_JTMS-SWDIO
 PA14.Mode=Serial_Wire
-PE8.Locked=true
-File.Version=6
+PA14.Signal=SYS_JTCK-SWCLK
+PA6.GPIOParameters=GPIO_Label
+PA6.GPIO_Label=OLED_Analog
+PA6.Locked=true
+PA6.Signal=ADCx_IN6
+PA7.GPIOParameters=GPIO_Label
+PA7.GPIO_Label=OLED_MOSI
+PA7.Locked=true
+PA7.Mode=Simplex_Bidirectional_Master
+PA7.Signal=SPI1_MOSI
+PA8.Signal=S_TIM1_CH1
+PA9.Signal=S_TIM1_CH2
+PB10.GPIOParameters=GPIO_Label
+PB10.GPIO_Label=OLED_RST
+PB10.Locked=true
+PB10.Signal=GPIO_Output
 PB3.GPIOParameters=GPIO_Label
-PH3.GPIOParameters=GPIO_Label
-PB7.Signal=USART1_RX
-SH.ADCx_IN6.ConfNb=1
-Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
-PH1/OSC_OUT.Mode=HSE-External-Oscillator
-Dma.RequestsNb=7
+PB3.GPIO_Label=OLED_SCK
+PB3.Locked=true
+PB3.Mode=Simplex_Bidirectional_Master
+PB3.Signal=SPI1_SCK
 PB6.GPIOParameters=GPIO_Label
-Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-ProjectManager.ProjectName=RobotMaster_allRobots
-Dma.UART7_TX.6.Priority=DMA_PRIORITY_LOW
-Dma.UART7_TX.6.Mode=DMA_NORMAL
+PB6.GPIO_Label=ReceiverRC_TX
+PB6.Mode=Asynchronous
+PB6.Signal=USART1_TX
+PB7.GPIOParameters=GPIO_Label
 PB7.GPIO_Label=ReceiverRC_RX
-PA6.Signal=ADCx_IN6
-NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-PA7.Locked=true
-TIM1.Pulse-PWM\ Generation2\ CH2=1000
-USART6.VirtualMode=VM_ASYNC
-ProjectManager.ToolChainLocation=
-RCC.LSI_VALUE=32000
-Dma.UART7_TX.6.FIFOMode=DMA_FIFOMODE_DISABLE
+PB7.Mode=Asynchronous
+PB7.Signal=USART1_RX
+PB9.GPIOParameters=GPIO_Label
+PB9.GPIO_Label=OLED_DC
+PB9.Locked=true
+PB9.Signal=GPIO_Output
+PD0.GPIOParameters=GPIO_Label
+PD0.GPIO_Label=CAN1_RX
+PD0.Locked=true
+PD0.Mode=CAN_Activate
+PD0.Signal=CAN1_RX
+PD1.GPIOParameters=GPIO_Label
+PD1.GPIO_Label=CAN1_TX
+PD1.Locked=true
+PD1.Mode=CAN_Activate
+PD1.Signal=CAN1_TX
+PE0.GPIOParameters=GPIO_Label
 PE0.GPIO_Label=DEBUG_RX
-Dma.UART8_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-PH3.GPIO_Label=BOARD_POWER2_CTRL
-Dma.USART1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.USART6_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.Request2=USART6_RX
-Dma.Request1=USART1_TX
-Dma.Request4=UART8_TX
-Dma.Request3=USART6_TX
-Dma.Request6=UART7_TX
-Dma.USART1_RX.0.Mode=DMA_CIRCULAR
-Dma.Request5=UART7_RX
-Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
-NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:false\:true\:false\:true
+PE0.Locked=true
+PE0.Mode=Asynchronous
+PE0.Signal=UART8_RX
+PE1.GPIOParameters=GPIO_Label
+PE1.GPIO_Label=DEBUG_TX
+PE1.Locked=true
+PE1.Mode=Asynchronous
+PE1.Signal=UART8_TX
+PE11.GPIOParameters=GPIO_Label
+PE11.GPIO_Label=BOARD_LED_RED
+PE11.Locked=true
+PE11.Signal=GPIO_Output
+PE7.GPIOParameters=GPIO_Label
+PE7.GPIO_Label=JETSON_RX
+PE7.Locked=true
+PE7.Mode=Asynchronous
 PE7.Signal=UART7_RX
-Dma.Request0=USART1_RX
-SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
-Dma.USART1_RX.0.Instance=DMA2_Stream2
-PB3.Locked=true
-PG2.GPIO_Label=BOARD_LED_G
-Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
-PB3.GPIO_Label=OLED_SCK
-RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
-Dma.USART1_TX.1.Instance=DMA2_Stream7
 PE8.GPIOParameters=GPIO_Label
+PE8.GPIO_Label=JETSON_TX
+PE8.Locked=true
+PE8.Mode=Asynchronous
+PE8.Signal=UART7_TX
+PF14.GPIOParameters=GPIO_Label
+PF14.GPIO_Label=BOARD_LED_GREEN
+PF14.Locked=true
+PF14.Signal=GPIO_Output
+PG1.GPIOParameters=GPIO_Label
+PG1.GPIO_Label=BOARD_LED_H
+PG1.Locked=true
+PG1.Signal=GPIO_Output
+PG14.GPIOParameters=GPIO_Label
+PG14.GPIO_Label=RefereeSystem_Tx
+PG14.Mode=Asynchronous
+PG14.Signal=USART6_TX
+PG2.GPIOParameters=GPIO_Label
+PG2.GPIO_Label=BOARD_LED_G
+PG2.Locked=true
+PG2.Signal=GPIO_Output
+PG3.GPIOParameters=GPIO_Label
+PG3.GPIO_Label=BOARD_LED_F
+PG3.Locked=true
+PG3.Signal=GPIO_Output
+PG4.GPIOParameters=GPIO_Label
+PG4.GPIO_Label=BOARD_LED_E
+PG4.Locked=true
+PG4.Signal=GPIO_Output
+PG5.GPIOParameters=GPIO_Label
+PG5.GPIO_Label=BOARD_LED_D
+PG5.Locked=true
+PG5.Signal=GPIO_Output
+PG6.GPIOParameters=GPIO_Label
+PG6.GPIO_Label=BOARD_LED_C
+PG6.Locked=true
+PG6.Signal=GPIO_Output
+PG7.GPIOParameters=GPIO_Label
+PG7.GPIO_Label=BOARD_LED_B
 PG7.Locked=true
 PG7.Signal=GPIO_Output
-PA7.Mode=Simplex_Bidirectional_Master
-Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-PB9.GPIO_Label=OLED_DC
-ProjectManager.NoMain=false
-SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
-PG3.Signal=GPIO_Output
-USART6.IPParameters=VirtualMode
-PG1.Signal=GPIO_Output
-PG1.Locked=true
-Dma.UART7_RX.5.Priority=DMA_PRIORITY_LOW
-ProjectManager.DefaultFWLocation=true
-NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-ProjectManager.DeletePrevious=true
-UART7.VirtualMode=Asynchronous
-PB10.Locked=true
-Dma.USART6_TX.3.Mode=DMA_NORMAL
-PinOutPanel.CurrentBGAView=Top
-RCC.FamilyName=M
-NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-PB9.GPIOParameters=GPIO_Label
+PG8.GPIOParameters=GPIO_Label
 PG8.GPIO_Label=BOARD_LED_A
-PA13.Signal=SYS_JTMS-SWDIO
-Dma.UART7_RX.5.Mode=DMA_CIRCULAR
-SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
-PH4.Signal=GPIO_Output
-CAN1.BS2=CAN_BS2_4TQ
-CAN1.BS1=CAN_BS1_10TQ
-ProjectManager.TargetToolchain=MDK-ARM V5.27
-PB10.GPIO_Label=OLED_RST
-PE7.GPIOParameters=GPIO_Label
-Dma.USART6_RX.2.MemInc=DMA_MINC_ENABLE
-PB7.GPIOParameters=GPIO_Label
-USART1.Parity=PARITY_EVEN
-RCC.VcooutputI2SQ=192000000
-Dma.USART6_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-ProjectManager.RegisterCallBack=
-PE0.Locked=true
-Dma.USART1_TX.1.FIFOMode=DMA_FIFOMODE_DISABLE
-PH2.GPIOParameters=GPIO_Label
-PE11.Signal=GPIO_Output
-RCC.LSE_VALUE=32768
-SH.S_TIM1_CH2.ConfNb=1
-CAN1.ABOM=ENABLE
-RCC.VCOI2SOutputFreq_Value=384000000
+PG8.Locked=true
+PG8.Signal=GPIO_Output
+PG9.GPIOParameters=GPIO_Label
 PG9.GPIO_Label=RefereeSystem_Rx
-PG14.Signal=USART6_TX
-board=custom
-RCC.VCOOutputFreq_Value=336000000
-PG1.GPIO_Label=BOARD_LED_H
-PF14.GPIOParameters=GPIO_Label
-Dma.USART6_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Dma.USART6_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
-PH4.GPIO_Label=BOARD_POWER3_CTRL
-Dma.USART6_RX.2.Mode=DMA_CIRCULAR
+PG9.Mode=Asynchronous
+PG9.Signal=USART6_RX
+PH0/OSC_IN.Mode=HSE-External-Oscillator
 PH0/OSC_IN.Signal=RCC_OSC_IN
-RCC.APB2Freq_Value=84000000
-MxCube.Version=6.1.1
-PG4.GPIOParameters=GPIO_Label
-SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
-Dma.UART8_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-VP_SYS_VS_Systick.Mode=SysTick
-Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PF14.Locked=true
-RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VcooutputI2S,VcooutputI2SQ
-PE11.Locked=true
+PH1/OSC_OUT.Mode=HSE-External-Oscillator
+PH1/OSC_OUT.Signal=RCC_OSC_OUT
+PH2.GPIOParameters=GPIO_Label
+PH2.GPIO_Label=BOARD_POWER1_CTRL
+PH2.Locked=true
+PH2.Signal=GPIO_Output
+PH3.GPIOParameters=GPIO_Label
+PH3.GPIO_Label=BOARD_POWER2_CTRL
+PH3.Locked=true
+PH3.Signal=GPIO_Output
+PH4.GPIOParameters=GPIO_Label
+PH4.GPIO_Label=BOARD_POWER3_CTRL
+PH4.Locked=true
+PH4.Signal=GPIO_Output
+PH5.GPIOParameters=GPIO_Label
+PH5.GPIO_Label=BOARD_POWER4_CTRL
+PH5.Locked=true
+PH5.Signal=GPIO_Output
+PinOutPanel.CurrentBGAView=Top
+PinOutPanel.RotationAngle=0
 ProjectManager.AskForMigrate=true
-PE0.Signal=UART8_RX
-Mcu.Name=STM32F427I(G-I)Hx
-PD0.Mode=CAN_Activate
-PE7.GPIO_Label=JETSON_RX
-Mcu.IP8=UART7
-Mcu.IP9=UART8
-Dma.UART8_TX.4.Mode=DMA_NORMAL
-Mcu.IP6=SYS
-Mcu.IP7=TIM1
+ProjectManager.BackupPrevious=false
+ProjectManager.CompilerOptimize=6
+ProjectManager.ComputerToolchain=false
 ProjectManager.CoupleFile=true
+ProjectManager.CustomerFirmwarePackage=
+ProjectManager.DefaultFWLocation=true
+ProjectManager.DeletePrevious=true
+ProjectManager.DeviceId=STM32F427IIHx
+ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.25.2
+ProjectManager.FreePins=false
+ProjectManager.HalAssertFull=false
+ProjectManager.HeapSize=0x200
+ProjectManager.KeepUserCode=true
+ProjectManager.LastFirmware=true
+ProjectManager.LibraryCopy=1
+ProjectManager.MainLocation=Src
+ProjectManager.NoMain=false
+ProjectManager.PreviousToolchain=
+ProjectManager.ProjectBuild=false
+ProjectManager.ProjectFileName=RobotMaster_allRobots.ioc
+ProjectManager.ProjectName=RobotMaster_allRobots
+ProjectManager.RegisterCallBack=
+ProjectManager.StackSize=0x400
+ProjectManager.TargetToolchain=MDK-ARM V5.27
+ProjectManager.ToolChainLocation=
+ProjectManager.UnderRoot=false
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_USART1_UART_Init-USART1-false-HAL-true,7-MX_USART6_UART_Init-USART6-false-HAL-true,8-MX_CAN1_Init-CAN1-false-HAL-true,9-MX_UART8_Init-UART8-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_UART7_Init-UART7-false-HAL-true
 RCC.48MHZClocksFreq_Value=84000000
-PB3.Signal=SPI1_SCK
-RCC.SYSCLKFreq_VALUE=168000000
-PE7.Mode=Asynchronous
-PA7.GPIO_Label=OLED_MOSI
-KeepUserPlacement=false
-Dma.UART8_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PB7.Mode=Asynchronous
-Dma.UART7_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-PA14.Signal=SYS_JTCK-SWCLK
-Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
-Dma.USART6_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.USART6_TX.3.Instance=DMA2_Stream6
+RCC.AHBFreq_Value=168000000
+RCC.APB1CLKDivider=RCC_HCLK_DIV4
+RCC.APB1Freq_Value=42000000
+RCC.APB1TimFreq_Value=84000000
+RCC.APB2CLKDivider=RCC_HCLK_DIV2
+RCC.APB2Freq_Value=84000000
+RCC.APB2TimFreq_Value=168000000
+RCC.CortexFreq_Value=168000000
+RCC.EthernetFreq_Value=168000000
+RCC.FCLKCortexFreq_Value=168000000
+RCC.FamilyName=M
+RCC.HCLKFreq_Value=168000000
+RCC.HSE_VALUE=12000000
 RCC.HSI_VALUE=16000000
-PH2.Locked=true
-ADC1.NbrOfConversionFlag=1
-PH3.Signal=GPIO_Output
-Dma.UART7_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+RCC.I2SClocksFreq_Value=192000000
+RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueQ,VcooutputI2S,VcooutputI2SQ
+RCC.LSE_VALUE=32768
+RCC.LSI_VALUE=32000
+RCC.MCO2PinFreq_Value=168000000
+RCC.PLLCLKFreq_Value=168000000
 RCC.PLLM=6
 RCC.PLLN=168
-NVIC.DMA1_Stream3_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-Dma.UART7_RX.5.Direction=DMA_PERIPH_TO_MEMORY
-RCC.APB1Freq_Value=42000000
-ProjectManager.DeviceId=STM32F427IIHx
-PE0.Mode=Asynchronous
-ProjectManager.LibraryCopy=1
-PE1.GPIOParameters=GPIO_Label
-PA7.Signal=SPI1_MOSI
-NVIC.UART7_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-PA6.Locked=true
+RCC.PLLQCLKFreq_Value=84000000
+RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
+RCC.RTCFreq_Value=32000
+RCC.RTCHSEDivFreq_Value=6000000
+RCC.SAI_AClocksFreq_Value=24500000
+RCC.SAI_BClocksFreq_Value=24500000
+RCC.SYSCLKFreq_VALUE=168000000
+RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
+RCC.VCOI2SOutputFreq_Value=384000000
+RCC.VCOInputFreq_Value=2000000
+RCC.VCOOutputFreq_Value=336000000
+RCC.VCOSAIOutputFreq_Value=98000000
+RCC.VCOSAIOutputFreq_ValueQ=24500000
+RCC.VcooutputI2S=192000000
+RCC.VcooutputI2SQ=192000000
+SH.ADCx_IN6.0=ADC1_IN6,IN6
+SH.ADCx_IN6.ConfNb=1
+SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
+SH.S_TIM1_CH1.ConfNb=1
+SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
+SH.S_TIM1_CH2.ConfNb=1
+SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
+SPI1.CalculateBaudRate=1.3125 MBits/s
+SPI1.Direction=SPI_DIRECTION_1LINE
+SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
+SPI1.Mode=SPI_MODE_MASTER
+SPI1.VirtualType=VM_MASTER
+TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
+TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
+TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
+TIM1.Period=9999
+TIM1.Prescaler=167
+TIM1.Pulse-PWM\ Generation1\ CH1=1000
+TIM1.Pulse-PWM\ Generation2\ CH2=1000
+UART7.BaudRate=230400
+UART7.IPParameters=VirtualMode,BaudRate
+UART7.VirtualMode=Asynchronous
+UART8.IPParameters=VirtualMode
+UART8.VirtualMode=Asynchronous
+USART1.BaudRate=100000
+USART1.IPParameters=VirtualMode,BaudRate,Parity,Mode
+USART1.Mode=MODE_TX_RX
+USART1.Parity=PARITY_EVEN
+USART1.VirtualMode=VM_ASYNC
+USART6.IPParameters=VirtualMode
+USART6.VirtualMode=VM_ASYNC
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+board=custom
diff --git a/Src/BoardA_handle.c b/Src/BoardA_handle.c
index 627f612a8e8d1c016b1fde637527c60a15c57cf4..9912a7c5569d5768c70668de3d2a5839290bf892 100644
--- a/Src/BoardA_handle.c
+++ b/Src/BoardA_handle.c
@@ -106,14 +106,15 @@ void uart_debug(){
 		return;
 	}
 	tickstart = HAL_GetTick();
-	snprintf(buff2, 1000, "%c,teta=%d,phi=%d,d=%d                  \r", jetson.robot_target_coordinates.target_located, jetson.robot_target_coordinates.teta_target_location, jetson.robot_target_coordinates.phi_target_location, jetson.robot_target_coordinates.d_target_location);
-	HAL_UART_Transmit_DMA(&huart8, (uint8_t*)buff2, strlen(buff2));
-	/*
-	uart_debug_command("[2J"); //Clear entire screen
-	uart_debug_printf("\r\nTOURELLE YAW\r\n");
-	uart_debug_printf("\tAngle: %u (%x)\r\n", motors[TOURELLE_YAW].info.angle, motors[TOURELLE_YAW].info.angle);
-	uart_debug_
-	printf("\tSpeed: %d\r\n", motors[TOURELLE_YAW].info.speed);
+	//snprintf(buff2, 1000, "%c,teta=%d,phi=%d,d=%d                  \r", jetson.robot_target_coordinates.target_located, jetson.robot_target_coordinates.teta_target_location, jetson.robot_target_coordinates.phi_target_location, jetson.robot_target_coordinates.d_target_location);
+	//HAL_UART_Transmit_DMA(&huart8, (uint8_t*)buff2, strlen(buff2));
+	
+	//uart_debug_command("[2J"); //Clear entire screen
+	uart_debug_printf("%c,teta=%d,phi=%d,d=%d \r\n", jetson.robot_target_coordinates.target_located, jetson.robot_target_coordinates.teta_target_location, jetson.robot_target_coordinates.phi_target_location, jetson.robot_target_coordinates.d_target_location);
+	//uart_debug_printf("\r\nTOURELLE YAW\r\n");
+	//uart_debug_printf("\tAngle: %f \r\n", motors[TOURELLE_PITCH].info.angle_360);
+	//uart_debug_
+	/*printf("\tSpeed: %f\r\n", motors[TOURELLE_YAW].info.speed);
 	uart_debug_printf("\tTorque: %d\r\n", motors[TOURELLE_YAW].info.torque);
 	uart_debug_printf("\tTemperature: %d\r\n", motors[TOURELLE_YAW].info.temp);
 	uart_debug_printf("\tCommand: %f\r\n", motors[TOURELLE_YAW].command);*/
diff --git a/Src/main.c b/Src/main.c
index a3958c3baa9af0d04c9b83330170c412126531f1..2043d574e3395802b774d89b4c768cd9811110b4 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -101,7 +101,7 @@ int main(void)
   MX_UART7_Init();
   /* USER CODE BEGIN 2 */
 	PWM_init();
-	//PWM_ScaleAll(&htim1, false); //etalonnage du PWM entre 0 et 1 (a faire uniquement lors de l'installation des moteurs la 1ere fois) info: motors.c
+	//PWM_ScaleAll(&htim1, true); //etalonnage du PWM entre 0 et 1 (a faire uniquement lors de l'installation des moteurs la 1ere fois) info: motors.c
 	HAL_GPIO_WritePin(GPIOH, BOARD_POWER1_CTRL_Pin|BOARD_POWER2_CTRL_Pin|BOARD_POWER3_CTRL_Pin|BOARD_POWER4_CTRL_Pin, GPIO_PIN_SET); // switch on 24v power
 	BOARD_LED_ALL_OFF
 	oled_init();
@@ -109,7 +109,7 @@ int main(void)
 	uart6_init();
 	uart7_init();
 	can1_init();
-	robotInit(5); //Initialise le robot comme un standard, l'objectif c'est que l'initialisation de fasse par le referee system
+	robotInit(4); //Initialise le robot comme un standard, l'objectif c'est que l'initialisation de fasse par le referee system
 	extern motor_t motors[MAX_MOTORS];
 	extern pilote_t pilote;
 	extern jetson_t jetson;
diff --git a/Src/robot_configuration.c b/Src/robot_configuration.c
index b45f2333649b85da8935af39359e4b80bef10214..616e32a5a697587ac0e214b29fcdf704086ddf19 100644
--- a/Src/robot_configuration.c
+++ b/Src/robot_configuration.c
@@ -114,9 +114,9 @@ void robotInit(uint8_t robot_id){
 			motors[TOURELLE_PITCH].can_rx_id = 0x204+1; // ID = 1
 			motors[TOURELLE_PITCH].can_tx_frame = 0x1FF; 
 			motors[TOURELLE_PITCH].can_tx_id = 1;
-			motors[TOURELLE_PITCH].MIN_POSITION = 120; //en deg
-			motors[TOURELLE_PITCH].MAX_POSITION = 213; //en deg    //213 120
-			motors[TOURELLE_PITCH].consigne = 213; //en deg //Valeur initiale
+			motors[TOURELLE_PITCH].MIN_POSITION = 1; //en deg
+			motors[TOURELLE_PITCH].MAX_POSITION = 67; //en deg    //213 120
+			motors[TOURELLE_PITCH].consigne = 54; //en deg //Valeur initiale
 			motors[TOURELLE_PITCH].direction = -1; //permet de choisir la direction de controle (-1 ou 1)
 			pid_create(&motors[TOURELLE_PITCH].pid, 
 							&motors[TOURELLE_PITCH].info.angle_360, 		//input : le retour sur la quelle ont veut atteintre la consigne 
@@ -131,9 +131,9 @@ void robotInit(uint8_t robot_id){
 			motors[TOURELLE_YAW].can_rx_id = 0x204+2; // ID = 2
 			motors[TOURELLE_YAW].can_tx_frame = 0x1FF; 
 			motors[TOURELLE_YAW].can_tx_id = 2;
-			motors[TOURELLE_YAW].MIN_POSITION = 110.71; //en deg
-			motors[TOURELLE_YAW].MAX_POSITION = 308.44; //en deg
-			motors[TOURELLE_YAW].consigne = 208; //en deg //Valeur initiale
+			motors[TOURELLE_YAW].MIN_POSITION = 245; //en deg
+			motors[TOURELLE_YAW].MAX_POSITION = 359; //en deg
+			motors[TOURELLE_YAW].consigne = 325; //en deg //Valeur initiale
 			motors[TOURELLE_YAW].direction = -1; //permet de choisir la direction de controle (-1 ou 1)
 			pid_create(&motors[TOURELLE_YAW].pid, 
 							&motors[TOURELLE_YAW].info.angle_360, 		//input : le retour sur la quelle ont veut atteintre la consigne 
diff --git a/Src/traitement.c b/Src/traitement.c
index 44a760716b709e8a2eff334824aa79854282edb9..4b8ea4ef3e1ec275326e6d7e7815f4fa69992cf9 100644
--- a/Src/traitement.c
+++ b/Src/traitement.c
@@ -9,11 +9,16 @@
 #include "canon.h"
 
 #define MAX_BASE_SPEED_COEFF  10
+#define PI 3.14159265358979323846
 
 /* On récupère les variables exterieurs */
 extern receiver_RadioController_t receiver_RadioController;	
 extern motor_t motors[MAX_MOTORS];
 extern pilote_t pilote;
+extern jetson_t jetson;
+
+/*mode de controle actuel*/
+enum mode_assistance_ai_t mode_assistance_ai = automatique;
 
 /* Calcul les pids de tous les moteurs (calcul des commandes en fonction des consignes */
 void traitement_pids_compute(){
@@ -27,6 +32,7 @@ void traitement_pids_compute(){
 
 /* Fonctions qui fait les liens entre les entrées (capteurs, radio controller, CV, ...) et les sorties (consignes moteurs), on peut créer plusieurs traitements */
 void traitement_1(){
+	
 	if(receiver_RadioController.keyboard_mode){
 		double chassis_w;
 		double tourelle_yaw;
@@ -37,6 +43,11 @@ void traitement_1(){
 			chassis_w = 0;
 			tourelle_yaw = receiver_RadioController.data.mouse.x;
 		}
+		
+		/*gere l'assistance automatique*/
+		//if(receiver_RadioController.data.kb.bit.Q) switch_assistance_ai();
+		//if(mode_assistance_ai==automatique) auto_follow_target();
+		
 		add_consigne_position(&motors[TOURELLE_PITCH], receiver_RadioController.data.mouse.y, pilote.sensitivity_mouse_y);
 		add_consigne_position(&motors[TOURELLE_YAW], tourelle_yaw, pilote.sensitivity_mouse_x);
 		
@@ -52,7 +63,11 @@ void traitement_1(){
 		}else{
 			canon_shoot_end();
 		}
-	}else{		
+	}else{	
+		
+		
+		//if(mode_assistance_ai==automatique) auto_follow_target();
+		
 		add_consigne_position(&motors[TOURELLE_PITCH], receiver_RadioController.data.ch2_float, pilote.sensitivity_ch_2);
 		add_consigne_position(&motors[TOURELLE_YAW], 	receiver_RadioController.data.ch1_float, pilote.sensitivity_ch_1);
 	
@@ -69,10 +84,10 @@ void traitement_1(){
 				canon_shoot(0, 0);
 				break;
 			case 3:
-				//canon_shoot(0.40, 1000);
+				canon_shoot(0.40, 1000);
 				break;
 			case 2:
-				//canon_shoot(1, 1000);
+				canon_shoot(1, 1000);
 				break;
 		}
 		
@@ -109,3 +124,97 @@ void chassis_consigne(double Vx, double Vy, double W){
 	motors[BACK_RIGHT].consigne 	= -(sensitivity_Vx*Vx - sensitivity_Vy*Vy + sensitivity_W*W);
 	motors[BACK_LEFT].consigne 		= sensitivity_Vx*Vx + sensitivity_Vy*Vy - sensitivity_W*W; 
 }	
+
+/*change le mode de visee
+On pourrait ajouter un coefficient qui est 1 en manuel et <1 en automatique qui s'applique
+sur les consigne donnees par le pilote pour la tourelle
+*/
+void switch_assistance_ai(void){
+	switch(mode_assistance_ai){
+		case automatique : 
+			mode_assistance_ai = manuel; 
+		break;
+		case manuel : 
+			mode_assistance_ai = automatique; 
+		break;
+	}
+}
+
+/*
+Fonction qui controle la position des moteurs GM6020 de la tourelle pour que celle-ci point une cible
+*/
+void auto_follow_target(void){
+  
+	uint16_t teta,d;
+	int16_t phi;
+	uint8_t target_located;
+	
+	jetson.switch_informations.switch_target_mode = 0x72;
+	switch(jetson.switch_informations.switch_target_mode){
+		case 0x72 : 	/*Si la cible est une robot*/
+			teta = jetson.robot_target_coordinates.teta_target_location;
+			phi = jetson.robot_target_coordinates.phi_target_location;
+			d = jetson.robot_target_coordinates.d_target_location;
+			target_located = jetson.robot_target_coordinates.target_located;
+			break;
+		case 0x52 : /*Si la cible est une rune*/
+			teta = jetson.rune_target_coordinates.teta_target_location;
+			phi = jetson.rune_target_coordinates.phi_target_location;
+			d = jetson.rune_target_coordinates.d_target_location;
+	  	target_located = jetson.rune_target_coordinates.target_located;
+			break;
+	}
+	uart_debug();
+	
+			teta = jetson.robot_target_coordinates.teta_target_location;
+			phi = jetson.robot_target_coordinates.phi_target_location;
+			d = jetson.robot_target_coordinates.d_target_location;
+			target_located = jetson.robot_target_coordinates.target_located;
+	
+	if(target_located=='Y'){/*change les consignes juste si une cible est localisee*/
+		float consigne_yaw = motors[TOURELLE_YAW].consigne + phi*0.0001; 
+		float consigne_pitch = motors[TOURELLE_PITCH].consigne + teta*0.0001 - (PI/2)*1000; //1 millirad = (180/PI)/1000 degres
+		if(phi > 0){
+			consigne_yaw = motors[TOURELLE_YAW].consigne + 0.0005; 
+		}else{
+			consigne_yaw = motors[TOURELLE_YAW].consigne - 0.0005;
+		}
+		consigne_yaw = motors[TOURELLE_YAW].consigne;
+		if(teta > (PI/2)*1000){
+			consigne_pitch = motors[TOURELLE_PITCH].consigne + 0.0005; 
+		}else{
+			consigne_pitch = motors[TOURELLE_PITCH].consigne - 0.0005;
+			
+		}
+		//consigne_pitch = motors[TOURELLE_PITCH].consigne;
+		//S'assure que la consigne ne est entre 0 et 360 
+		if(consigne_yaw > 360) consigne_yaw -= (float) 360.0;
+		if(consigne_yaw < 0) 	consigne_yaw += (float) 360.0;
+	
+		if(consigne_pitch > 360) consigne_pitch -= (float) 360.0;
+		if(consigne_pitch < 0) 	consigne_pitch += (float) 360.0;
+	
+		//S'assure que la consigne respecte les limites min et max
+		if(motors[TOURELLE_YAW].MAX_POSITION > 0 && consigne_yaw > motors[TOURELLE_YAW].MAX_POSITION) {
+			consigne_yaw = motors[TOURELLE_YAW].MAX_POSITION;
+		}
+		if(motors[TOURELLE_YAW].MIN_POSITION > 0 && consigne_yaw < motors[TOURELLE_YAW].MIN_POSITION){
+			consigne_yaw = motors[TOURELLE_YAW].MIN_POSITION;
+		}
+		if(motors[TOURELLE_PITCH].MAX_POSITION > 0 && consigne_pitch > motors[TOURELLE_PITCH].MAX_POSITION){
+			consigne_pitch = motors[TOURELLE_PITCH].MAX_POSITION;
+		}
+		if(motors[TOURELLE_PITCH].MIN_POSITION > 0 && consigne_pitch < motors[TOURELLE_PITCH].MIN_POSITION){
+			consigne_pitch = motors[TOURELLE_PITCH].MIN_POSITION;
+		}
+		
+		/*
+		TODO : ajustement du "consigne_pitch" en fonction de la distance "d" de la cible
+		*/
+		
+		/*Donne la nouvelle consigne aux moteurs*/
+		motors[TOURELLE_YAW].consigne = consigne_yaw;
+		motors[TOURELLE_PITCH].consigne = consigne_pitch;
+	}
+}
+