diff --git a/cubemx/ir_feet/ir_feet.ioc b/cubemx/ir_feet/ir_feet.ioc
new file mode 100644
index 0000000000000000000000000000000000000000..e49fc0ff5a086ca8066978ba4ebe770be8b2209a
--- /dev/null
+++ b/cubemx/ir_feet/ir_feet.ioc
@@ -0,0 +1,284 @@
+#MicroXplorer Configuration settings - do not modify
+ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_0
+ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_2
+ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_4
+ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_6
+ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
+ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
+ADC1.ContinuousConvMode=ENABLE
+ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,NbrOfConversion,Mode,ContinuousConvMode
+ADC1.Mode=ADC_DUALMODE_REGSIMULT
+ADC1.NbrOfConversion=6
+ADC1.NbrOfConversionFlag=1
+ADC1.Rank-0\#ChannelRegularConversion=1
+ADC1.Rank-1\#ChannelRegularConversion=2
+ADC1.Rank-2\#ChannelRegularConversion=3
+ADC1.Rank-3\#ChannelRegularConversion=4
+ADC1.Rank-4\#ChannelRegularConversion=5
+ADC1.Rank-5\#ChannelRegularConversion=6
+ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC1.master=1
+ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1
+ADC2.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_3
+ADC2.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_5
+ADC2.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_7
+ADC2.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_8
+ADC2.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_9
+ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,NbrOfConversion,Mode
+ADC2.Mode=ADC_DUALMODE_REGSIMULT
+ADC2.NbrOfConversion=6
+ADC2.NbrOfConversionFlag=1
+ADC2.Rank-0\#ChannelRegularConversion=1
+ADC2.Rank-1\#ChannelRegularConversion=2
+ADC2.Rank-2\#ChannelRegularConversion=3
+ADC2.Rank-3\#ChannelRegularConversion=4
+ADC2.Rank-4\#ChannelRegularConversion=5
+ADC2.Rank-5\#ChannelRegularConversion=6
+ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC2.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC2.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC2.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC2.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+ADC2.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_239CYCLES_5
+Dma.Request0=USART1_RX
+Dma.Request1=USART1_TX
+Dma.RequestsNb=2
+Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART1_RX.0.Instance=DMA1_Channel5
+Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE
+Dma.USART1_RX.0.Mode=DMA_NORMAL
+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
+Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
+Dma.USART1_TX.1.Instance=DMA1_Channel4
+Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE
+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
+File.Version=6
+KeepUserPlacement=false
+Mcu.Family=STM32F1
+Mcu.IP0=ADC1
+Mcu.IP1=ADC2
+Mcu.IP2=DMA
+Mcu.IP3=NVIC
+Mcu.IP4=RCC
+Mcu.IP5=SYS
+Mcu.IP6=USART1
+Mcu.IPNb=7
+Mcu.Name=STM32F103C(8-B)Tx
+Mcu.Package=LQFP48
+Mcu.Pin0=PC13-TAMPER-RTC
+Mcu.Pin1=PC14-OSC32_IN
+Mcu.Pin10=PA5
+Mcu.Pin11=PA6
+Mcu.Pin12=PA7
+Mcu.Pin13=PB0
+Mcu.Pin14=PB1
+Mcu.Pin15=PB2
+Mcu.Pin16=PB10
+Mcu.Pin17=PB11
+Mcu.Pin18=PB12
+Mcu.Pin19=PB13
+Mcu.Pin2=PC15-OSC32_OUT
+Mcu.Pin20=PB14
+Mcu.Pin21=PA9
+Mcu.Pin22=PA10
+Mcu.Pin23=PA13
+Mcu.Pin24=PA14
+Mcu.Pin25=PB7
+Mcu.Pin26=PB8
+Mcu.Pin27=PB9
+Mcu.Pin28=VP_ADC1_TempSens_Input
+Mcu.Pin29=VP_ADC1_Vref_Input
+Mcu.Pin3=PD0-OSC_IN
+Mcu.Pin30=VP_SYS_VS_Systick
+Mcu.Pin4=PD1-OSC_OUT
+Mcu.Pin5=PA0-WKUP
+Mcu.Pin6=PA1
+Mcu.Pin7=PA2
+Mcu.Pin8=PA3
+Mcu.Pin9=PA4
+Mcu.PinsNb=31
+Mcu.UserConstants=
+Mcu.UserName=STM32F103CBTx
+MxCube.Version=4.19.0
+MxDb.Version=DB.4.0.190
+NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true
+NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:false\:true
+NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true
+NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true
+NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true
+NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true
+NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true
+NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
+NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true
+NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
+NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true
+NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true
+PA0-WKUP.Signal=ADCx_IN0
+PA1.Signal=ADCx_IN1
+PA10.Mode=Asynchronous
+PA10.Signal=USART1_RX
+PA13.Mode=Serial_Wire
+PA13.Signal=SYS_JTMS-SWDIO
+PA14.Mode=Serial_Wire
+PA14.Signal=SYS_JTCK-SWCLK
+PA2.Signal=ADCx_IN2
+PA3.Signal=ADCx_IN3
+PA4.Signal=ADCx_IN4
+PA5.Signal=ADCx_IN5
+PA6.Signal=ADCx_IN6
+PA7.Signal=ADCx_IN7
+PA9.Mode=Asynchronous
+PA9.Signal=USART1_TX
+PB0.Signal=ADCx_IN8
+PB1.Signal=ADCx_IN9
+PB10.GPIOParameters=GPIO_Label
+PB10.GPIO_Label=LED5
+PB10.Locked=true
+PB10.Signal=GPIO_Output
+PB11.GPIOParameters=GPIO_Label
+PB11.GPIO_Label=LED3
+PB11.Locked=true
+PB11.Signal=GPIO_Output
+PB12.GPIOParameters=GPIO_Label
+PB12.GPIO_Label=LED9
+PB12.Locked=true
+PB12.Signal=GPIO_Output
+PB13.GPIOParameters=GPIO_Label
+PB13.GPIO_Label=LED8
+PB13.Locked=true
+PB13.Signal=GPIO_Output
+PB14.GPIOParameters=GPIO_Label
+PB14.GPIO_Label=LEd7
+PB14.Locked=true
+PB14.Signal=GPIO_Output
+PB2.GPIOParameters=GPIO_Label
+PB2.GPIO_Label=LED4
+PB2.Locked=true
+PB2.Signal=GPIO_Output
+PB7.GPIOParameters=GPIO_Label
+PB7.GPIO_Label=LED2
+PB7.Locked=true
+PB7.Signal=GPIO_Output
+PB8.GPIOParameters=GPIO_Label
+PB8.GPIO_Label=LED0
+PB8.Locked=true
+PB8.Signal=GPIO_Output
+PB9.GPIOParameters=GPIO_Label
+PB9.GPIO_Label=LED1
+PB9.Locked=true
+PB9.Signal=GPIO_Output
+PC13-TAMPER-RTC.GPIOParameters=GPIO_Label
+PC13-TAMPER-RTC.GPIO_Label=en_TX
+PC13-TAMPER-RTC.Locked=true
+PC13-TAMPER-RTC.Signal=GPIO_Output
+PC14-OSC32_IN.GPIOParameters=GPIO_Label
+PC14-OSC32_IN.GPIO_Label=en_RX
+PC14-OSC32_IN.Locked=true
+PC14-OSC32_IN.Signal=GPIO_Output
+PC15-OSC32_OUT.GPIOParameters=GPIO_Label
+PC15-OSC32_OUT.GPIO_Label=LED6
+PC15-OSC32_OUT.Locked=true
+PC15-OSC32_OUT.Signal=GPIO_Output
+PCC.Checker=false
+PCC.Line=STM32F103
+PCC.MCU=STM32F103C(8-B)Tx
+PCC.MXVersion=4.19.0
+PCC.PartNumber=STM32F103CBTx
+PCC.Seq0=0
+PCC.Series=STM32F1
+PCC.Temperature=25
+PCC.Vdd=3.3
+PD0-OSC_IN.Mode=HSE-External-Oscillator
+PD0-OSC_IN.Signal=RCC_OSC_IN
+PD1-OSC_OUT.Mode=HSE-External-Oscillator
+PD1-OSC_OUT.Signal=RCC_OSC_OUT
+ProjectManager.AskForMigrate=true
+ProjectManager.BackupPrevious=false
+ProjectManager.CompilerOptimize=2
+ProjectManager.ComputerToolchain=false
+ProjectManager.CoupleFile=true
+ProjectManager.CustomerFirmwarePackage=/home/shernand/STM32Cube/Repository/STM32Cube_FW_F1_V1.4.0
+ProjectManager.DefaultFWLocation=true
+ProjectManager.DeletePrevious=true
+ProjectManager.DeviceId=STM32F103CBTx
+ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.4.0
+ProjectManager.FreePins=false
+ProjectManager.HalAssertFull=false
+ProjectManager.HeapSize=0x200
+ProjectManager.KeepUserCode=true
+ProjectManager.LastFirmware=true
+ProjectManager.LibraryCopy=1
+ProjectManager.PreviousToolchain=
+ProjectManager.ProjectBuild=false
+ProjectManager.ProjectFileName=ir_feet.ioc
+ProjectManager.ProjectName=ir_feet
+ProjectManager.StackSize=0x400
+ProjectManager.TargetToolchain=EWARM
+ProjectManager.ToolChainLocation=/home/shernand/humanoids/ir_feet_fw/cubemx/ir_feet
+ProjectManager.UnderRoot=false
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL,2-MX_DMA_Init-DMA-false-HAL,3-SystemClock_Config-RCC-false-HAL,4-MX_ADC1_Init-ADC1-false-HAL,5-MX_ADC2_Init-ADC2-false-HAL,6-MX_USART1_UART_Init-USART1-false-HAL
+RCC.ADCFreqValue=12000000
+RCC.ADCPresc=RCC_ADCPCLK2_DIV6
+RCC.AHBFreq_Value=72000000
+RCC.APB1CLKDivider=RCC_HCLK_DIV2
+RCC.APB1Freq_Value=36000000
+RCC.APB1TimFreq_Value=72000000
+RCC.APB2Freq_Value=72000000
+RCC.APB2TimFreq_Value=72000000
+RCC.FCLKCortexFreq_Value=72000000
+RCC.FamilyName=M
+RCC.HCLKFreq_Value=72000000
+RCC.HSIState=RCC_HSI_ON
+RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSIState,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value
+RCC.MCOFreq_Value=72000000
+RCC.PLLCLKFreq_Value=72000000
+RCC.PLLMCOFreq_Value=36000000
+RCC.PLLMUL=RCC_PLL_MUL9
+RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
+RCC.SYSCLKFreq_VALUE=72000000
+RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
+RCC.TimSysFreq_Value=72000000
+RCC.USBFreq_Value=72000000
+RCC.VCOOutput2Freq_Value=8000000
+SH.ADCx_IN0.0=ADC1_IN0,IN0
+SH.ADCx_IN0.ConfNb=1
+SH.ADCx_IN1.0=ADC2_IN1,IN1
+SH.ADCx_IN1.ConfNb=1
+SH.ADCx_IN2.0=ADC1_IN2,IN2
+SH.ADCx_IN2.ConfNb=1
+SH.ADCx_IN3.0=ADC2_IN3,IN3
+SH.ADCx_IN3.ConfNb=1
+SH.ADCx_IN4.0=ADC1_IN4,IN4
+SH.ADCx_IN4.ConfNb=1
+SH.ADCx_IN5.0=ADC2_IN5,IN5
+SH.ADCx_IN5.ConfNb=1
+SH.ADCx_IN6.0=ADC1_IN6,IN6
+SH.ADCx_IN6.ConfNb=1
+SH.ADCx_IN7.0=ADC2_IN7,IN7
+SH.ADCx_IN7.ConfNb=1
+SH.ADCx_IN8.0=ADC2_IN8,IN8
+SH.ADCx_IN8.ConfNb=1
+SH.ADCx_IN9.0=ADC2_IN9,IN9
+SH.ADCx_IN9.ConfNb=1
+VP_ADC1_TempSens_Input.Mode=IN-TempSens
+VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input
+VP_ADC1_Vref_Input.Mode=IN-Vrefint
+VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+board=ir_feet