From f7cf3dbb67a10e97faa9c977829b372bef863b9c Mon Sep 17 00:00:00 2001
From: Arthur Van Betsbrugge <avbetsbr@gmail.com>
Date: Sat, 13 Feb 2021 09:40:24 -0500
Subject: [PATCH] Ajout communication Jetson

---
 Inc/jetson.h                          |  58 +++
 Inc/main.h                            |   4 +
 Inc/stm32f4xx_it.h                    |   3 +
 Inc/traitement.h                      |   1 +
 Inc/usart.h                           |   2 +
 MDK-ARM/RobotMaster_allRobots.uvoptx  |  36 +-
 MDK-ARM/RobotMaster_allRobots.uvprojx |  32 +-
 RobotMaster_allRobots.ioc             | 711 ++++++++++++++------------
 Src/BoardA_handle.c                   |   1 +
 Src/dma.c                             |   6 +
 Src/jetson.c                          |  65 +++
 Src/main.c                            |   2 +
 Src/stm32f4xx_it.c                    |  60 +++
 Src/usart.c                           | 113 +++-
 14 files changed, 731 insertions(+), 363 deletions(-)
 create mode 100644 Inc/jetson.h
 create mode 100644 Src/jetson.c

diff --git a/Inc/jetson.h b/Inc/jetson.h
new file mode 100644
index 0000000..a4b9374
--- /dev/null
+++ b/Inc/jetson.h
@@ -0,0 +1,58 @@
+/****************
+   Description : Gestion des informations du Jetson
+   Auteurs : Arthur VAN BETSBRUGGE, Ariane BOYCZUM-AUGER, Katherine ZAMUDIO-TURCOTTE, Marc-Antoine HIEN
+	 Periphériques : UART 7
+*****************/
+
+
+#ifndef JETSON_H
+#define JETSON_H
+
+#include "main.h"                                                                                     
+#include "string.h"
+#include "stdlib.h"
+#include "usart.h"
+#include "oled.h"
+#include "motors.h"
+
+#define UART7_MAX_LEN     30
+#define UART7_RX_BUFFLEN  50
+
+
+typedef __packed struct
+{
+	uint8_t switch_target; //Change la cible: 0x00; rien, 0x4C; change pour cible à gauche; change pour cible à droite
+	uint8_t switch_target_mode; //Change le type de cible: 0x72; robot, 0x52: rune
+} switch_informations_t;
+
+typedef __packed struct
+{
+	uint8_t target_located; 
+	uint16_t teta_target_location; 
+	uint16_t phi_target_location; 
+	uint16_t d_target_location; 
+} robot_target_coordinates_t;
+
+typedef __packed struct
+{
+	uint8_t target_located; 
+	uint8_t rune_type;
+	uint8_t rune_direction;
+	uint16_t teta_target_location; 
+	uint16_t phi_target_location; 
+	uint16_t d_target_location; 
+	uint16_t rune_time;
+} rune_target_coordinates_t;
+
+typedef __packed struct
+{
+	switch_informations_t switch_informations;
+	robot_target_coordinates_t robot_target_coordinates;
+	rune_target_coordinates_t rune_target_coordinates;
+} jetson_t;
+
+void jetson_callback_handler(int8_t lenght);
+
+void uart7_init(void);
+
+#endif // JETSON_H
diff --git a/Inc/main.h b/Inc/main.h
index 9ba91db..b42d2e3 100644
--- a/Inc/main.h
+++ b/Inc/main.h
@@ -95,6 +95,10 @@ void Error_Handler(void);
 #define BOARD_LED_B_GPIO_Port GPIOG
 #define BOARD_LED_C_Pin GPIO_PIN_6
 #define BOARD_LED_C_GPIO_Port GPIOG
+#define JETSON_TX_Pin GPIO_PIN_7
+#define JETSON_TX_GPIO_Port GPIOF
+#define JETSON_RX_Pin GPIO_PIN_6
+#define JETSON_RX_GPIO_Port GPIOF
 #define BOARD_LED_D_Pin GPIO_PIN_5
 #define BOARD_LED_D_GPIO_Port GPIOG
 #define BOARD_LED_E_Pin GPIO_PIN_4
diff --git a/Inc/stm32f4xx_it.h b/Inc/stm32f4xx_it.h
index 9732030..1e0697c 100644
--- a/Inc/stm32f4xx_it.h
+++ b/Inc/stm32f4xx_it.h
@@ -57,6 +57,8 @@ void DebugMon_Handler(void);
 void PendSV_Handler(void);
 void SysTick_Handler(void);
 void DMA1_Stream0_IRQHandler(void);
+void DMA1_Stream1_IRQHandler(void);
+void DMA1_Stream3_IRQHandler(void);
 void CAN1_TX_IRQHandler(void);
 void CAN1_RX0_IRQHandler(void);
 void USART1_IRQHandler(void);
@@ -65,6 +67,7 @@ void DMA2_Stream2_IRQHandler(void);
 void DMA2_Stream6_IRQHandler(void);
 void DMA2_Stream7_IRQHandler(void);
 void USART6_IRQHandler(void);
