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