diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..e139cc60 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "CubeMX2Makefile"] + path = CubeMX2Makefile + url = https://github.com/madcowswe/CubeMX2Makefile.git diff --git a/CubeMX2Makefile b/CubeMX2Makefile new file mode 160000 index 00000000..c9c61970 --- /dev/null +++ b/CubeMX2Makefile @@ -0,0 +1 @@ +Subproject commit c9c61970c8aed8866f31bbaabddc5a6a6e475681 diff --git a/stm32cubemx/.gitignore b/stm32cubemx/.gitignore new file mode 100644 index 00000000..fb8bd94e --- /dev/null +++ b/stm32cubemx/.gitignore @@ -0,0 +1,6 @@ +# Ignore everything +* + +# But not these files... +!.gitignore +!Odrive.ioc \ No newline at end of file diff --git a/stm32cubemx/Odrive.ioc b/stm32cubemx/Odrive.ioc new file mode 100755 index 00000000..a6ccddbf --- /dev/null +++ b/stm32cubemx/Odrive.ioc @@ -0,0 +1,376 @@ +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_0 +ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2 +ADC1.ContinuousConvMode=DISABLE +ADC1.DMAContinuousRequests=DISABLE +ADC1.DataAlign=ADC_DATAALIGN_RIGHT +ADC1.DiscontinuousConvMode=DISABLE +ADC1.EOCSelection=ADC_EOC_SINGLE_CONV +ADC1.EnableAnalogWatchDog=false +ADC1.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler,Resolution,DataAlign,ScanConvMode,ContinuousConvMode,DiscontinuousConvMode,DMAContinuousRequests,EOCSelection,NbrOfConversion,ExternalTrigConvEdge,InjNumberOfConversion,EnableAnalogWatchDog,Mode +ADC1.InjNumberOfConversion=0 +ADC1.Mode=__NULL +ADC1.NbrOfConversion=1 +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.Resolution=ADC_RESOLUTION_12B +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES +ADC1.ScanConvMode=DISABLE +ADC1.master=1 +ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_0 +ADC2.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2 +ADC2.ContinuousConvMode=DISABLE +ADC2.DMAContinuousRequests=DISABLE +ADC2.DataAlign=ADC_DATAALIGN_RIGHT +ADC2.DiscontinuousConvMode=DISABLE +ADC2.EOCSelection=ADC_EOC_SINGLE_CONV +ADC2.EnableAnalogWatchDog=false +ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,Resolution,DataAlign,ScanConvMode,ContinuousConvMode,DiscontinuousConvMode,DMAContinuousRequests,EOCSelection,NbrOfConversion,InjNumberOfConversion,EnableAnalogWatchDog +ADC2.InjNumberOfConversion=0 +ADC2.NbrOfConversion=1 +ADC2.NbrOfConversionFlag=1 +ADC2.Rank-0\#ChannelRegularConversion=1 +ADC2.Resolution=ADC_RESOLUTION_12B +ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES +ADC2.ScanConvMode=DISABLE +ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_0 +ADC3.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2 +ADC3.ContinuousConvMode=DISABLE +ADC3.DMAContinuousRequests=DISABLE +ADC3.DataAlign=ADC_DATAALIGN_RIGHT +ADC3.DiscontinuousConvMode=DISABLE +ADC3.EOCSelection=ADC_EOC_SINGLE_CONV +ADC3.EnableAnalogWatchDog=false +ADC3.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE +ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,Resolution,DataAlign,ScanConvMode,ContinuousConvMode,DiscontinuousConvMode,DMAContinuousRequests,EOCSelection,NbrOfConversion,ExternalTrigConvEdge,InjNumberOfConversion,EnableAnalogWatchDog +ADC3.InjNumberOfConversion=0 +ADC3.NbrOfConversion=1 +ADC3.NbrOfConversionFlag=1 +ADC3.Rank-0\#ChannelRegularConversion=1 +ADC3.Resolution=ADC_RESOLUTION_12B +ADC3.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES +ADC3.ScanConvMode=DISABLE +CAN1.CalculateTimeBit=1142 +CAN1.CalculateTimeQuantum=380.95238095238096 +CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit +FREERTOS.IPParameters=Tasks01 +FREERTOS.Tasks01=defaultTask,-3,128,StartDefaultTask,Default +File.Version=6 +KeepUserPlacement=false +Mcu.Family=STM32F4 +Mcu.IP0=ADC1 +Mcu.IP1=ADC2 +Mcu.IP10=TIM2 +Mcu.IP11=TIM3 +Mcu.IP12=TIM4 +Mcu.IP13=TIM8 +Mcu.IP14=USB_DEVICE +Mcu.IP15=USB_OTG_FS +Mcu.IP2=ADC3 +Mcu.IP3=CAN1 +Mcu.IP4=FREERTOS +Mcu.IP5=NVIC +Mcu.IP6=RCC +Mcu.IP7=SPI3 +Mcu.IP8=SYS +Mcu.IP9=TIM1 +Mcu.IPNb=16 +Mcu.Name=STM32F405RGTx +Mcu.Package=LQFP64 +Mcu.Pin0=PH0-OSC_IN +Mcu.Pin1=PH1-OSC_OUT +Mcu.Pin10=PA4 +Mcu.Pin11=PA5 +Mcu.Pin12=PA6 +Mcu.Pin13=PA7 +Mcu.Pin14=PC4 +Mcu.Pin15=PC5 +Mcu.Pin16=PB0 +Mcu.Pin17=PB1 +Mcu.Pin18=PB10 +Mcu.Pin19=PB11 +Mcu.Pin2=PC0 +Mcu.Pin20=PB13 +Mcu.Pin21=PB14 +Mcu.Pin22=PB15 +Mcu.Pin23=PC6 +Mcu.Pin24=PC7 +Mcu.Pin25=PC8 +Mcu.Pin26=PA8 +Mcu.Pin27=PA9 +Mcu.Pin28=PA10 +Mcu.Pin29=PA11 +Mcu.Pin3=PC1 +Mcu.Pin30=PA12 +Mcu.Pin31=PA13 +Mcu.Pin32=PA14 +Mcu.Pin33=PC10 +Mcu.Pin34=PC11 +Mcu.Pin35=PC12 +Mcu.Pin36=PB4 +Mcu.Pin37=PB5 +Mcu.Pin38=PB6 +Mcu.Pin39=PB7 +Mcu.Pin4=PC2 +Mcu.Pin40=PB8 +Mcu.Pin41=PB9 +Mcu.Pin42=VP_FREERTOS_VS_ENABLE +Mcu.Pin43=VP_SYS_VS_tim14 +Mcu.Pin44=VP_TIM1_VS_ClockSourceINT +Mcu.Pin45=VP_TIM2_VS_ClockSourceINT +Mcu.Pin46=VP_TIM8_VS_ClockSourceINT +Mcu.Pin47=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS +Mcu.Pin5=PC3 +Mcu.Pin6=PA0-WKUP +Mcu.Pin7=PA1 +Mcu.Pin8=PA2 +Mcu.Pin9=PA3 +Mcu.PinsNb=48 +Mcu.UserConstants= +Mcu.UserName=STM32F405RGTx +MxCube.Version=4.14.0 +MxDb.Version=DB.4.0.140 +NVIC.BusFault_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.OTG_FS_IRQn=true\:5\:0\:false\:false\:true +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true +NVIC.TIM8_TRG_COM_TIM14_IRQn=true\:0\:0\:false\:false\:true +NVIC.TimeBase=TIM8_TRG_COM_TIM14_IRQn +NVIC.TimeBaseIP=TIM14 +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true +PA0-WKUP.Signal=ADCx_IN0 +PA1.Signal=ADCx_IN1 +PA10.Signal=S_TIM1_CH3 +PA11.Mode=Device_Only +PA11.Signal=USB_OTG_FS_DM +PA12.Mode=Device_Only +PA12.Signal=USB_OTG_FS_DP +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.Mode=PWM Generation1 CH1 CH1N +PA7.Signal=TIM8_CH1N +PA8.Signal=S_TIM1_CH1 +PA9.Signal=S_TIM1_CH2 +PB0.Mode=PWM Generation2 CH2 CH2N +PB0.Signal=TIM1_CH2N +PB1.Mode=PWM Generation3 CH3 CH3N +PB1.Signal=TIM1_CH3N +PB10.Signal=S_TIM2_CH3 +PB11.Signal=S_TIM2_CH4 +PB13.Mode=PWM Generation1 CH1 CH1N +PB13.Signal=TIM1_CH1N +PB14.Mode=PWM Generation2 CH2 CH2N +PB14.Signal=TIM8_CH2N +PB15.Mode=PWM Generation3 CH3 CH3N +PB15.Signal=TIM8_CH3N +PB4.Signal=S_TIM3_CH1 +PB5.Signal=S_TIM3_CH2 +PB6.Signal=S_TIM4_CH1 +PB7.Signal=S_TIM4_CH2 +PB8.Mode=Master +PB8.Signal=CAN1_RX +PB9.Mode=Master +PB9.Signal=CAN1_TX +PC0.Signal=ADCx_IN10 +PC1.Signal=ADCx_IN11 +PC10.Mode=Full_Duplex_Master +PC10.Signal=SPI3_SCK +PC11.Mode=Full_Duplex_Master +PC11.Signal=SPI3_MISO +PC12.Mode=Full_Duplex_Master +PC12.Signal=SPI3_MOSI +PC2.Signal=ADCx_IN12 +PC3.Signal=ADCx_IN13 +PC4.Signal=ADCx_IN14 +PC5.Signal=ADCx_IN15 +PC6.Signal=S_TIM8_CH1 +PC7.Signal=S_TIM8_CH2 +PC8.Signal=S_TIM8_CH3 +PCC.Checker=false +PCC.Line=STM32F405/415 +PCC.MCU=STM32F405RGTx +PCC.MXVersion=4.14.0 +PCC.PartNumber=STM32F405RGTx +PCC.Seq0=0 +PCC.Series=STM32F4 +PCC.Temperature=25 +PCC.Vdd=3.3 +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 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=2 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F405RGTx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.11.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.PreviousToolchain=SW4STM32 +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=Odrive.ioc +ProjectManager.ProjectName=Odrive +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=SW4STM32 +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_ADC1_Init-ADC1-false,3-MX_ADC2_Init-ADC2-false,4-MX_CAN1_Init-CAN1-false,5-MX_TIM1_Init-TIM1-false,6-MX_TIM8_Init-TIM8-false,7-MX_USB_DEVICE_Init-USB_DEVICE-false,8-MX_TIM3_Init-TIM3-false,9-MX_TIM4_Init-TIM4-false,10-MX_SPI3_Init-SPI3-false,11-MX_TIM2_Init-TIM2-false,12-MX_ADC3_Init-ADC3-false +RCC.48MHZClocksFreq_Value=48000000 +RCC.AHBFreq_Value=168000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV4 +RCC.APB1Freq_Value=42000000 +RCC.APB1TimCLKDivider=2 +RCC.APB1TimFreq_Value=84000000 +RCC.APB2CLKDivider=RCC_HCLK_DIV2 +RCC.APB2Freq_Value=84000000 +RCC.APB2TimCLKDivider=1 +RCC.APB2TimFreq_Value=84000000 +RCC.CortexFreq_Value=168000000 +RCC.EthernetFreq_Value=168000000 +RCC.FCLKCortexFreq_Value=168000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=168000000 +RCC.HSE_VALUE=8000000 +RCC.HSI_VALUE=16000000 +RCC.I2SClocksFreq_Value=192000000 +RCC.IPParameters=FamilyName,HSE_VALUE,RTCHSEDivFreq_Value,HSI_VALUE,VCOInputFreq_Value,VCOOutputFreq_Value,PLLCLKFreq_Value,PLLQCLKFreq_Value,VCOI2SOutputFreq_Value,VcooutputI2S,I2SClocksFreq_Value,LSI_VALUE,RTCFreq_Value,SYSCLKFreq_VALUE,AHBFreq_Value,CortexFreq_Value,APB1Freq_Value,APB2Freq_Value,48MHZClocksFreq_Value,HCLKFreq_Value,FCLKCortexFreq_Value,APB1TimFreq_Value,APB2TimFreq_Value,EthernetFreq_Value,MCO2PinFreq_Value,SYSCLKSource,PLLQ,PLLM,APB1TimCLKDivider,PLLN,APB1CLKDivider,APB2CLKDivider,APB2TimCLKDivider,LSE_VALUE +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=32000 +RCC.MCO2PinFreq_Value=168000000 +RCC.PLLCLKFreq_Value=168000000 +RCC.PLLM=4 +RCC.PLLN=168 +RCC.PLLQ=7 +RCC.PLLQCLKFreq_Value=48000000 +RCC.RTCFreq_Value=32000 +RCC.RTCHSEDivFreq_Value=4000000 +RCC.SYSCLKFreq_VALUE=168000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.VCOI2SOutputFreq_Value=384000000 +RCC.VCOInputFreq_Value=2000000 +RCC.VCOOutputFreq_Value=336000000 +RCC.VcooutputI2S=192000000 +SH.ADCx_IN0.0=ADC1_IN0,IN0 +SH.ADCx_IN0.1=ADC2_IN0,IN0 +SH.ADCx_IN0.2=ADC3_IN0,IN0 +SH.ADCx_IN0.ConfNb=3 +SH.ADCx_IN1.0=ADC1_IN1,IN1 +SH.ADCx_IN1.1=ADC2_IN1,IN1 +SH.ADCx_IN1.2=ADC3_IN1,IN1 +SH.ADCx_IN1.ConfNb=3 +SH.ADCx_IN10.0=ADC1_IN10,IN10 +SH.ADCx_IN10.1=ADC2_IN10,IN10 +SH.ADCx_IN10.2=ADC3_IN10,IN10 +SH.ADCx_IN10.ConfNb=3 +SH.ADCx_IN11.0=ADC1_IN11,IN11 +SH.ADCx_IN11.1=ADC2_IN11,IN11 +SH.ADCx_IN11.2=ADC3_IN11,IN11 +SH.ADCx_IN11.ConfNb=3 +SH.ADCx_IN12.0=ADC1_IN12,IN12 +SH.ADCx_IN12.1=ADC2_IN12,IN12 +SH.ADCx_IN12.2=ADC3_IN12,IN12 +SH.ADCx_IN12.ConfNb=3 +SH.ADCx_IN13.0=ADC1_IN13,IN13 +SH.ADCx_IN13.1=ADC2_IN13,IN13 +SH.ADCx_IN13.2=ADC3_IN13,IN13 +SH.ADCx_IN13.ConfNb=3 +SH.ADCx_IN14.0=ADC1_IN14,IN14 +SH.ADCx_IN14.1=ADC2_IN14,IN14 +SH.ADCx_IN14.ConfNb=2 +SH.ADCx_IN15.0=ADC1_IN15,IN15 +SH.ADCx_IN15.1=ADC2_IN15,IN15 +SH.ADCx_IN15.ConfNb=2 +SH.ADCx_IN2.0=ADC1_IN2,IN2 +SH.ADCx_IN2.1=ADC2_IN2,IN2 +SH.ADCx_IN2.2=ADC3_IN2,IN2 +SH.ADCx_IN2.ConfNb=3 +SH.ADCx_IN3.0=ADC1_IN3,IN3 +SH.ADCx_IN3.1=ADC2_IN3,IN3 +SH.ADCx_IN3.2=ADC3_IN3,IN3 +SH.ADCx_IN3.ConfNb=3 +SH.ADCx_IN4.0=ADC1_IN4,IN4 +SH.ADCx_IN4.1=ADC2_IN4,IN4 +SH.ADCx_IN4.ConfNb=2 +SH.ADCx_IN5.0=ADC1_IN5,IN5 +SH.ADCx_IN5.1=ADC2_IN5,IN5 +SH.ADCx_IN5.ConfNb=2 +SH.ADCx_IN6.0=ADC1_IN6,IN6 +SH.ADCx_IN6.1=ADC2_IN6,IN6 +SH.ADCx_IN6.ConfNb=2 +SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 CH1N +SH.S_TIM1_CH1.ConfNb=1 +SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 CH2N +SH.S_TIM1_CH2.ConfNb=1 +SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 CH3N +SH.S_TIM1_CH3.ConfNb=1 +SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3 +SH.S_TIM2_CH3.ConfNb=1 +SH.S_TIM2_CH4.0=TIM2_CH4,PWM Generation4 CH4 +SH.S_TIM2_CH4.ConfNb=1 +SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface +SH.S_TIM3_CH1.ConfNb=1 +SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface +SH.S_TIM3_CH2.ConfNb=1 +SH.S_TIM4_CH1.0=TIM4_CH1,Encoder_Interface +SH.S_TIM4_CH1.ConfNb=1 +SH.S_TIM4_CH2.0=TIM4_CH2,Encoder_Interface +SH.S_TIM4_CH2.ConfNb=1 +SH.S_TIM8_CH1.0=TIM8_CH1,PWM Generation1 CH1 CH1N +SH.S_TIM8_CH1.ConfNb=1 +SH.S_TIM8_CH2.0=TIM8_CH2,PWM Generation2 CH2 CH2N +SH.S_TIM8_CH2.ConfNb=1 +SH.S_TIM8_CH3.0=TIM8_CH3,PWM Generation3 CH3 CH3N +SH.S_TIM8_CH3.ConfNb=1 +SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 +SPI3.CalculateBaudRate=21.0 MBits/s +SPI3.IPParameters=Mode,CalculateBaudRate,BaudRatePrescaler +SPI3.Mode=SPI_MODE_MASTER +TIM1.Channel-PWM\ Generation2\ CH2\ CH2N=TIM_CHANNEL_2 +TIM1.Channel-PWM\ Generation3\ CH3\ CH3N=TIM_CHANNEL_3 +TIM1.IPParameters=Channel-PWM Generation2 CH2 CH2N,Channel-PWM Generation3 CH3 CH3N +TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM2.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM2.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4 +TIM8.Channel-PWM\ Generation2\ CH2\ CH2N=TIM_CHANNEL_2 +TIM8.Channel-PWM\ Generation3\ CH3\ CH3N=TIM_CHANNEL_3 +TIM8.IPParameters=Channel-PWM Generation3 CH3 CH3N,Channel-PWM Generation2 CH2 CH2N +USB_DEVICE.CLASS_NAME-CDC_FS=CDC +USB_DEVICE.CLASS_NAME_FS=CDC +USB_DEVICE.IPParameters=VirtualMode-CDC_FS,VirtualModeFS,USBD_HandleTypeDef-CDC_FS,CLASS_NAME-CDC_FS,CLASS_NAME_FS +USB_DEVICE.USBD_HandleTypeDef-CDC_FS=hUsbDeviceFS +USB_DEVICE.VirtualMode-CDC_FS=Cdc +USB_DEVICE.VirtualModeFS=Cdc_FS +USB_OTG_FS.IPParameters=VirtualMode +USB_OTG_FS.VirtualMode=Device_Only +VP_FREERTOS_VS_ENABLE.Mode=Enabled +VP_FREERTOS_VS_ENABLE.Signal=FREERTOS_VS_ENABLE +VP_SYS_VS_tim14.Mode=TIM14 +VP_SYS_VS_tim14.Signal=SYS_VS_tim14 +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +VP_TIM8_VS_ClockSourceINT.Mode=Internal +VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS +board=Odrive