+void UART7_IRQHandler(void);
 void UART8_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 
diff --git a/Inc/traitement.h b/Inc/traitement.h
index 8681fee..418c53d 100644
--- a/Inc/traitement.h
+++ b/Inc/traitement.h
@@ -12,6 +12,7 @@
 #include "leds.h"
 #include "receiver_RadioController.h"
 #include "referee_system.h"
+#include "jetson.h"
 #include "motors.h"
 #include "robot_configuration.h"
 #include "pid.h"
diff --git a/Inc/usart.h b/Inc/usart.h
index ab4a913..41acc5a 100644
--- a/Inc/usart.h
+++ b/Inc/usart.h
@@ -31,6 +31,7 @@ extern "C" {
 
 /* USER CODE END Includes */
 
+extern UART_HandleTypeDef huart7;
 extern UART_HandleTypeDef huart8;
 extern UART_HandleTypeDef huart1;
 extern UART_HandleTypeDef huart6;
@@ -39,6 +40,7 @@ extern UART_HandleTypeDef huart6;
 
 /* USER CODE END Private defines */
 
+void MX_UART7_Init(void);
 void MX_UART8_Init(void);
 void MX_USART1_UART_Init(void);
 void MX_USART6_UART_Init(void);
diff --git a/MDK-ARM/RobotMaster_allRobots.uvoptx b/MDK-ARM/RobotMaster_allRobots.uvoptx
index 8f81f35..92e16ed 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvoptx
+++ b/MDK-ARM/RobotMaster_allRobots.uvoptx
@@ -525,7 +525,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -533,7 +533,7 @@
       <GroupNumber>4</GroupNumber>
       <FileNumber>23</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Src/main.c</PathWithFileName>
@@ -653,7 +653,7 @@
 
   <Group>
     <GroupName>Libraries</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -673,7 +673,7 @@
 
   <Group>
     <GroupName>BoardA</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -737,7 +737,7 @@
       <GroupNumber>7</GroupNumber>
       <FileNumber>38</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\Src\referee_system.c</PathWithFileName>
@@ -769,6 +769,30 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>41</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\jetson.c</PathWithFileName>
+      <FilenameWithoutPath>jetson.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>42</FileNumber>
+      <FileType>5</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Inc\jetson.h</PathWithFileName>
+      <FilenameWithoutPath>jetson.h</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -779,7 +803,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
diff --git a/MDK-ARM/RobotMaster_allRobots.uvprojx b/MDK-ARM/RobotMaster_allRobots.uvprojx
index d542a1d..976a388 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvprojx
+++ b/MDK-ARM/RobotMaster_allRobots.uvprojx
@@ -10,13 +10,13 @@
       <TargetName>RobotMaster_allRobots</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
+      <pCCUsed>5060960::V5.06 update 7 (build 960)::ARMCC</pCCUsed>
       <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
           <Device>STM32F427IIHx</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F4xx_DFP.2.15.0</PackID>
+          <PackID>Keil.STM32F4xx_DFP.2.14.0</PackID>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000,0x00030000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00200000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
@@ -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>
@@ -613,6 +613,16 @@
               <FileType>1</FileType>
               <FilePath>..\Src\robot_configuration.c</FilePath>
             </File>
+            <File>
+              <FileName>jetson.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\jetson.c</FilePath>
+            </File>
+            <File>
+              <FileName>jetson.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\Inc\jetson.h</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
@@ -657,23 +667,7 @@
         <package name="STM32F4xx_DFP" schemaVersion="1.6.3" url="http://www.keil.com/pack/" vendor="Keil" version="2.15.0"/>
         <targetInfos/>
       </file>
-      <file attr="config" category="source" name="Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c" version="2.6.2">
-        <instance index="0" removed="1">RTE\Device\STM32F427IIHx\system_stm32f4xx.c</instance>
-        <component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.6.3" condition="STM32F4 CMSIS"/>
-        <package name="STM32F4xx_DFP" schemaVersion="1.6.3" url="http://www.keil.com/pack/" vendor="Keil" version="2.15.0"/>
-        <targetInfos/>
-      </file>
     </files>
   </RTE>
 
-  <LayerInfo>
-    <Layers>
-      <Layer>
-        <LayName>RobotMaster_allRobots</LayName>
-        <LayPrjMark>1</LayPrjMark>
-        <LayDesc>RobotMaster 2020</LayDesc>
-      </Layer>
-    </Layers>
-  </LayerInfo>
-
 </Project>
diff --git a/RobotMaster_allRobots.ioc b/RobotMaster_allRobots.ioc
index fc4bece..4ec884b 100644
--- a/RobotMaster_allRobots.ioc
+++ b/RobotMaster_allRobots.ioc
@@ -1,373 +1,412 @@
 #MicroXplorer Configuration settings - do not modify
-Mcu.Family=STM32F4
-Dma.USART6_TX.3.MemInc=DMA_MINC_ENABLE
-ProjectManager.MainLocation=Src
-RCC.CortexFreq_Value=168000000
-Dma.USART6_TX.3.PeriphInc=DMA_PINC_DISABLE
-PG6.Signal=GPIO_Output
-PG9.GPIOParameters=GPIO_Label
-ProjectManager.KeepUserCode=true
-PE11.GPIOParameters=GPIO_Label
-Mcu.UserName=STM32F427IIHx
-SPI1.VirtualType=VM_MASTER
+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
+ADC1.master=1
+CAN1.ABOM=ENABLE
+CAN1.BS1=CAN_BS1_10TQ
+CAN1.BS2=CAN_BS2_4TQ
+CAN1.CalculateBaudRate=933333
+CAN1.CalculateTimeBit=1071.42
+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
+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
+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
+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
+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
+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
 Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE
-UART8.IPParameters=VirtualMode
-PG2.Signal=GPIO_Output
-TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
-PE11.GPIO_Label=BOARD_LED_RED
-USART1.BaudRate=100000
-PG8.Signal=GPIO_Output
-PG4.Signal=GPIO_Output
+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
-PG8.Locked=true
-PG6.Locked=true
-PG4.Locked=true
-RCC.PLLCLKFreq_Value=168000000
-PG2.Locked=true
-PG6.GPIO_Label=BOARD_LED_C
-RCC.PLLQCLKFreq_Value=84000000
-PG3.GPIOParameters=GPIO_Label
-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
-PD0.GPIO_Label=CAN1_RX
-RCC.RTCFreq_Value=32000
-PA6.GPIO_Label=OLED_Analog
-PB6.GPIO_Label=ReceiverRC_TX
-PD0.Locked=true
-TIM1.Pulse-PWM\ Generation1\ CH1=1000
-PH5.GPIO_Label=BOARD_POWER4_CTRL
-PG14.GPIOParameters=GPIO_Label
-SH.S_TIM1_CH1.ConfNb=1
-USART1.IPParameters=VirtualMode,BaudRate,Parity,Mode
-PG5.GPIO_Label=BOARD_LED_D
-PG2.GPIOParameters=GPIO_Label
+Dma.USART6_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_RX.2.Instance=DMA2_Stream1
 Dma.USART6_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
-PinOutPanel.RotationAngle=0
-PH5.GPIOParameters=GPIO_Label
-RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
-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
-NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-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
-PH5.Signal=GPIO_Output
-TIM1.Prescaler=167
-Mcu.UserConstants=
-PH3.Locked=true
-Dma.USART6_TX.3.Priority=DMA_PRIORITY_LOW
-NVIC.CAN1_TX_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-Mcu.ThirdPartyNb=0
-SPI1.Direction=SPI_DIRECTION_1LINE
-PH0/OSC_IN.Mode=HSE-External-Oscillator
-RCC.HCLKFreq_Value=168000000
-Mcu.IPNb=11
-RCC.I2SClocksFreq_Value=192000000
-ProjectManager.PreviousToolchain=
-RCC.APB2TimFreq_Value=168000000
-PB6.Signal=USART1_TX
-RCC.VcooutputI2S=192000000
-PG8.GPIOParameters=GPIO_Label
-PB6.Mode=Asynchronous
-PH1/OSC_OUT.Signal=RCC_OSC_OUT
-SPI1.CalculateBaudRate=1.3125 MBits/s
-Dma.USART6_RX.2.Instance=DMA2_Stream1
-Mcu.Pin6=PB9
-PD0.Signal=CAN1_RX
-Mcu.Pin7=PB7
-Mcu.Pin8=PB6
-Dma.UART8_TX.4.Priority=DMA_PRIORITY_LOW
-Mcu.Pin9=PD0
-RCC.VCOSAIOutputFreq_Value=98000000
-PE1.Signal=UART8_TX
-RCC.AHBFreq_Value=168000000
-Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW
+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
+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=PF7
+Mcu.Pin24=PF6
+Mcu.Pin25=PG5
+Mcu.Pin26=PG4
+Mcu.Pin27=PG3
+Mcu.Pin28=PG2
+Mcu.Pin29=PG1
 Mcu.Pin3=PB3
+Mcu.Pin30=PA6
+Mcu.Pin31=PE11
+Mcu.Pin32=PA7
+Mcu.Pin33=PF14
+Mcu.Pin34=PB10
+Mcu.Pin35=VP_SYS_VS_Systick
 Mcu.Pin4=PA14
 Mcu.Pin5=PA13
-ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_6
-ProjectManager.ProjectBuild=false
-RCC.HSE_VALUE=12000000
-NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+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
-PB3.Mode=Simplex_Bidirectional_Master
-Mcu.IP10=USART6
-PD1.GPIOParameters=GPIO_Label
+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
-PD1.GPIO_Label=CAN1_TX
-PG14.Mode=Asynchronous
-PG1.GPIOParameters=GPIO_Label
-Dma.USART6_RX.2.Priority=DMA_PRIORITY_LOW
-ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.25.2
-MxDb.Version=DB.6.0.10
-PE0.GPIOParameters=GPIO_Label
-ProjectManager.BackupPrevious=false
-RCC.VCOInputFreq_Value=2000000
-TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
+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
-File.Version=6
-PG4.GPIO_Label=BOARD_LED_E
-PB3.GPIOParameters=GPIO_Label
-PH3.GPIOParameters=GPIO_Label
-PB7.Signal=USART1_RX
+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
-PE1.Locked=true
-NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-SH.ADCx_IN6.ConfNb=1
-Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
-PH1/OSC_OUT.Mode=HSE-External-Oscillator
-Dma.RequestsNb=5
+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
+PB3.GPIO_Label=OLED_SCK
+PB3.Locked=true
+PB3.Mode=Simplex_Bidirectional_Master
+PB3.Signal=SPI1_SCK
 PB6.GPIOParameters=GPIO_Label
-ProjectManager.HalAssertFull=false
-ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
-Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-ProjectManager.ProjectName=RobotMaster_allRobots
+PB6.GPIO_Label=ReceiverRC_TX
+PB6.Mode=Asynchronous
+PB6.Signal=USART1_TX
+PB7.GPIOParameters=GPIO_Label
 PB7.GPIO_Label=ReceiverRC_RX
-RCC.MCO2PinFreq_Value=168000000
-CAN1.Prescaler=3
+PB7.Mode=Asynchronous
+PB7.Signal=USART1_RX
+PB9.GPIOParameters=GPIO_Label
+PB9.GPIO_Label=OLED_DC
+PB9.Locked=true
 PB9.Signal=GPIO_Output
-Mcu.Package=UFBGA176
-PA6.Signal=ADCx_IN6
-NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-PA7.Locked=true
-PG5.GPIOParameters=GPIO_Label
-TIM1.Pulse-PWM\ Generation2\ CH2=1000
-USART6.VirtualMode=VM_ASYNC
-ProjectManager.ToolChainLocation=
-RCC.LSI_VALUE=32000
-VP_SYS_VS_Systick.Signal=SYS_VS_Systick
-Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+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.UART8_TX.4.MemInc=DMA_MINC_ENABLE
-PH2.Signal=GPIO_Output
-Dma.USART1_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
-RCC.APB2CLKDivider=RCC_HCLK_DIV2
-NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-Dma.USART6_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.Request2=USART6_RX
+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
+PF14.GPIOParameters=GPIO_Label
+PF14.GPIO_Label=BOARD_LED_GREEN
+PF14.Locked=true
 PF14.Signal=GPIO_Output
-Dma.Request1=USART1_TX
-RCC.APB1TimFreq_Value=84000000
-Dma.Request4=UART8_TX
-Dma.Request3=USART6_TX
-NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-Dma.USART1_RX.0.Mode=DMA_CIRCULAR
-Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
-NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-TIM1.Period=9999
-PB10.GPIOParameters=GPIO_Label
-NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-Dma.Request0=USART1_RX
-SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
-CAN1.CalculateTimeBit=1071.42
-Dma.USART1_RX.0.Instance=DMA2_Stream2
-ProjectManager.CustomerFirmwarePackage=
-RCC.SAI_AClocksFreq_Value=24500000
-PB3.Locked=true
+PF6.GPIOParameters=GPIO_Label
+PF6.GPIO_Label=JETSON_RX
+PF6.Mode=Asynchronous
+PF6.Signal=UART7_RX
+PF7.GPIOParameters=GPIO_Label
+PF7.GPIO_Label=JETSON_TX
+PF7.Mode=Asynchronous
+PF7.Signal=UART7_TX
+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
-CAN1.CalculateTimeQuantum=71.42857142857143
-Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
-PB3.GPIO_Label=OLED_SCK
-PA6.GPIOParameters=GPIO_Label
-RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
-Dma.USART1_TX.1.Instance=DMA2_Stream7
-ProjectManager.ProjectFileName=RobotMaster_allRobots.ioc
-NVIC.UART8_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-PG7.Locked=true
-ADC1.Rank-0\#ChannelRegularConversion=1
-PG7.Signal=GPIO_Output
-PA7.Mode=Simplex_Bidirectional_Master
-Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-PB9.GPIO_Label=OLED_DC
-Mcu.PinsNb=34
-ProjectManager.NoMain=false
-SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
+PG2.Locked=true
+PG2.Signal=GPIO_Output
+PG3.GPIOParameters=GPIO_Label
+PG3.GPIO_Label=BOARD_LED_F
+PG3.Locked=true
 PG3.Signal=GPIO_Output
-SH.ADCx_IN6.0=ADC1_IN6,IN6
-ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
-USART6.IPParameters=VirtualMode
-PG1.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
-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
-PG1.Locked=true
-CAN1.IPParameters=CalculateTimeQuantum,Prescaler,BS1,BS2,ABOM,CalculateTimeBit,CalculateBaudRate
-PE1.Mode=Asynchronous
-CAN1.CalculateBaudRate=933333
+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
+PG8.GPIOParameters=GPIO_Label
+PG8.GPIO_Label=BOARD_LED_A
+PG8.Locked=true
+PG8.Signal=GPIO_Output
+PG9.GPIOParameters=GPIO_Label
+PG9.GPIO_Label=RefereeSystem_Rx
 PG9.Mode=Asynchronous
-PD1.Signal=CAN1_TX
+PG9.Signal=USART6_RX
+PH0/OSC_IN.Mode=HSE-External-Oscillator
+PH0/OSC_IN.Signal=RCC_OSC_IN
+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
+ProjectManager.BackupPrevious=false
+ProjectManager.CompilerOptimize=6
+ProjectManager.ComputerToolchain=false
+ProjectManager.CoupleFile=true
+ProjectManager.CustomerFirmwarePackage=
 ProjectManager.DefaultFWLocation=true
-RCC.VCOSAIOutputFreq_ValueQ=24500000
-PF14.GPIO_Label=BOARD_LED_GREEN
-NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\: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
+RCC.AHBFreq_Value=168000000
 RCC.APB1CLKDivider=RCC_HCLK_DIV4
-UART8.VirtualMode=Asynchronous
-PB10.Locked=true
-Dma.UART8_TX.4.Direction=DMA_MEMORY_TO_PERIPH
-Dma.USART6_TX.3.Mode=DMA_NORMAL
-PinOutPanel.CurrentBGAView=Top
+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
-NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-PB9.GPIOParameters=GPIO_Label
-PG8.GPIO_Label=BOARD_LED_A
-PA13.Signal=SYS_JTMS-SWDIO
-SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
-PH4.Signal=GPIO_Output
-CAN1.BS2=CAN_BS2_4TQ
-Dma.USART6_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-PH4.Locked=true
-CAN1.BS1=CAN_BS1_10TQ
-ProjectManager.TargetToolchain=MDK-ARM V5.27
-PB10.GPIO_Label=OLED_RST
-Dma.USART6_RX.2.MemInc=DMA_MINC_ENABLE
-PB7.GPIOParameters=GPIO_Label
-Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
-PA9.Signal=S_TIM1_CH2
-USART1.Parity=PARITY_EVEN
-TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
-RCC.VcooutputI2SQ=192000000
-PB9.Locked=true
-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
-NVIC.DMA2_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true
-PE11.Signal=GPIO_Output
+RCC.HCLKFreq_Value=168000000
+RCC.HSE_VALUE=12000000
+RCC.HSI_VALUE=16000000
+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
-Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE
-SH.S_TIM1_CH2.ConfNb=1
-CAN1.ABOM=ENABLE
-PB10.Signal=GPIO_Output
+RCC.LSI_VALUE=32000
+RCC.MCO2PinFreq_Value=168000000
+RCC.PLLCLKFreq_Value=168000000
+RCC.PLLM=6
+RCC.PLLN=168
+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
-PG9.GPIO_Label=RefereeSystem_Rx
-PG6.GPIOParameters=GPIO_Label
-PG14.Signal=USART6_TX
-Dma.USART6_TX.3.Direction=DMA_MEMORY_TO_PERIPH
-Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
-board=custom
+RCC.VCOInputFreq_Value=2000000
 RCC.VCOOutputFreq_Value=336000000
-PE1.GPIO_Label=DEBUG_TX
-PG1.GPIO_Label=BOARD_LED_H
-ProjectManager.LastFirmware=true
-PF14.GPIOParameters=GPIO_Label
-Dma.USART6_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-PD1.Mode=CAN_Activate
-PH4.GPIO_Label=BOARD_POWER3_CTRL
-Dma.USART6_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.UART8_TX.4.PeriphInc=DMA_PINC_DISABLE
-Dma.USART6_RX.2.Mode=DMA_CIRCULAR
-PH0/OSC_IN.Signal=RCC_OSC_IN
-RCC.APB2Freq_Value=84000000
-MxCube.Version=6.1.1
-USART1.Mode=MODE_TX_RX
-PG4.GPIOParameters=GPIO_Label
+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
-PG7.GPIO_Label=BOARD_LED_B
-Dma.UART8_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE
-Mcu.Pin30=PA7
-VP_SYS_VS_Systick.Mode=SysTick
-Dma.UART8_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-RCC.EthernetFreq_Value=168000000
-Mcu.Pin33=VP_SYS_VS_Systick
-Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Mcu.Pin31=PF14
-Mcu.Pin32=PB10
-NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-PF14.Locked=true
-PA13.Mode=Serial_Wire
-PG14.GPIO_Label=RefereeSystem_Tx
-ProjectManager.FreePins=false
-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
-ProjectManager.AskForMigrate=true
-Mcu.Name=STM32F427I(G-I)Hx
-PE0.Signal=UART8_RX
-PD0.Mode=CAN_Activate
-Mcu.Pin26=PG2
-Mcu.Pin27=PG1
-RCC.RTCHSEDivFreq_Value=6000000
-Mcu.Pin24=PG4
-ProjectManager.UnderRoot=false
-Mcu.Pin25=PG3
-Mcu.IP8=UART8
-Mcu.IP9=USART1
-Mcu.Pin28=PA6
-Dma.UART8_TX.4.Mode=DMA_NORMAL
-Mcu.IP6=SYS
-Mcu.Pin29=PE11
-Mcu.IP7=TIM1
-ProjectManager.CoupleFile=true
-RCC.48MHZClocksFreq_Value=84000000
-PB3.Signal=SPI1_SCK
-RCC.SYSCLKFreq_VALUE=168000000
-Mcu.Pin22=PG6
-Mcu.Pin23=PG5
-Mcu.Pin20=PH5
-PA7.GPIO_Label=OLED_MOSI
-ADC1.master=1
-Mcu.Pin21=PG7
-NVIC.ForceEnableDMAVector=true
-KeepUserPlacement=false
-Dma.UART8_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART1_TX.1.Mode=DMA_NORMAL
-NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+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
-ProjectManager.CompilerOptimize=6
-Dma.UART8_TX.4.Instance=DMA1_Stream0
-PB7.Mode=Asynchronous
-PA14.Signal=SYS_JTCK-SWCLK
-ProjectManager.HeapSize=0x200
-Mcu.Pin15=PH0/OSC_IN
-Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
-NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
-Mcu.Pin16=PH3
-PH5.Locked=true
-Mcu.Pin13=PH2
-Mcu.Pin14=PA8
-Dma.USART6_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
-Mcu.Pin19=PG8
-Dma.USART6_TX.3.Instance=DMA2_Stream6
-ProjectManager.ComputerToolchain=false
-Mcu.Pin17=PH1/OSC_OUT
-RCC.HSI_VALUE=16000000
-Mcu.Pin18=PH4
-PH2.Locked=true
-NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
-ADC1.NbrOfConversionFlag=1
-Mcu.Pin11=PD1
-PH3.Signal=GPIO_Output
-PD0.GPIOParameters=GPIO_Label
-Mcu.Pin12=PA9
-RCC.PLLM=6
-RCC.PLLN=168
-Mcu.Pin10=PG9
-PG3.GPIO_Label=BOARD_LED_F
-Dma.USART6_RX.2.PeriphInc=DMA_PINC_DISABLE
-RCC.APB1Freq_Value=42000000
-PD1.Locked=true
-PA7.GPIOParameters=GPIO_Label
-ProjectManager.DeviceId=STM32F427IIHx
-PE0.Mode=Asynchronous
-PH2.GPIO_Label=BOARD_POWER1_CTRL
-PG7.GPIOParameters=GPIO_Label
-ProjectManager.LibraryCopy=1
-NVIC.CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:true\:true
-PE1.GPIOParameters=GPIO_Label
-PA7.Signal=SPI1_MOSI
-PA6.Locked=true
+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 949e773..c3e7423 100644
--- a/Src/BoardA_handle.c
+++ b/Src/BoardA_handle.c
@@ -17,6 +17,7 @@
 /* On crée les signes de vie, les variables vaudra le temps où elles ont été utilisés la dernière fois */
 uint32_t signOfLife_Receiver_RadioController_tick = 0;
 uint32_t signOfLife_refereeSystem_tick = 0;
+uint32_t signOfLife_jetson_tick = 0;
 uint32_t signOfLife_CAN1_tick = 0;
 
 /* On récupère les variables exterieurs pour affichage de debug */
diff --git a/Src/dma.c b/Src/dma.c
index 55f6cd3..1e8a3ca 100644
--- a/Src/dma.c
+++ b/Src/dma.c
@@ -46,6 +46,12 @@ void MX_DMA_Init(void)
   /* DMA1_Stream0_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);
   HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
+  /* DMA1_Stream1_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+  /* DMA1_Stream3_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
   /* DMA2_Stream1_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
   HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
diff --git a/Src/jetson.c b/Src/jetson.c
new file mode 100644
index 0000000..9ac1b2d
--- /dev/null
+++ b/Src/jetson.c
@@ -0,0 +1,65 @@
+/****************
+   Description : Gestion des informations du Jetson
+   Auteurs : Arthur VAN BETSBRUGGE, Ariane BOYCZUM-AUGER, Katherine ZAMUDIO-TURCOTTE, Marc-Antoine HIEN
+	 Periphériques : UART 7
+*****************/
+
+
+#include "jetson.h"
+
+jetson_t jetson;
+
+/* On crée le buffer de récupération de données du referee System */
+uint8_t uart7_rx_buff[UART6_RX_BUFFLEN];
+
+/* On récupère les variables exterieurs */
+extern uint32_t signOfLife_jetson_tick;
+
+/* fonction appelée lorsqu'on recoit une unformation du récepteur */
+void jetson_callback_handler(int8_t lenght){
+	/* frame_header (5-byte) */
+	uint8_t 	SOF 					= uart7_rx_buff[0];
+	uint16_t 	cmd_id 				= (uart7_rx_buff[1] << 8 | uart7_rx_buff[2]);
+	uint16_t 	data_length 	= uart7_rx_buff[3];
+	
+	if(SOF != 0xA5) return;
+	signOfLife_jetson_tick = HAL_GetTick();
+	
+	
+	/* data (n-byte) */
+	switch(cmd_id){
+		case 0x0002:
+			memcpy(&jetson.robot_target_coordinates, &uart7_rx_buff[4], data_length);
+			break;
+		case 0x0003:
+			memcpy(&jetson.rune_target_coordinates, &uart7_rx_buff[4], data_length);
+			break;
+		default: return;
+	}
+	
+	/* frame_tail (2-byte, CRC16, whole package check)  */
+	//uint16_t crc16 = (uart6_rx_buff[7+data_length] << 8 | uart6_rx_buff[7+data_length+1]);
+}
+
+/**
+  * @brief   initialize uart7 device 
+  * @param   
+  * @retval  
+  */
+void uart7_init(void)
+{
+	/* open uart idle it */
+	__HAL_UART_CLEAR_IDLEFLAG(&huart7);
+	__HAL_UART_ENABLE_IT(&huart7, UART_IT_IDLE);
+
+	uart_receive_dma_no_it(&huart7, uart7_rx_buff, UART7_MAX_LEN);
+}
+
+
+
+
+
+
+
+
+
diff --git a/Src/main.c b/Src/main.c
index a474459..b256529 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -98,6 +98,7 @@ int main(void)
   MX_CAN1_Init();
   MX_UART8_Init();
   MX_TIM1_Init();
+  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
@@ -106,6 +107,7 @@ int main(void)
 	oled_init();
 	uart1_init();
 	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
 	extern motor_t motors[MAX_MOTORS];
diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c
index f1f18fc..d7e88db 100644
--- a/Src/stm32f4xx_it.c
+++ b/Src/stm32f4xx_it.c
@@ -28,6 +28,7 @@
 #include "receiver_RadioController.h"
 #include "referee_system.h"
 #include "motors.h"
+#include "jetson.h"
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -62,11 +63,14 @@
 
 /* External variables --------------------------------------------------------*/
 extern CAN_HandleTypeDef hcan1;
+extern DMA_HandleTypeDef hdma_uart7_rx;
+extern DMA_HandleTypeDef hdma_uart7_tx;
 extern DMA_HandleTypeDef hdma_uart8_tx;
 extern DMA_HandleTypeDef hdma_usart1_rx;
 extern DMA_HandleTypeDef hdma_usart1_tx;
 extern DMA_HandleTypeDef hdma_usart6_rx;
 extern DMA_HandleTypeDef hdma_usart6_tx;
+extern UART_HandleTypeDef huart7;
 extern UART_HandleTypeDef huart8;
 extern UART_HandleTypeDef huart1;
 extern UART_HandleTypeDef huart6;
@@ -224,6 +228,34 @@ void DMA1_Stream0_IRQHandler(void)
   /* USER CODE END DMA1_Stream0_IRQn 1 */
 }
 
