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