+/**
+  * @brief This function handles DMA1 stream1 global interrupt.
+  */
+void DMA1_Stream1_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
+
+  /* USER CODE END DMA1_Stream1_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_uart7_tx);
+  /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
+
+  /* USER CODE END DMA1_Stream1_IRQn 1 */
+}
+
+/**
+  * @brief This function handles DMA1 stream3 global interrupt.
+  */
+void DMA1_Stream3_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
+
+  /* USER CODE END DMA1_Stream3_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_uart7_rx);
+  /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
+
+  /* USER CODE END DMA1_Stream3_IRQn 1 */
+}
+
 /**
   * @brief This function handles CAN1 TX interrupts.
   */
@@ -370,6 +402,34 @@ void USART6_IRQHandler(void)
   /* USER CODE END USART6_IRQn 1 */
 }
 
+/**
+  * @brief This function handles UART7 global interrupt.
+  */
+void UART7_IRQHandler(void)
+{
+  /* USER CODE BEGIN UART7_IRQn 0 */
+	if (__HAL_UART_GET_FLAG(&huart7, UART_FLAG_IDLE) && __HAL_UART_GET_IT_SOURCE(&huart7, UART_IT_IDLE)){
+		/* clear idle it flag avoid idle interrupt all the time */
+		__HAL_UART_CLEAR_IDLEFLAG(&huart7);
+		
+		/* clear DMA transfer complete flag */
+		__HAL_DMA_DISABLE(huart7.hdmarx);
+		
+		uint16_t dma_data_counter = (uint16_t)(huart7.hdmarx->Instance->NDTR);
+
+		jetson_callback_handler(UART7_MAX_LEN - dma_data_counter);
+		
+		/* restart dma transmission */
+		__HAL_DMA_SET_COUNTER(huart6.hdmarx, UART7_MAX_LEN);
+		__HAL_DMA_ENABLE(huart6.hdmarx);
+	}
+  /* USER CODE END UART7_IRQn 0 */
+  HAL_UART_IRQHandler(&huart7);
+  /* USER CODE BEGIN UART7_IRQn 1 */
+
+  /* USER CODE END UART7_IRQn 1 */
+}
+
 /**
   * @brief This function handles UART8 global interrupt.
   */
diff --git a/Src/usart.c b/Src/usart.c
index d966a93..8cbb0d5 100644
--- a/Src/usart.c
+++ b/Src/usart.c
@@ -24,15 +24,36 @@
 
 /* USER CODE END 0 */
 
+UART_HandleTypeDef huart7;
 UART_HandleTypeDef huart8;
 UART_HandleTypeDef huart1;
 UART_HandleTypeDef huart6;
+DMA_HandleTypeDef hdma_uart7_rx;
+DMA_HandleTypeDef hdma_uart7_tx;
 DMA_HandleTypeDef hdma_uart8_tx;
 DMA_HandleTypeDef hdma_usart1_rx;
 DMA_HandleTypeDef hdma_usart1_tx;
 DMA_HandleTypeDef hdma_usart6_rx;
 DMA_HandleTypeDef hdma_usart6_tx;
 
+/* UART7 init function */
+void MX_UART7_Init(void)
+{
+
+  huart7.Instance = UART7;
+  huart7.Init.BaudRate = 230400;
+  huart7.Init.WordLength = UART_WORDLENGTH_8B;
+  huart7.Init.StopBits = UART_STOPBITS_1;
+  huart7.Init.Parity = UART_PARITY_NONE;
+  huart7.Init.Mode = UART_MODE_TX_RX;
+  huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart7.Init.OverSampling = UART_OVERSAMPLING_16;
+  if (HAL_UART_Init(&huart7) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+}
 /* UART8 init function */
 void MX_UART8_Init(void)
 {
@@ -94,7 +115,71 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
 {
 
   GPIO_InitTypeDef GPIO_InitStruct = {0};
-  if(uartHandle->Instance==UART8)
+  if(uartHandle->Instance==UART7)
+  {
+  /* USER CODE BEGIN UART7_MspInit 0 */
+
+  /* USER CODE END UART7_MspInit 0 */
+    /* UART7 clock enable */
+    __HAL_RCC_UART7_CLK_ENABLE();
+
+    __HAL_RCC_GPIOF_CLK_ENABLE();
+    /**UART7 GPIO Configuration
+    PF7     ------> UART7_TX
+    PF6     ------> UART7_RX
+    */
+    GPIO_InitStruct.Pin = JETSON_TX_Pin|JETSON_RX_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_PULLUP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+    GPIO_InitStruct.Alternate = GPIO_AF8_UART7;
+    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
+
+    /* UART7 DMA Init */
+    /* UART7_RX Init */
+    hdma_uart7_rx.Instance = DMA1_Stream3;
+    hdma_uart7_rx.Init.Channel = DMA_CHANNEL_5;
+    hdma_uart7_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+    hdma_uart7_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_uart7_rx.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_uart7_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+    hdma_uart7_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+    hdma_uart7_rx.Init.Mode = DMA_CIRCULAR;
+    hdma_uart7_rx.Init.Priority = DMA_PRIORITY_LOW;
+    hdma_uart7_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+    if (HAL_DMA_Init(&hdma_uart7_rx) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(uartHandle,hdmarx,hdma_uart7_rx);
+
+    /* UART7_TX Init */
+    hdma_uart7_tx.Instance = DMA1_Stream1;
+    hdma_uart7_tx.Init.Channel = DMA_CHANNEL_5;
+    hdma_uart7_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+    hdma_uart7_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_uart7_tx.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_uart7_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+    hdma_uart7_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+    hdma_uart7_tx.Init.Mode = DMA_NORMAL;
+    hdma_uart7_tx.Init.Priority = DMA_PRIORITY_LOW;
+    hdma_uart7_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+    if (HAL_DMA_Init(&hdma_uart7_tx) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart7_tx);
+
+    /* UART7 interrupt Init */
+    HAL_NVIC_SetPriority(UART7_IRQn, 0, 0);
+    HAL_NVIC_EnableIRQ(UART7_IRQn);
+  /* USER CODE BEGIN UART7_MspInit 1 */
+
+  /* USER CODE END UART7_MspInit 1 */
+  }
+  else if(uartHandle->Instance==UART8)
   {
   /* USER CODE BEGIN UART8_MspInit 0 */
 
@@ -276,7 +361,31 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
 void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
 {
 
-  if(uartHandle->Instance==UART8)
+  if(uartHandle->Instance==UART7)
+  {
+  /* USER CODE BEGIN UART7_MspDeInit 0 */
+
+  /* USER CODE END UART7_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_UART7_CLK_DISABLE();
+
+    /**UART7 GPIO Configuration
+    PF7     ------> UART7_TX
+    PF6     ------> UART7_RX
+    */
+    HAL_GPIO_DeInit(GPIOF, JETSON_TX_Pin|JETSON_RX_Pin);
+
+    /* UART7 DMA DeInit */
+    HAL_DMA_DeInit(uartHandle->hdmarx);
+    HAL_DMA_DeInit(uartHandle->hdmatx);
+
+    /* UART7 interrupt Deinit */
+    HAL_NVIC_DisableIRQ(UART7_IRQn);
+  /* USER CODE BEGIN UART7_MspDeInit 1 */
+
+  /* USER CODE END UART7_MspDeInit 1 */
+  }
+  else if(uartHandle->Instance==UART8)
   {
   /* USER CODE BEGIN UART8_MspDeInit 0 */
 
-- 
GitLab