diff --git a/firmware/components/mainboard/mainboard.ioc b/firmware/components/CAN/CAN-A/ModuleCAN.ioc similarity index 51% rename from firmware/components/mainboard/mainboard.ioc rename to firmware/components/CAN/CAN-A/ModuleCAN.ioc index 9f6a74ef..ef4df49c 100644 --- a/firmware/components/mainboard/mainboard.ioc +++ b/firmware/components/CAN/CAN-A/ModuleCAN.ioc @@ -2,10 +2,11 @@ CAD.formats= CAD.pinconfig= CAD.provider= -CAN.CalculateBaudRate=749999 -CAN.CalculateTimeBit=1333 -CAN.CalculateTimeQuantum=444.44444444444446 -CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate +CAN.CalculateBaudRate=533333 +CAN.CalculateTimeBit=1875 +CAN.CalculateTimeQuantum=625.0 +CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler +CAN.Prescaler=15 File.Version=6 GPIO.groupedBy= KeepUserPlacement=false @@ -15,42 +16,24 @@ Mcu.IP0=CAN Mcu.IP1=NVIC Mcu.IP2=RCC Mcu.IP3=SYS -Mcu.IP4=USART2 -Mcu.IP5=USB -Mcu.IP6=USB_DEVICE -Mcu.IPNb=7 +Mcu.IP4=USB +Mcu.IP5=USB_DEVICE +Mcu.IPNb=6 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC13-TAMPER-RTC Mcu.Pin1=PD0-OSC_IN -Mcu.Pin10=PB1 -Mcu.Pin11=PB2 -Mcu.Pin12=PB10 -Mcu.Pin13=PB11 -Mcu.Pin14=PB12 -Mcu.Pin15=PB13 -Mcu.Pin16=PB14 -Mcu.Pin17=PB15 -Mcu.Pin18=PA8 -Mcu.Pin19=PA9 +Mcu.Pin10=VP_SYS_VS_Systick +Mcu.Pin11=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS Mcu.Pin2=PD1-OSC_OUT -Mcu.Pin20=PA10 -Mcu.Pin21=PA11 -Mcu.Pin22=PA12 -Mcu.Pin23=PA13 -Mcu.Pin24=PB8 -Mcu.Pin25=PB9 -Mcu.Pin26=VP_SYS_VS_ND -Mcu.Pin27=VP_SYS_VS_Systick -Mcu.Pin28=VP_USB_DEVICE_VS_USB_DEVICE_HID_FS -Mcu.Pin3=PA2 -Mcu.Pin4=PA3 -Mcu.Pin5=PA4 -Mcu.Pin6=PA5 -Mcu.Pin7=PA6 -Mcu.Pin8=PA7 -Mcu.Pin9=PB0 -Mcu.PinsNb=29 +Mcu.Pin3=PA4 +Mcu.Pin4=PA11 +Mcu.Pin5=PA12 +Mcu.Pin6=PA13 +Mcu.Pin7=PA14 +Mcu.Pin8=PB8 +Mcu.Pin9=PB9 +Mcu.PinsNb=12 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -69,70 +52,20 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -PA10.Locked=true -PA10.Signal=GPIO_Output PA11.Mode=Device PA11.Signal=USB_DM PA12.Mode=Device PA12.Signal=USB_DP PA13.Locked=true -PA13.Signal=GPIO_Output -PA2.Mode=Asynchronous -PA2.Signal=USART2_TX -PA3.Mode=Asynchronous -PA3.Signal=USART2_RX -PA4.GPIOParameters=GPIO_PuPd -PA4.GPIO_PuPd=GPIO_PULLDOWN +PA13.Mode=Serial_Wire +PA13.Signal=SYS_JTMS-SWDIO +PA14.Locked=true +PA14.Mode=Serial_Wire +PA14.Signal=SYS_JTCK-SWCLK PA4.Locked=true PA4.Signal=GPIO_Input -PA5.GPIOParameters=GPIO_PuPd -PA5.GPIO_PuPd=GPIO_PULLDOWN -PA5.Locked=true -PA5.Signal=GPIO_Input -PA6.GPIOParameters=GPIO_PuPd -PA6.GPIO_PuPd=GPIO_PULLDOWN -PA6.Locked=true -PA6.Signal=GPIO_Input -PA7.GPIOParameters=GPIO_PuPd -PA7.GPIO_PuPd=GPIO_PULLDOWN -PA7.Locked=true -PA7.Signal=GPIO_Input -PA8.Locked=true -PA8.Signal=GPIO_Output -PA9.Locked=true -PA9.Signal=GPIO_Output -PB0.GPIOParameters=GPIO_PuPd -PB0.GPIO_PuPd=GPIO_PULLDOWN -PB0.Locked=true -PB0.Signal=GPIO_Input -PB1.GPIOParameters=GPIO_PuPd -PB1.GPIO_PuPd=GPIO_PULLDOWN -PB1.Locked=true -PB1.Signal=GPIO_Input -PB10.GPIOParameters=GPIO_PuPd -PB10.GPIO_PuPd=GPIO_PULLDOWN -PB10.Locked=true -PB10.Signal=GPIO_Input -PB11.GPIOParameters=GPIO_PuPd -PB11.GPIO_PuPd=GPIO_PULLDOWN -PB11.Locked=true -PB11.Signal=GPIO_Input -PB12.Locked=true -PB12.Signal=GPIO_Output -PB13.Locked=true -PB13.Signal=GPIO_Output -PB14.Locked=true -PB14.Signal=GPIO_Output -PB15.Locked=true -PB15.Signal=GPIO_Output -PB2.GPIOParameters=GPIO_PuPd -PB2.GPIO_PuPd=GPIO_PULLDOWN -PB2.Locked=true -PB2.Signal=GPIO_Input -PB8.Locked=true PB8.Mode=CAN_Activate PB8.Signal=CAN_RX -PB9.Locked=true PB9.Mode=CAN_Activate PB9.Signal=CAN_TX PC13-TAMPER-RTC.Locked=true @@ -146,7 +79,7 @@ ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false ProjectManager.CompilerOptimize=6 ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=false +ProjectManager.CoupleFile=true ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true @@ -159,11 +92,11 @@ ProjectManager.KeepUserCode=true ProjectManager.LastFirmware=true ProjectManager.LibraryCopy=1 ProjectManager.MainLocation=Core/Src -ProjectManager.NoMain=true +ProjectManager.NoMain=false ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=mainboard.ioc -ProjectManager.ProjectName=mainboard +ProjectManager.ProjectFileName=ModuleCAN.ioc +ProjectManager.ProjectName=ModuleCAN ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 @@ -172,38 +105,35 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN_Init-CAN-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false -RCC.ADCFreqValue=36000000 -RCC.AHBFreq_Value=72000000 +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN_Init-CAN-false-HAL-true,4-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false +RCC.ADCFreqValue=24000000 +RCC.AHBFreq_Value=48000000 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.APB1Freq_Value=24000000 +RCC.APB1TimFreq_Value=48000000 +RCC.APB2Freq_Value=48000000 +RCC.APB2TimFreq_Value=48000000 +RCC.FCLKCortexFreq_Value=48000000 RCC.FamilyName=M -RCC.HCLKFreq_Value=72000000 -RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,USBPrescaler,VCOOutput2Freq_Value -RCC.MCOFreq_Value=72000000 -RCC.PLLCLKFreq_Value=72000000 -RCC.PLLMCOFreq_Value=36000000 -RCC.PLLMUL=RCC_PLL_MUL9 -RCC.SYSCLKFreq_VALUE=72000000 +RCC.HCLKFreq_Value=48000000 +RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value +RCC.MCOFreq_Value=48000000 +RCC.PLLCLKFreq_Value=48000000 +RCC.PLLMCOFreq_Value=24000000 +RCC.PLLMUL=RCC_PLL_MUL6 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.SYSCLKFreq_VALUE=48000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.TimSysFreq_Value=72000000 +RCC.TimSysFreq_Value=48000000 RCC.USBFreq_Value=48000000 -RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5 RCC.VCOOutput2Freq_Value=8000000 -USART2.IPParameters=VirtualMode -USART2.VirtualMode=VM_ASYNC -USB_DEVICE.CLASS_NAME_FS=HID -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS -USB_DEVICE.VirtualMode=Hid -USB_DEVICE.VirtualModeFS=Hid_FS -VP_SYS_VS_ND.Mode=No_Debug -VP_SYS_VS_ND.Signal=SYS_VS_ND +USB_DEVICE.CLASS_NAME_FS=CDC +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,PRODUCT_STRING_CDC_FS +USB_DEVICE.PRODUCT_STRING_CDC_FS=Modular Keyboard - Module VCOM +USB_DEVICE.VirtualMode=Cdc +USB_DEVICE.VirtualModeFS=Cdc_FS VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick -VP_USB_DEVICE_VS_USB_DEVICE_HID_FS.Mode=HID_FS -VP_USB_DEVICE_VS_USB_DEVICE_HID_FS.Signal=USB_DEVICE_VS_USB_DEVICE_HID_FS +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=custom diff --git a/firmware/components/CAN/CAN-A/stm32pio.ini b/firmware/components/CAN/CAN-A/stm32pio.ini new file mode 100644 index 00000000..f2c2ec4e --- /dev/null +++ b/firmware/components/CAN/CAN-A/stm32pio.ini @@ -0,0 +1,22 @@ +[app] +platformio_cmd = platformio +cubemx_cmd = /opt/stm32cubemx/STM32CubeMX +java_cmd = java + +[project] +cubemx_script_content = config load ${ioc_file_absolute_path} + generate code ${project_dir_absolute_path} + exit +platformio_ini_patch_content = [platformio] + include_dir = Inc + src_dir = Src +board = +ioc_file = ModuleCAN.ioc +cleanup_ignore = ModuleCAN.ioc +cleanup_use_git = False +inspect_ioc = True +last_error = PlatformIO board is not specified, it will be needed on PlatformIO project creation. Type 'pio boards' or go to https://platformio.org to find an appropriate identifier + Traceback (most recent call last): + File "/home/kymkim/.local/share/pipx/venvs/stm32pio/lib/python3.13/site-packages/stm32pio/cli/app.py", line 195, in main + raise Exception(no_board_message) + diff --git a/firmware/components/CAN/CAN-B/.gitignore b/firmware/components/CAN/CAN-B/.gitignore new file mode 100644 index 00000000..03f4a3c1 --- /dev/null +++ b/firmware/components/CAN/CAN-B/.gitignore @@ -0,0 +1 @@ +.pio diff --git a/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json b/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..a17400b1 --- /dev/null +++ b/firmware/components/CAN/CAN-B/.vscode/c_cpp_properties.json @@ -0,0 +1,132 @@ +// +// !!! WARNING !!! AUTO-GENERATED FILE! +// PLEASE DO NOT MODIFY IT AND USE "platformio.ini": +// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags +// +{ + "configurations": [ + { + "name": "PlatformIO", + "includePath": [ + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Inc", + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Device/ST/STM32F1xx/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/hx8347d", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ili9320", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ili9325", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/lis302dl", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/spfd5408", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/st7735", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/stlm75", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/stmpe811", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Adafruit_Shield", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/CPU", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Fonts", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Src", + "" + ], + "browse": { + "limitSymbolsToIncludedHeaders": true, + "path": [ + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Inc", + "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/Device/ST/STM32F1xx/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/hx8347d", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ili9320", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ili9325", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/lis302dl", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/spfd5408", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/st7735", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/stlm75", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/stmpe811", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Adafruit_Shield", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/CPU", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Fonts", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef1/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Src", + "" + ] + }, + "defines": [ + "PLATFORMIO=60118", + "STM32F1", + "STM32F103xB", + "USE_HAL_DRIVER", + "F_CPU=72000000L", + "" + ], + "compilerPath": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc", + "compilerArgs": [ + "-mthumb", + "-mcpu=cortex-m3", + "" + ] + } + ], + "version": 4 +} diff --git a/firmware/components/CAN/CAN-B/.vscode/extensions.json b/firmware/components/CAN/CAN-B/.vscode/extensions.json new file mode 100644 index 00000000..080e70d0 --- /dev/null +++ b/firmware/components/CAN/CAN-B/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/firmware/components/CAN/CAN-B/.vscode/launch.json b/firmware/components/CAN/CAN-B/.vscode/launch.json new file mode 100644 index 00000000..62a33443 --- /dev/null +++ b/firmware/components/CAN/CAN-B/.vscode/launch.json @@ -0,0 +1,47 @@ +// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY +// +// PlatformIO Debugging Solution +// +// Documentation: https://docs.platformio.org/en/latest/plus/debugging.html +// Configuration: https://docs.platformio.org/en/latest/projectconf/sections/env/options/debug/index.html + +{ + "version": "0.2.0", + "configurations": [ + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/build/bluepill_f103c8/firmware.elf", + "projectEnvName": "bluepill_f103c8", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F103xx.svd", + "preLaunchTask": { + "type": "PlatformIO", + "task": "Pre-Debug" + } + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (skip Pre-Debug)", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/build/bluepill_f103c8/firmware.elf", + "projectEnvName": "bluepill_f103c8", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F103xx.svd" + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (without uploading)", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/build/bluepill_f103c8/firmware.elf", + "projectEnvName": "bluepill_f103c8", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F103xx.svd", + "loadMode": "manual" + } + ] +} diff --git a/firmware/components/CAN/CAN-B/CAN-B.ioc b/firmware/components/CAN/CAN-B/CAN-B.ioc new file mode 100644 index 00000000..8e7f69f3 --- /dev/null +++ b/firmware/components/CAN/CAN-B/CAN-B.ioc @@ -0,0 +1,118 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +CAN.CalculateBaudRate=800000 +CAN.CalculateTimeBit=1250 +CAN.CalculateTimeQuantum=416.6666666666667 +CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,SJW +CAN.Prescaler=15 +CAN.SJW=CAN_SJW_1TQ +File.Version=6 +GPIO.groupedBy= +KeepUserPlacement=false +Mcu.CPN=STM32F103C8T6 +Mcu.Family=STM32F1 +Mcu.IP0=CAN +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SYS +Mcu.IPNb=4 +Mcu.Name=STM32F103C(8-B)Tx +Mcu.Package=LQFP48 +Mcu.Pin0=PC13-TAMPER-RTC +Mcu.Pin1=PD0-OSC_IN +Mcu.Pin2=PD1-OSC_OUT +Mcu.Pin3=PA11 +Mcu.Pin4=PA12 +Mcu.Pin5=PA13 +Mcu.Pin6=PA14 +Mcu.Pin7=VP_SYS_VS_Systick +Mcu.PinsNb=8 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F103C8Tx +MxCube.Version=6.13.0 +MxDb.Version=DB.6.0.130 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.CAN1_RX1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA11.Mode=CAN_Activate +PA11.Signal=CAN_RX +PA12.Mode=CAN_Activate +PA12.Signal=CAN_TX +PA13.Mode=Serial_Wire +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=Serial_Wire +PA14.Signal=SYS_JTCK-SWCLK +PC13-TAMPER-RTC.Locked=true +PC13-TAMPER-RTC.Signal=GPIO_Output +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 +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F103C8Tx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=CAN-B.ioc +ProjectManager.ProjectName=CAN-B +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=EWARM V8.32 +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort= +RCC.ADCFreqValue=36000000 +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.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,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 +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/firmware/components/mainboard/Inc/can.h b/firmware/components/CAN/CAN-B/Inc/can.h similarity index 100% rename from firmware/components/mainboard/Inc/can.h rename to firmware/components/CAN/CAN-B/Inc/can.h diff --git a/firmware/components/mainboard/Inc/gpio.h b/firmware/components/CAN/CAN-B/Inc/gpio.h similarity index 100% rename from firmware/components/mainboard/Inc/gpio.h rename to firmware/components/CAN/CAN-B/Inc/gpio.h diff --git a/firmware/components/mainboard/Inc/main.h b/firmware/components/CAN/CAN-B/Inc/main.h similarity index 100% rename from firmware/components/mainboard/Inc/main.h rename to firmware/components/CAN/CAN-B/Inc/main.h diff --git a/firmware/components/mainboard/Inc/stm32f1xx_hal_conf.h b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h similarity index 97% rename from firmware/components/mainboard/Inc/stm32f1xx_hal_conf.h rename to firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h index de8c5a8c..51a5d671 100644 --- a/firmware/components/mainboard/Inc/stm32f1xx_hal_conf.h +++ b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_hal_conf.h @@ -53,7 +53,7 @@ /*#define HAL_NOR_MODULE_ENABLED */ /*#define HAL_NAND_MODULE_ENABLED */ /*#define HAL_PCCARD_MODULE_ENABLED */ -#define HAL_PCD_MODULE_ENABLED +/*#define HAL_PCD_MODULE_ENABLED */ /*#define HAL_HCD_MODULE_ENABLED */ /*#define HAL_PWR_MODULE_ENABLED */ /*#define HAL_RCC_MODULE_ENABLED */ @@ -65,7 +65,7 @@ /*#define HAL_SPI_MODULE_ENABLED */ /*#define HAL_SRAM_MODULE_ENABLED */ /*#define HAL_TIM_MODULE_ENABLED */ -#define HAL_UART_MODULE_ENABLED +/*#define HAL_UART_MODULE_ENABLED */ /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ diff --git a/firmware/components/mainboard/Inc/stm32f1xx_it.h b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h similarity index 94% rename from firmware/components/mainboard/Inc/stm32f1xx_it.h rename to firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h index 47a1a2ef..0d1cdc6f 100644 --- a/firmware/components/mainboard/Inc/stm32f1xx_it.h +++ b/firmware/components/CAN/CAN-B/Inc/stm32f1xx_it.h @@ -55,7 +55,6 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); -void USB_LP_CAN1_RX0_IRQHandler(void); void CAN1_RX1_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/firmware/components/mainboard/Src/can.c b/firmware/components/CAN/CAN-B/Src/can.c similarity index 73% rename from firmware/components/mainboard/Src/can.c rename to firmware/components/CAN/CAN-B/Src/can.c index d9c13d3b..7d2fd349 100644 --- a/firmware/components/mainboard/Src/can.c +++ b/firmware/components/CAN/CAN-B/Src/can.c @@ -38,7 +38,7 @@ void MX_CAN_Init(void) /* USER CODE END CAN_Init 1 */ hcan.Instance = CAN1; - hcan.Init.Prescaler = 16; + hcan.Init.Prescaler = 15; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_1TQ; @@ -54,7 +54,17 @@ void MX_CAN_Init(void) Error_Handler(); } /* USER CODE BEGIN CAN_Init 2 */ - + CAN_FilterTypeDef canfilterconf; + canfilterconf.FilterActivation = CAN_FILTER_ENABLE; + canfilterconf.FilterBank = 18; + canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1; + canfilterconf.FilterIdHigh = 0x399 << 5; + canfilterconf.FilterIdLow = 0x0000; + canfilterconf.FilterMaskIdHigh = 0x7FF << 5; + canfilterconf.FilterMaskIdLow = 0x0000; + canfilterconf.FilterMode = CAN_FILTERMODE_IDMASK; + canfilterconf.FilterScale = CAN_FILTERSCALE_32BIT; + HAL_CAN_ConfigFilter(&hcan, &canfilterconf); /* USER CODE END CAN_Init 2 */ } @@ -71,26 +81,22 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle) /* CAN1 clock enable */ __HAL_RCC_CAN1_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); /**CAN GPIO Configuration - PB8 ------> CAN_RX - PB9 ------> CAN_TX + PA11 ------> CAN_RX + PA12 ------> CAN_TX */ - GPIO_InitStruct.Pin = GPIO_PIN_8; + GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - __HAL_AFIO_REMAP_CAN1_2(); + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* CAN1 interrupt Init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn); /* USER CODE BEGIN CAN1_MspInit 1 */ @@ -111,20 +117,12 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle) __HAL_RCC_CAN1_CLK_DISABLE(); /**CAN GPIO Configuration - PB8 ------> CAN_RX - PB9 ------> CAN_TX + PA11 ------> CAN_RX + PA12 ------> CAN_TX */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); /* CAN1 interrupt Deinit */ - /* USER CODE BEGIN CAN1:USB_LP_CAN1_RX0_IRQn disable */ - /** - * Uncomment the line below to disable the "USB_LP_CAN1_RX0_IRQn" interrupt - * Be aware, disabling shared interrupt may affect other IPs - */ - /* HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); */ - /* USER CODE END CAN1:USB_LP_CAN1_RX0_IRQn disable */ - HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn); /* USER CODE BEGIN CAN1_MspDeInit 1 */ diff --git a/firmware/components/mainboard/Src/gpio.c b/firmware/components/CAN/CAN-B/Src/gpio.c similarity index 58% rename from firmware/components/mainboard/Src/gpio.c rename to firmware/components/CAN/CAN-B/Src/gpio.c index 32e2e692..e293e461 100644 --- a/firmware/components/mainboard/Src/gpio.c +++ b/firmware/components/CAN/CAN-B/Src/gpio.c @@ -48,17 +48,10 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_13, GPIO_PIN_RESET); - /*Configure GPIO pin : PC13 */ GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; @@ -66,34 +59,12 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pins : PA4 PA5 PA6 PA7 */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + /*Configure GPIO pin : PA10 (Input with Pull-Down) */ + GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pins : PB0 PB1 PB2 PB10 - PB11 */ - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10 - |GPIO_PIN_11; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_PULLDOWN; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /*Configure GPIO pins : PB12 PB13 PB14 PB15 */ - GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /*Configure GPIO pins : PA8 PA9 PA10 PA13 */ - GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - } /* USER CODE BEGIN 2 */ diff --git a/firmware/components/mainboard/Src/main.c b/firmware/components/CAN/CAN-B/Src/main.c similarity index 79% rename from firmware/components/mainboard/Src/main.c rename to firmware/components/CAN/CAN-B/Src/main.c index 14c831fd..1f77f04a 100644 --- a/firmware/components/mainboard/Src/main.c +++ b/firmware/components/CAN/CAN-B/Src/main.c @@ -19,8 +19,6 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "can.h" -#include "usart.h" -#include "usb_device.h" #include "gpio.h" /* Private includes ----------------------------------------------------------*/ @@ -58,6 +56,16 @@ void SystemClock_Config(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +CAN_TxHeaderTypeDef TxHeader; +CAN_RxHeaderTypeDef RxHeader; + +uint8_t TxData[8]; +uint8_t RxData[8]; + +uint32_t TxMailbox; + +uint8_t isValidData; + /* USER CODE END 0 */ /** @@ -90,10 +98,22 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_CAN_Init(); - MX_USART2_UART_Init(); - MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ + HAL_CAN_Start(&hcan); + HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING); + + TxHeader.DLC = 2; + TxHeader.IDE = CAN_ID_STD; + TxHeader.RTR = CAN_RTR_DATA; + TxHeader.StdId = 0x399; + + TxData[0] = 100; + TxData[1] = 255; + + int GPIOSTATUS = 0; + int oldGPIOSTATUS = 0; + /* USER CODE END 2 */ /* Infinite loop */ @@ -101,12 +121,34 @@ int main(void) while (1) { /* USER CODE END WHILE */ + GPIOSTATUS = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10); + if(GPIOSTATUS && !oldGPIOSTATUS){ + HAL_Delay(20); + HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox); + } + oldGPIOSTATUS = GPIOSTATUS; + if(isValidData){ + isValidData = 0; + for(int i = 0; i < RxData[0]; i++){ + HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); + HAL_Delay(RxData[1]); + } + } /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } +void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan){ + if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData) != HAL_OK) { + return; + }; + if(RxHeader.DLC == 2){ + isValidData = 1; + } +} + /** * @brief System Clock Configuration * @retval None @@ -115,7 +157,6 @@ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -145,12 +186,6 @@ void SystemClock_Config(void) { Error_Handler(); } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } } /* USER CODE BEGIN 4 */ diff --git a/firmware/components/mainboard/Src/stm32f1xx_hal_msp.c b/firmware/components/CAN/CAN-B/Src/stm32f1xx_hal_msp.c similarity index 92% rename from firmware/components/mainboard/Src/stm32f1xx_hal_msp.c rename to firmware/components/CAN/CAN-B/Src/stm32f1xx_hal_msp.c index d59d9185..bcfdc02b 100644 --- a/firmware/components/mainboard/Src/stm32f1xx_hal_msp.c +++ b/firmware/components/CAN/CAN-B/Src/stm32f1xx_hal_msp.c @@ -72,9 +72,9 @@ void HAL_MspInit(void) /* System interrupt init*/ - /** DISABLE: JTAG-DP Disabled and SW-DP Disabled + /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled */ - __HAL_AFIO_REMAP_SWJ_DISABLE(); + __HAL_AFIO_REMAP_SWJ_NOJTAG(); /* USER CODE BEGIN MspInit 1 */ diff --git a/firmware/components/mainboard/Src/stm32f1xx_it.c b/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c similarity index 89% rename from firmware/components/mainboard/Src/stm32f1xx_it.c rename to firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c index 8990aa1a..b4ef83ee 100644 --- a/firmware/components/mainboard/Src/stm32f1xx_it.c +++ b/firmware/components/CAN/CAN-B/Src/stm32f1xx_it.c @@ -55,7 +55,6 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; extern CAN_HandleTypeDef hcan; /* USER CODE BEGIN EV */ @@ -199,21 +198,6 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_CAN_IRQHandler(&hcan); - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - /** * @brief This function handles CAN RX1 interrupt. */ diff --git a/firmware/components/mainboard/lib/README b/firmware/components/CAN/CAN-B/lib/README similarity index 100% rename from firmware/components/mainboard/lib/README rename to firmware/components/CAN/CAN-B/lib/README diff --git a/firmware/components/mainboard/platformio.ini b/firmware/components/CAN/CAN-B/platformio.ini similarity index 100% rename from firmware/components/mainboard/platformio.ini rename to firmware/components/CAN/CAN-B/platformio.ini diff --git a/firmware/components/mainboard/stm32pio.ini b/firmware/components/CAN/CAN-B/stm32pio.ini similarity index 83% rename from firmware/components/mainboard/stm32pio.ini rename to firmware/components/CAN/CAN-B/stm32pio.ini index b654e1d3..c5bfa2e7 100644 --- a/firmware/components/mainboard/stm32pio.ini +++ b/firmware/components/CAN/CAN-B/stm32pio.ini @@ -11,9 +11,8 @@ platformio_ini_patch_content = [platformio] include_dir = Inc src_dir = Src board = bluepill_f103c8 -ioc_file = mainboard.ioc -cleanup_ignore = mainboard.ioc +ioc_file = CAN-B.ioc +cleanup_ignore = CAN-B.ioc cleanup_use_git = False inspect_ioc = True -last_error = diff --git a/firmware/components/mainboard/test/README b/firmware/components/CAN/CAN-B/test/README similarity index 100% rename from firmware/components/mainboard/test/README rename to firmware/components/CAN/CAN-B/test/README diff --git a/firmware/components/mainboard/README.md b/firmware/components/mainboard/README.md deleted file mode 100644 index 1e548cb6..00000000 --- a/firmware/components/mainboard/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Mainboard - -The goal of the mainboard is to take in CAN signals from the modules, and then convert these can signals to USB HID report. - -# How is CAN Data is Transmitted - -When you press a button on a module, it sends two CAN messages—one when the key is pressed down, and another when it’s released. This is in order to avoid spamming the bus with constant message of every status for every key. - -The CAN data follows a simple 2-byte pattern: -- The **first byte** is the Universal HID Keyboard Key Code -- The **second byte** reports the status of that key (pressed or released) - -So, if we send something like `xx04`, it means the keycode for the letter “A” is pressed The mainboard picks that up and adds it to the report FIFO queue -## Keycode Byte - -Keyboard codes can be found here https://www.toomanyatoms.com/computer/usb_keyboard_codes.html. They are pretty self explanatory. -## Second Byte -|Bit|Meaning| -|---|---| -|0xxx xxxx|Is the key pressed? 0 = released, 1 = pressed - -Of course, we have 7 bits extra, but this can be used for future proofing. For example, we might want a module that does not follow the USB Keyboard Codes. Think of it as configuration bits that maybe useful in the future. - -# N-Key Rollover -We’ll use a FIFO (First In, First Out) queue to keep track of all the keys pressed and update the USB HID report accordingly. - -Read more about the HID report structure here: https://wiki.osdev.org/USB_Human_Interface_Devices diff --git a/firmware/components/mainboard/Src/usart.c b/firmware/components/mainboard/Src/usart.c deleted file mode 100644 index f14c62dd..00000000 --- a/firmware/components/mainboard/Src/usart.c +++ /dev/null @@ -1,117 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file usart.c - * @brief This file provides code for the configuration - * of the USART instances. - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Includes ------------------------------------------------------------------*/ -#include "usart.h" - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -UART_HandleTypeDef huart2; - -/* USART2 init function */ - -void MX_USART2_UART_Init(void) -{ - - /* USER CODE BEGIN USART2_Init 0 */ - - /* USER CODE END USART2_Init 0 */ - - /* USER CODE BEGIN USART2_Init 1 */ - - /* USER CODE END USART2_Init 1 */ - huart2.Instance = USART2; - huart2.Init.BaudRate = 115200; - huart2.Init.WordLength = UART_WORDLENGTH_8B; - huart2.Init.StopBits = UART_STOPBITS_1; - huart2.Init.Parity = UART_PARITY_NONE; - huart2.Init.Mode = UART_MODE_TX_RX; - huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart2.Init.OverSampling = UART_OVERSAMPLING_16; - if (HAL_UART_Init(&huart2) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART2_Init 2 */ - - /* USER CODE END USART2_Init 2 */ - -} - -void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) -{ - - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(uartHandle->Instance==USART2) - { - /* USER CODE BEGIN USART2_MspInit 0 */ - - /* USER CODE END USART2_MspInit 0 */ - /* USART2 clock enable */ - __HAL_RCC_USART2_CLK_ENABLE(); - - __HAL_RCC_GPIOA_CLK_ENABLE(); - /**USART2 GPIO Configuration - PA2 ------> USART2_TX - PA3 ------> USART2_RX - */ - GPIO_InitStruct.Pin = GPIO_PIN_2; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_3; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN USART2_MspInit 1 */ - - /* USER CODE END USART2_MspInit 1 */ - } -} - -void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) -{ - - if(uartHandle->Instance==USART2) - { - /* USER CODE BEGIN USART2_MspDeInit 0 */ - - /* USER CODE END USART2_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_USART2_CLK_DISABLE(); - - /**USART2 GPIO Configuration - PA2 ------> USART2_TX - PA3 ------> USART2_RX - */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); - - /* USER CODE BEGIN USART2_MspDeInit 1 */ - - /* USER CODE END USART2_MspDeInit 1 */ - } -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/firmware/components/mainboard/stmf405rgtx/mainboard-stmf405rgtx.ioc b/firmware/components/mainboard/stmf405rgtx/mainboard-stmf405rgtx.ioc new file mode 100644 index 00000000..a90ce81b --- /dev/null +++ b/firmware/components/mainboard/stmf405rgtx/mainboard-stmf405rgtx.ioc @@ -0,0 +1,88 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +File.Version=6 +GPIO.groupedBy= +KeepUserPlacement=false +Mcu.CPN=STM32F405RGT6 +Mcu.Family=STM32F4 +Mcu.IP0=NVIC +Mcu.IP1=RCC +Mcu.IP2=SYS +Mcu.IPNb=3 +Mcu.Name=STM32F405RGTx +Mcu.Package=LQFP64 +Mcu.Pin0=VP_SYS_VS_Systick +Mcu.PinsNb=1 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F405RGTx +MxCube.Version=6.13.0 +MxDb.Version=DB.6.0.130 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F405RGTx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.2 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=0 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=mainboard-stmf405rgtx.ioc +ProjectManager.ProjectName=mainboard-stmf405rgtx +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=EWARM V8.50 +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false +RCC.AHBFreq_Value=16000000 +RCC.APB1Freq_Value=16000000 +RCC.APB2Freq_Value=16000000 +RCC.CortexFreq_Value=16000000 +RCC.FamilyName=M +RCC.HSE_VALUE=25000000 +RCC.HSI_VALUE=16000000 +RCC.I2SClocksFreq_Value=96000000 +RCC.IPParameters=AHBFreq_Value,APB1Freq_Value,APB2Freq_Value,CortexFreq_Value,FamilyName,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,PLLCLKFreq_Value,PLLQCLKFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=32000 +RCC.PLLCLKFreq_Value=96000000 +RCC.PLLQCLKFreq_Value=48000000 +RCC.RTCFreq_Value=32000 +RCC.RTCHSEDivFreq_Value=12500000 +RCC.SYSCLKFreq_VALUE=16000000 +RCC.VCOI2SOutputFreq_Value=192000000 +RCC.VCOInputFreq_Value=1000000 +RCC.VCOOutputFreq_Value=192000000 +RCC.VcooutputI2S=96000000 +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom diff --git a/firmware/components/mainboard/stmf446retx/.gitignore b/firmware/components/mainboard/stmf446retx/.gitignore new file mode 100644 index 00000000..03f4a3c1 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/.gitignore @@ -0,0 +1 @@ +.pio diff --git a/firmware/components/mainboard/stmf446retx/.vscode/c_cpp_properties.json b/firmware/components/mainboard/stmf446retx/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..69836baa --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/.vscode/c_cpp_properties.json @@ -0,0 +1,210 @@ +// +// !!! WARNING !!! AUTO-GENERATED FILE! +// PLEASE DO NOT MODIFY IT AND USE "platformio.ini": +// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags +// +{ + "configurations": [ + { + "name": "PlatformIO", + "includePath": [ + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", + "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/Src", + "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Device/ST/STM32F4xx/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/DSP/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/Common", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire480272", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire640480", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/cs43l22", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/dp83848", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/exc7200", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft3x67", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft6x06", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/i3g4250d", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9325", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9341", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/l3gd20", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lan8742", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis302dl", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis3dsh", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ls016b8uy", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303agr", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303dlhc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/mfxstm32l152", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q128a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q256a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q512a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/nt35510", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/otm8009a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov2640", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov5640", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s25fl512s", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s5k5cag", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7735", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7789h2", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe1600", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe811", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ts3510", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/wm8994", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Adafruit_Shield", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/CPU", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Fonts", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Src", + "" + ], + "browse": { + "limitSymbolsToIncludedHeaders": true, + "path": [ + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CompositeBuilder/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/VIDEO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/Printer/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MTP/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_RNDIS/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_ECM/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/CCID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Core/Src", + "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/Src", + "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/Device/ST/STM32F4xx/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/STM32F4xx_HAL_Driver/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/CMSIS/DSP/Include", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/Common", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire480272", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ampire640480", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/cs43l22", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/dp83848", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/exc7200", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft3x67", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ft6x06", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/i3g4250d", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9325", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ili9341", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/l3gd20", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lan8742", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis302dl", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lis3dsh", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ls016b8uy", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303agr", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/lsm303dlhc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/mfxstm32l152", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q128a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q256a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/n25q512a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/nt35510", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/otm8009a", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov2640", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ov5640", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s25fl512s", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/s5k5cag", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7735", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/st7789h2", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe1600", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/stmpe811", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/ts3510", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Components/wm8994", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Drivers/BSP/Adafruit_Shield", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/CPU", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Fonts", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Utilities/Log", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Device_Library/Class/BillBoard/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Core/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/HID/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Inc", + "/home/kymkim/.platformio/packages/framework-stm32cubef4/Middlewares/ST/STM32_USB_Host_Library/Class/MTP/Src", + "" + ] + }, + "defines": [ + "PLATFORMIO=60118", + "STM32F4", + "STM32F446xx", + "USE_HAL_DRIVER", + "F_CPU=180000000L", + "" + ], + "compilerPath": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc", + "compilerArgs": [ + "-mthumb", + "-mcpu=cortex-m4", + "" + ] + } + ], + "version": 4 +} diff --git a/firmware/components/mainboard/stmf446retx/.vscode/extensions.json b/firmware/components/mainboard/stmf446retx/.vscode/extensions.json new file mode 100644 index 00000000..080e70d0 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/firmware/components/mainboard/stmf446retx/.vscode/launch.json b/firmware/components/mainboard/stmf446retx/.vscode/launch.json new file mode 100644 index 00000000..5e2348d7 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/.vscode/launch.json @@ -0,0 +1,47 @@ +// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY +// +// PlatformIO Debugging Solution +// +// Documentation: https://docs.platformio.org/en/latest/plus/debugging.html +// Configuration: https://docs.platformio.org/en/latest/projectconf/sections/env/options/debug/index.html + +{ + "version": "0.2.0", + "configurations": [ + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/.pio/build/nucleo_f446re/firmware.elf", + "projectEnvName": "nucleo_f446re", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F446x.svd", + "preLaunchTask": { + "type": "PlatformIO", + "task": "Pre-Debug" + } + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (skip Pre-Debug)", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/.pio/build/nucleo_f446re/firmware.elf", + "projectEnvName": "nucleo_f446re", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F446x.svd" + }, + { + "type": "platformio-debug", + "request": "launch", + "name": "PIO Debug (without uploading)", + "executable": "/home/kymkim/Projects/modular-kbd/firmware/components/mainboard/stmf446retx/.pio/build/nucleo_f446re/firmware.elf", + "projectEnvName": "nucleo_f446re", + "toolchainBinDir": "/home/kymkim/.platformio/packages/toolchain-gccarmnoneeabi/bin", + "internalConsoleOptions": "openOnSessionStart", + "svdPath": "/home/kymkim/.platformio/platforms/ststm32/misc/svd/STM32F446x.svd", + "loadMode": "manual" + } + ] +} diff --git a/firmware/components/mainboard/stmf446retx/.vscode/settings.json b/firmware/components/mainboard/stmf446retx/.vscode/settings.json new file mode 100644 index 00000000..10a5631d --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "usbd_hid.h": "c" + } +} \ No newline at end of file diff --git a/firmware/components/mainboard/Inc/usart.h b/firmware/components/mainboard/stmf446retx/Inc/can.h similarity index 82% rename from firmware/components/mainboard/Inc/usart.h rename to firmware/components/mainboard/stmf446retx/Inc/can.h index a0cfef00..bb285541 100644 --- a/firmware/components/mainboard/Inc/usart.h +++ b/firmware/components/mainboard/stmf446retx/Inc/can.h @@ -1,9 +1,9 @@ /* USER CODE BEGIN Header */ /** ****************************************************************************** - * @file usart.h + * @file can.h * @brief This file contains all the function prototypes for - * the usart.c file + * the can.c file ****************************************************************************** * @attention * @@ -18,8 +18,8 @@ */ /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USART_H__ -#define __USART_H__ +#ifndef __CAN_H__ +#define __CAN_H__ #ifdef __cplusplus extern "C" { @@ -32,13 +32,13 @@ extern "C" { /* USER CODE END Includes */ -extern UART_HandleTypeDef huart2; +extern CAN_HandleTypeDef hcan1; /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ -void MX_USART2_UART_Init(void); +void MX_CAN1_Init(void); /* USER CODE BEGIN Prototypes */ @@ -48,5 +48,5 @@ void MX_USART2_UART_Init(void); } #endif -#endif /* __USART_H__ */ +#endif /* __CAN_H__ */ diff --git a/firmware/components/mainboard/stmf446retx/Inc/gpio.h b/firmware/components/mainboard/stmf446retx/Inc/gpio.h new file mode 100644 index 00000000..8ba7de1e --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Inc/gpio.h @@ -0,0 +1,49 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.h + * @brief This file contains all the function prototypes for + * the gpio.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_GPIO_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ GPIO_H__ */ + diff --git a/firmware/components/mainboard/stmf446retx/Inc/main.h b/firmware/components/mainboard/stmf446retx/Inc/main.h new file mode 100644 index 00000000..be9a3f3e --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Inc/main.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ diff --git a/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_hal_conf.h b/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_hal_conf.h new file mode 100644 index 00000000..0f9d180f --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_hal_conf.h @@ -0,0 +1,495 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_hal_conf_template.h + * @author MCD Application Team + * @brief HAL configuration template file. + * This file should be copied to the application folder and renamed + * to stm32f4xx_hal_conf.h. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_HAL_CONF_H +#define __STM32F4xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED + + /* #define HAL_CRYP_MODULE_ENABLED */ +/* #define HAL_ADC_MODULE_ENABLED */ +#define HAL_CAN_MODULE_ENABLED +/* #define HAL_CRC_MODULE_ENABLED */ +/* #define HAL_CAN_LEGACY_MODULE_ENABLED */ +/* #define HAL_DAC_MODULE_ENABLED */ +/* #define HAL_DCMI_MODULE_ENABLED */ +/* #define HAL_DMA2D_MODULE_ENABLED */ +/* #define HAL_ETH_MODULE_ENABLED */ +/* #define HAL_ETH_LEGACY_MODULE_ENABLED */ +/* #define HAL_NAND_MODULE_ENABLED */ +/* #define HAL_NOR_MODULE_ENABLED */ +/* #define HAL_PCCARD_MODULE_ENABLED */ +/* #define HAL_SRAM_MODULE_ENABLED */ +/* #define HAL_SDRAM_MODULE_ENABLED */ +/* #define HAL_HASH_MODULE_ENABLED */ +/* #define HAL_I2C_MODULE_ENABLED */ +/* #define HAL_I2S_MODULE_ENABLED */ +/* #define HAL_IWDG_MODULE_ENABLED */ +/* #define HAL_LTDC_MODULE_ENABLED */ +/* #define HAL_RNG_MODULE_ENABLED */ +/* #define HAL_RTC_MODULE_ENABLED */ +/* #define HAL_SAI_MODULE_ENABLED */ +/* #define HAL_SD_MODULE_ENABLED */ +/* #define HAL_MMC_MODULE_ENABLED */ +/* #define HAL_SPI_MODULE_ENABLED */ +/* #define HAL_TIM_MODULE_ENABLED */ +/* #define HAL_UART_MODULE_ENABLED */ +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_SMBUS_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +#define HAL_PCD_MODULE_ENABLED +/* #define HAL_HCD_MODULE_ENABLED */ +/* #define HAL_DSI_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_FMPI2C_MODULE_ENABLED */ +/* #define HAL_FMPSMBUS_MODULE_ENABLED */ +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_DFSDM_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE 32000U /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature.*/ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE 32768U /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) + #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External audio frequency in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY 15U /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */ +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */ +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */ +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */ +#define USE_HAL_FMPSMBUS_REGISTER_CALLBACKS 0U /* FMPSMBUS register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */ +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */ +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB 4U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB 4U /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY 0x000000FFU +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY 0x00000FFFU + +#define PHY_READ_TO 0x0000FFFFU +#define PHY_WRITE_TO 0x0000FFFFU + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f4xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32f4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f4xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CAN_LEGACY_MODULE_ENABLED + #include "stm32f4xx_hal_can_legacy.h" +#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32f4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32f4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32f4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f4xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_ETH_LEGACY_MODULE_ENABLED + #include "stm32f4xx_hal_eth_legacy.h" +#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED + #include "stm32f4xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED + #include "stm32f4xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32f4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32f4xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f4xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32f4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32f4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32f4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32f4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32f4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f4xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_FMPI2C_MODULE_ENABLED + #include "stm32f4xx_hal_fmpi2c.h" +#endif /* HAL_FMPI2C_MODULE_ENABLED */ + +#ifdef HAL_FMPSMBUS_MODULE_ENABLED + #include "stm32f4xx_hal_fmpsmbus.h" +#endif /* HAL_FMPSMBUS_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32f4xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32f4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32f4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32f4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_HAL_CONF_H */ diff --git a/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_it.h b/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_it.h new file mode 100644 index 00000000..7bc39080 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Inc/stm32f4xx_it.h @@ -0,0 +1,68 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F4xx_IT_H +#define __STM32F4xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +void CAN1_RX0_IRQHandler(void); +void OTG_FS_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F4xx_IT_H */ diff --git a/firmware/components/mainboard/Inc/usb_device.h b/firmware/components/mainboard/stmf446retx/Inc/usb_device.h similarity index 92% rename from firmware/components/mainboard/Inc/usb_device.h rename to firmware/components/mainboard/stmf446retx/Inc/usb_device.h index 2e645300..5d3020f4 100644 --- a/firmware/components/mainboard/Inc/usb_device.h +++ b/firmware/components/mainboard/stmf446retx/Inc/usb_device.h @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usb_device.h - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : Header for usb_device.c file. ****************************************************************************** * @attention @@ -27,8 +27,8 @@ #endif /* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx.h" -#include "stm32f1xx_hal.h" +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" #include "usbd_def.h" /* USER CODE BEGIN INCLUDE */ diff --git a/firmware/components/mainboard/Inc/usbd_conf.h b/firmware/components/mainboard/stmf446retx/Inc/usbd_conf.h similarity index 76% rename from firmware/components/mainboard/Inc/usbd_conf.h rename to firmware/components/mainboard/stmf446retx/Inc/usbd_conf.h index bb97f245..ac928543 100644 --- a/firmware/components/mainboard/Inc/usbd_conf.h +++ b/firmware/components/mainboard/stmf446retx/Inc/usbd_conf.h @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usbd_conf.h - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : Header for usbd_conf.c file. ****************************************************************************** * @attention @@ -31,14 +31,15 @@ #include #include #include "main.h" -#include "stm32f1xx.h" -#include "stm32f1xx_hal.h" +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" /* USER CODE BEGIN INCLUDE */ /* USER CODE END INCLUDE */ /** @addtogroup USBD_OTG_DRIVER + * @brief Driver for Usb device. * @{ */ @@ -62,21 +63,24 @@ */ /*---------- -----------*/ -#define USBD_MAX_NUM_INTERFACES 1 +#define USBD_MAX_NUM_INTERFACES 1U /*---------- -----------*/ -#define USBD_MAX_NUM_CONFIGURATION 1 +#define USBD_MAX_NUM_CONFIGURATION 1U /*---------- -----------*/ -#define USBD_MAX_STR_DESC_SIZ 512 +#define USBD_MAX_STR_DESC_SIZ 512U /*---------- -----------*/ -#define USBD_DEBUG_LEVEL 0 +#define USBD_DEBUG_LEVEL 0U /*---------- -----------*/ -#define USBD_SELF_POWERED 1 +#define USBD_LPM_ENABLED 1U /*---------- -----------*/ -#define HID_FS_BINTERVAL 0xA +#define USBD_SELF_POWERED 1U +/*---------- -----------*/ +#define HID_FS_BINTERVAL 0xAU /****************************************/ /* #define for FS and HS identification */ #define DEVICE_FS 0 +#define DEVICE_HS 1 /** * @} @@ -86,29 +90,23 @@ * @brief Aliases. * @{ */ - -/* Memory management macros */ - +/* Memory management macros make sure to use static memory allocation */ /** Alias for memory allocation. */ -#define USBD_malloc (uint32_t *)USBD_static_malloc + +#define USBD_malloc (void *)USBD_static_malloc /** Alias for memory release. */ #define USBD_free USBD_static_free /** Alias for memory set. */ -#define USBD_memset /* Not used */ +#define USBD_memset memset /** Alias for memory copy. */ -#define USBD_memcpy /* Not used */ +#define USBD_memcpy memcpy /** Alias for delay. */ #define USBD_Delay HAL_Delay -/* For footprint reasons and since only one allocation is handled in the HID class - driver, the malloc/free is changed into a static allocation method */ -void *USBD_static_malloc(uint32_t size); -void USBD_static_free(void *p); - /* DEBUG macros */ #if (USBD_DEBUG_LEVEL > 0) @@ -116,24 +114,24 @@ void USBD_static_free(void *p); printf("\n"); #else #define USBD_UsrLog(...) -#endif +#endif /* (USBD_DEBUG_LEVEL > 0U) */ #if (USBD_DEBUG_LEVEL > 1) -#define USBD_ErrLog(...) printf("ERROR: ") ;\ +#define USBD_ErrLog(...) printf("ERROR: ");\ printf(__VA_ARGS__);\ printf("\n"); #else #define USBD_ErrLog(...) -#endif +#endif /* (USBD_DEBUG_LEVEL > 1U) */ #if (USBD_DEBUG_LEVEL > 2) -#define USBD_DbgLog(...) printf("DEBUG : ") ;\ +#define USBD_DbgLog(...) printf("DEBUG : ");\ printf(__VA_ARGS__);\ printf("\n"); #else #define USBD_DbgLog(...) -#endif +#endif /* (USBD_DEBUG_LEVEL > 2U) */ /** * @} @@ -154,6 +152,8 @@ void USBD_static_free(void *p); */ /* Exported functions -------------------------------------------------------*/ +void *USBD_static_malloc(uint32_t size); +void USBD_static_free(void *p); /** * @} diff --git a/firmware/components/mainboard/Inc/usbd_desc.h b/firmware/components/mainboard/stmf446retx/Inc/usbd_desc.h similarity index 94% rename from firmware/components/mainboard/Inc/usbd_desc.h rename to firmware/components/mainboard/stmf446retx/Inc/usbd_desc.h index e9659b9c..6eab7e4e 100644 --- a/firmware/components/mainboard/Inc/usbd_desc.h +++ b/firmware/components/mainboard/stmf446retx/Inc/usbd_desc.h @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usbd_desc.c - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : Header for usbd_conf.c file. ****************************************************************************** * @attention diff --git a/firmware/components/mainboard/stmf446retx/Src/can.c b/firmware/components/mainboard/stmf446retx/Src/can.c new file mode 100644 index 00000000..a45d6fcb --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Src/can.c @@ -0,0 +1,122 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file can.c + * @brief This file provides code for the configuration + * of the CAN instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "can.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +CAN_HandleTypeDef hcan1; + +/* CAN1 init function */ +void MX_CAN1_Init(void) +{ + + /* USER CODE BEGIN CAN1_Init 0 */ + + /* USER CODE END CAN1_Init 0 */ + + /* USER CODE BEGIN CAN1_Init 1 */ + + /* USER CODE END CAN1_Init 1 */ + hcan1.Instance = CAN1; + hcan1.Init.Prescaler = 6; + hcan1.Init.Mode = CAN_MODE_NORMAL; + hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ; + hcan1.Init.TimeSeg1 = CAN_BS1_16TQ; + hcan1.Init.TimeSeg2 = CAN_BS2_7TQ; + hcan1.Init.TimeTriggeredMode = DISABLE; + hcan1.Init.AutoBusOff = DISABLE; + hcan1.Init.AutoWakeUp = DISABLE; + hcan1.Init.AutoRetransmission = DISABLE; + hcan1.Init.ReceiveFifoLocked = DISABLE; + hcan1.Init.TransmitFifoPriority = DISABLE; + if (HAL_CAN_Init(&hcan1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CAN1_Init 2 */ + + /* USER CODE END CAN1_Init 2 */ + +} + +void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(canHandle->Instance==CAN1) + { + /* USER CODE BEGIN CAN1_MspInit 0 */ + + /* USER CODE END CAN1_MspInit 0 */ + /* CAN1 clock enable */ + __HAL_RCC_CAN1_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**CAN1 GPIO Configuration + PB8 ------> CAN1_RX + PB9 ------> CAN1_TX + */ + GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* CAN1 interrupt Init */ + HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn); + /* USER CODE BEGIN CAN1_MspInit 1 */ + + /* USER CODE END CAN1_MspInit 1 */ + } +} + +void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle) +{ + + if(canHandle->Instance==CAN1) + { + /* USER CODE BEGIN CAN1_MspDeInit 0 */ + + /* USER CODE END CAN1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_CAN1_CLK_DISABLE(); + + /**CAN1 GPIO Configuration + PB8 ------> CAN1_RX + PB9 ------> CAN1_TX + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9); + + /* CAN1 interrupt Deinit */ + HAL_NVIC_DisableIRQ(CAN1_RX0_IRQn); + /* USER CODE BEGIN CAN1_MspDeInit 1 */ + + /* USER CODE END CAN1_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/components/mainboard/stmf446retx/Src/gpio.c b/firmware/components/mainboard/stmf446retx/Src/gpio.c new file mode 100644 index 00000000..d5a5c900 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Src/gpio.c @@ -0,0 +1,79 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.c + * @brief This file provides code for the configuration + * of all used GPIO pins. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "gpio.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/*----------------------------------------------------------------------------*/ +/* Configure GPIO */ +/*----------------------------------------------------------------------------*/ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** Configure pins as + * Analog + * Input + * Output + * EVENT_OUT + * EXTI +*/ +void MX_GPIO_Init(void) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13|GPIO_PIN_14, GPIO_PIN_RESET); + + /*Configure GPIO pins : PB13 PB14 */ + GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /*Configure GPIO pin : PB15 */ + GPIO_InitStruct.Pin = GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /*Configure GPIO pin : PC6 */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + +} + +/* USER CODE BEGIN 2 */ + +/* USER CODE END 2 */ diff --git a/firmware/components/mainboard/stmf446retx/Src/main.c b/firmware/components/mainboard/stmf446retx/Src/main.c new file mode 100644 index 00000000..5f4c4dea --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Src/main.c @@ -0,0 +1,241 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "can.h" +#include "usb_device.h" +#include "usbd_hid.h" +#include "gpio.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ +typedef struct{ + uint8_t MODIFIER; + uint8_t RESERVED; + uint8_t KEYSTATUS[13]; +} HIDReport; + +typedef struct{ + uint16_t PORT; + uint16_t PIN; +} KbdPins; + +typedef struct{ + uint8_t PREV; //Previous State + uint8_t CURR; //Current State + uint8_t KEYCODE; +} Key; + + +extern USBD_HandleTypeDef hUsbDeviceFS; +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +#define ROWS 2 +#define COLS 2 +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +Key matrix[ROWS][COLS] = { + {{0,0,0x01},{0,0,0x0C}}, + {{0,0,0x0E},{0,0,0x18}}, +}; +KbdPins row_pins[ROWS] = { + {GPIOC, GPIO_PIN_6}, + {GPIOB, GPIO_PIN_15} +}; +KbdPins col_pins[COLS] = { + {GPIOB, GPIO_PIN_14}, + {GPIOB, GPIO_PIN_13} +}; +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + HIDReport report = {0,0,0,0,0,0,0,0}; + uint8_t report_buff[] = {0,0,0,0,0,0}; + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CAN1_Init(); + MX_USB_DEVICE_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + + //Keycode Scan + // for(int col = 0; col < COLS; col++){ + // HAL_GPIO_WritePin(col_pins[col].PORT, col_pins[col].PIN, GPIO_PIN_SET); + // for(int row = 0; row < ROWS; row++){ + // uint8_t state = HAL_GPIO_ReadPin(row_pins[row].PORT, col_pins[row].PIN); + // if(state != matrix[row][col].PREV){ + // matrix[row][col].PREV = matrix[row][col].CURR; + // matrix[row][col].CURR = state; + // if(state){ + // //Put into the buffer + // if(report_buff) + // } + // } + + // } + // } + + /* USER CODE END WHILE */ + report.KEYSTATUS[0] = 0x01; + USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&report, sizeof(report)); + HAL_Delay(1000); + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + RCC_OscInitStruct.PLL.PLLR = 2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_hal_msp.c b/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_hal_msp.c new file mode 100644 index 00000000..00c02c33 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_hal_msp.c @@ -0,0 +1,82 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_hal_msp.c + * @brief This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_it.c b/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_it.c new file mode 100644 index 00000000..4e4877b6 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/Src/stm32f4xx_it.c @@ -0,0 +1,232 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f4xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern PCD_HandleTypeDef hpcd_USB_OTG_FS; +extern CAN_HandleTypeDef hcan1; +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32F4xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32f4xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles CAN1 RX0 interrupt. + */ +void CAN1_RX0_IRQHandler(void) +{ + /* USER CODE BEGIN CAN1_RX0_IRQn 0 */ + + /* USER CODE END CAN1_RX0_IRQn 0 */ + HAL_CAN_IRQHandler(&hcan1); + /* USER CODE BEGIN CAN1_RX0_IRQn 1 */ + + /* USER CODE END CAN1_RX0_IRQn 1 */ +} + +/** + * @brief This function handles USB On The Go FS global interrupt. + */ +void OTG_FS_IRQHandler(void) +{ + /* USER CODE BEGIN OTG_FS_IRQn 0 */ + + /* USER CODE END OTG_FS_IRQn 0 */ + HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); + /* USER CODE BEGIN OTG_FS_IRQn 1 */ + + /* USER CODE END OTG_FS_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/components/mainboard/Src/usb_device.c b/firmware/components/mainboard/stmf446retx/Src/usb_device.c similarity index 94% rename from firmware/components/mainboard/Src/usb_device.c rename to firmware/components/mainboard/stmf446retx/Src/usb_device.c index 8727f6f3..3d3e900d 100644 --- a/firmware/components/mainboard/Src/usb_device.c +++ b/firmware/components/mainboard/stmf446retx/Src/usb_device.c @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usb_device.c - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : This file implements the USB Device ****************************************************************************** * @attention diff --git a/firmware/components/mainboard/Src/usbd_conf.c b/firmware/components/mainboard/stmf446retx/Src/usbd_conf.c similarity index 71% rename from firmware/components/mainboard/Src/usbd_conf.c rename to firmware/components/mainboard/stmf446retx/Src/usbd_conf.c index 4830e32e..ef53ffbd 100644 --- a/firmware/components/mainboard/Src/usbd_conf.c +++ b/firmware/components/mainboard/stmf446retx/Src/usbd_conf.c @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usbd_conf.c - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : This file implements the board support package for the USB device library ****************************************************************************** * @attention @@ -19,10 +19,11 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx.h" -#include "stm32f1xx_hal.h" +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" #include "usbd_def.h" #include "usbd_core.h" + #include "usbd_hid.h" /* USER CODE BEGIN Includes */ @@ -38,28 +39,27 @@ /* USER CODE END PV */ -PCD_HandleTypeDef hpcd_USB_FS; +PCD_HandleTypeDef hpcd_USB_OTG_FS; void Error_Handler(void); +/* External functions --------------------------------------------------------*/ +void SystemClock_Config(void); + /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); /* USER CODE END PFP */ /* Private functions ---------------------------------------------------------*/ -static USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ /******************************************************************************* LL Driver Callbacks (PCD -> USB Device Library) @@ -68,45 +68,69 @@ void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) { - if(pcdHandle->Instance==USB) + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + if(pcdHandle->Instance==USB_OTG_FS) { - /* USER CODE BEGIN USB_MspInit 0 */ + /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */ + + /* USER CODE END USB_OTG_FS_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_CLK48; + PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48CLKSOURCE_PLLQ; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USB_OTG_FS GPIO Configuration + PA11 ------> USB_OTG_FS_DM + PA12 ------> USB_OTG_FS_DP + */ + GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* USER CODE END USB_MspInit 0 */ /* Peripheral clock enable */ - __HAL_RCC_USB_CLK_ENABLE(); + __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); - /* USER CODE BEGIN USB_MspInit 1 */ + HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(OTG_FS_IRQn); + /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */ - /* USER CODE END USB_MspInit 1 */ + /* USER CODE END USB_OTG_FS_MspInit 1 */ } } void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle) { - if(pcdHandle->Instance==USB) + if(pcdHandle->Instance==USB_OTG_FS) { - /* USER CODE BEGIN USB_MspDeInit 0 */ + /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */ - /* USER CODE END USB_MspDeInit 0 */ + /* USER CODE END USB_OTG_FS_MspDeInit 0 */ /* Peripheral clock disable */ - __HAL_RCC_USB_CLK_DISABLE(); + __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); + + /**USB_OTG_FS GPIO Configuration + PA11 ------> USB_OTG_FS_DM + PA12 ------> USB_OTG_FS_DP + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); /* Peripheral interrupt Deinit*/ - /* USER CODE BEGIN USB:USB_LP_CAN1_RX0_IRQn disable */ - /** - * Uncomment the line below to disable the "USB_LP_CAN1_RX0_IRQn" interrupt - * Be aware, disabling shared interrupt may affect other IPs - */ - /* HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); */ - /* USER CODE END USB:USB_LP_CAN1_RX0_IRQn disable */ + HAL_NVIC_DisableIRQ(OTG_FS_IRQn); - /* USER CODE BEGIN USB_MspDeInit 1 */ + /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */ - /* USER CODE END USB_MspDeInit 1 */ + /* USER CODE END USB_OTG_FS_MspDeInit 1 */ } } @@ -181,7 +205,15 @@ void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) { USBD_SpeedTypeDef speed = USBD_SPEED_FULL; - if ( hpcd->Init.speed != PCD_SPEED_FULL) + if ( hpcd->Init.speed == PCD_SPEED_HIGH) + { + speed = USBD_SPEED_HIGH; + } + else if ( hpcd->Init.speed == PCD_SPEED_FULL) + { + speed = USBD_SPEED_FULL; + } + else { Error_Handler(); } @@ -206,6 +238,7 @@ void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) { /* Inform USB library that core enters in suspend Mode. */ USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + __HAL_PCD_GATE_PHYCLOCK(hpcd); /* Enter in STOP mode. */ /* USER CODE BEGIN 2 */ if (hpcd->Init.low_power_enable) @@ -304,43 +337,45 @@ void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) { /* Init USB Ip. */ + if (pdev->id == DEVICE_FS) { /* Link the driver to the stack. */ - hpcd_USB_FS.pData = pdev; - pdev->pData = &hpcd_USB_FS; + hpcd_USB_OTG_FS.pData = pdev; + pdev->pData = &hpcd_USB_OTG_FS; - hpcd_USB_FS.Instance = USB; - hpcd_USB_FS.Init.dev_endpoints = 8; - hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; - hpcd_USB_FS.Init.low_power_enable = DISABLE; - hpcd_USB_FS.Init.lpm_enable = DISABLE; - hpcd_USB_FS.Init.battery_charging_enable = DISABLE; - if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) + hpcd_USB_OTG_FS.Instance = USB_OTG_FS; + hpcd_USB_OTG_FS.Init.dev_endpoints = 6; + hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL; + hpcd_USB_OTG_FS.Init.dma_enable = DISABLE; + hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED; + hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE; + hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE; + hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE; + hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE; + hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE; + if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK) { Error_Handler( ); } #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) /* Register USB PCD CallBacks */ - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); - HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); - HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_FS, PCD_DataOutStageCallback); - HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); - HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); - HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); + HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_OTG_FS, PCD_DataOutStageCallback); + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_OTG_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOINIncompleteCallback); #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - /* USER CODE BEGIN EndPoint_Configuration */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); - /* USER CODE END EndPoint_Configuration */ - /* USER CODE BEGIN EndPoint_Configuration_HID */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0x100); - /* USER CODE END EndPoint_Configuration_HID */ + HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80); + HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40); + HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x80); + } return USBD_OK; } @@ -533,7 +568,7 @@ USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_a * @param size: Data size * @retval USBD status */ -USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size) { HAL_StatusTypeDef hal_status = HAL_OK; USBD_StatusTypeDef usb_status = USBD_OK; @@ -553,7 +588,7 @@ USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, u * @param size: Data size * @retval USBD status */ -USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size) { HAL_StatusTypeDef hal_status = HAL_OK; USBD_StatusTypeDef usb_status = USBD_OK; @@ -577,15 +612,57 @@ uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) } /** - * @brief Delays routine for the USB device library. - * @param Delay: Delay in ms + * @brief Send LPM message to user layer + * @param hpcd: PCD handle + * @param msg: LPM message * @retval None */ -void USBD_LL_Delay(uint32_t Delay) +void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg) { - HAL_Delay(Delay); + switch (msg) + { + case PCD_LPM_L0_ACTIVE: + if (hpcd->Init.low_power_enable) + { + SystemClock_Config(); + + /* Reset SLEEPDEEP bit of Cortex System Control Register. */ + SCB->SCR &= (uint32_t)~((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + __HAL_PCD_UNGATE_PHYCLOCK(hpcd); + USBD_LL_Resume(hpcd->pData); + break; + + case PCD_LPM_L1_ACTIVE: + __HAL_PCD_GATE_PHYCLOCK(hpcd); + USBD_LL_Suspend(hpcd->pData); + + /* Enter in STOP mode. */ + if (hpcd->Init.low_power_enable) + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + break; + } } +#ifdef USBD_HS_TESTMODE_ENABLE +/** + * @brief Set High speed Test mode. + * @param pdev: Device handle + * @param testmode: test mode + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_LL_SetTestMode(USBD_HandleTypeDef *pdev, uint8_t testmode) +{ + UNUSED(pdev); + UNUSED(testmode); + + return USBD_OK; +} +#endif /* USBD_HS_TESTMODE_ENABLE */ + /** * @brief Static single allocation. * @param size: Size of allocated memory @@ -608,29 +685,13 @@ void USBD_static_free(void *p) } /** - * @brief Software Device Connection - * @param hpcd: PCD handle - * @param state: Connection state (0: disconnected / 1: connected) + * @brief Delays routine for the USB Device Library. + * @param Delay: Delay in ms * @retval None */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +void USBD_LL_Delay(uint32_t Delay) { - /* USER CODE BEGIN 6 */ - if (state == 1) - { - /* Configure Low connection state. */ - - } - else - { - /* Configure High connection state. */ - - } - /* USER CODE END 6 */ + HAL_Delay(Delay); } /** diff --git a/firmware/components/mainboard/Src/usbd_desc.c b/firmware/components/mainboard/stmf446retx/Src/usbd_desc.c similarity index 82% rename from firmware/components/mainboard/Src/usbd_desc.c rename to firmware/components/mainboard/stmf446retx/Src/usbd_desc.c index 5b01e225..c992f3bd 100644 --- a/firmware/components/mainboard/Src/usbd_desc.c +++ b/firmware/components/mainboard/stmf446retx/Src/usbd_desc.c @@ -2,7 +2,7 @@ /** ****************************************************************************** * @file : usbd_desc.c - * @version : v2.0_Cube + * @version : v1.0_Cube * @brief : This file implements the USB device descriptors. ****************************************************************************** * @attention @@ -62,14 +62,16 @@ * @{ */ -#define USBD_VID 1155 +#define USBD_VID 0xCAFE #define USBD_LANGID_STRING 1033 -#define USBD_MANUFACTURER_STRING "STMicroelectronics" +#define USBD_MANUFACTURER_STRING "TeamSKBD" #define USBD_PID_FS 22315 -#define USBD_PRODUCT_STRING_FS "STM32 Human interface" +#define USBD_PRODUCT_STRING_FS "MSKBD Mainboard" #define USBD_CONFIGURATION_STRING_FS "HID Config" #define USBD_INTERFACE_STRING_FS "HID Interface" +#define USB_SIZ_BOS_DESC 0x0C + /* USER CODE BEGIN PRIVATE_DEFINES */ /* USER CODE END PRIVATE_DEFINES */ @@ -119,6 +121,9 @@ uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +#if (USBD_LPM_ENABLED == 1) +uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +#endif /* (USBD_LPM_ENABLED == 1) */ /** * @} @@ -138,6 +143,9 @@ USBD_DescriptorsTypeDef FS_Desc = , USBD_FS_SerialStrDescriptor , USBD_FS_ConfigStrDescriptor , USBD_FS_InterfaceStrDescriptor +#if (USBD_LPM_ENABLED == 1) +, USBD_FS_USR_BOSDescriptor +#endif /* (USBD_LPM_ENABLED == 1) */ }; #if defined ( __ICCARM__ ) /* IAR Compiler */ @@ -148,7 +156,13 @@ __ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = { 0x12, /*bLength */ USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ +#if (USBD_LPM_ENABLED == 1) + 0x01, /*bcdUSB */ /* changed to USB version 2.01 + in order to support LPM L1 suspend + resume test of USBCV3.0*/ +#else 0x00, /*bcdUSB */ +#endif /* (USBD_LPM_ENABLED == 1) */ 0x02, 0x00, /*bDeviceClass*/ 0x00, /*bDeviceSubClass*/ @@ -167,6 +181,28 @@ __ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = }; /* USB_DeviceDescriptor */ +/** BOS descriptor. */ +#if (USBD_LPM_ENABLED == 1) +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +__ALIGN_BEGIN uint8_t USBD_FS_BOSDesc[USB_SIZ_BOS_DESC] __ALIGN_END = +{ + 0x5, + USB_DESC_TYPE_BOS, + 0xC, + 0x0, + 0x1, /* 1 device capability*/ + /* device capability*/ + 0x7, + USB_DEVICE_CAPABITY_TYPE, + 0x2, + 0x2, /* LPM capability bit set*/ + 0x0, + 0x0, + 0x0 +}; +#endif /* (USBD_LPM_ENABLED == 1) */ /** * @} @@ -329,6 +365,21 @@ uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *leng return USBD_StrDesc; } +#if (USBD_LPM_ENABLED == 1) +/** + * @brief Return the BOS descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_FS_BOSDesc); + return (uint8_t*)USBD_FS_BOSDesc; +} +#endif /* (USBD_LPM_ENABLED == 1) */ + /** * @brief Create the serial number string descriptor * @param None diff --git a/firmware/components/mainboard/stmf446retx/lib/README b/firmware/components/mainboard/stmf446retx/lib/README new file mode 100644 index 00000000..93793971 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into the executable file. + +The source code of each library should be placed in a separate directory +("lib/your_library_name/[Code]"). + +For example, see the structure of the following example libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional. for custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +Example contents of `src/main.c` using Foo and Bar: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +The PlatformIO Library Dependency Finder will find automatically dependent +libraries by scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/firmware/components/mainboard/stmf446retx/mainboard-stmf446re.ioc b/firmware/components/mainboard/stmf446retx/mainboard-stmf446re.ioc new file mode 100644 index 00000000..17b42249 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/mainboard-stmf446re.ioc @@ -0,0 +1,172 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +CAN1.BS1=CAN_BS1_16TQ +CAN1.BS2=CAN_BS2_7TQ +CAN1.CalculateBaudRate=249999 +CAN1.CalculateTimeBit=4000 +CAN1.CalculateTimeQuantum=166.66666666666669 +CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,BS1,BS2 +CAN1.Prescaler=6 +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.CPN=STM32F446RET6 +Mcu.Family=STM32F4 +Mcu.IP0=CAN1 +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SYS +Mcu.IP4=USB_DEVICE +Mcu.IP5=USB_OTG_FS +Mcu.IPNb=6 +Mcu.Name=STM32F446R(C-E)Tx +Mcu.Package=LQFP64 +Mcu.Pin0=PH0-OSC_IN +Mcu.Pin1=PH1-OSC_OUT +Mcu.Pin10=PB8 +Mcu.Pin11=PB9 +Mcu.Pin12=VP_SYS_VS_Systick +Mcu.Pin13=VP_USB_DEVICE_VS_USB_DEVICE_HID_FS +Mcu.Pin2=PB13 +Mcu.Pin3=PB14 +Mcu.Pin4=PB15 +Mcu.Pin5=PC6 +Mcu.Pin6=PA11 +Mcu.Pin7=PA12 +Mcu.Pin8=PA13 +Mcu.Pin9=PA14 +Mcu.PinsNb=14 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F446RETx +MxCube.Version=6.13.0 +MxDb.Version=DB.6.0.130 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.OTG_FS_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +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 +PB13.Locked=true +PB13.Signal=GPIO_Output +PB14.Locked=true +PB14.Signal=GPIO_Output +PB15.Locked=true +PB15.Signal=GPIO_Input +PB8.Mode=CAN_Activate +PB8.Signal=CAN1_RX +PB9.Mode=CAN_Activate +PB9.Signal=CAN1_TX +PC6.Locked=true +PC6.Signal=GPIO_Input +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 +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=true +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F446RETx +ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.2 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=true +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=mainboard-stmf446re.ioc +ProjectManager.ProjectName=mainboard-stmf446re +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=CMake +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN1_Init-CAN1-false-HAL-true,4-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false +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.CECFreq_Value=32786.88524590164 +RCC.CortexFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 +RCC.FMPI2C1Freq_Value=36000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=72000000 +RCC.HSE_VALUE=8000000 +RCC.I2S1Freq_Value=48000000 +RCC.I2S2Freq_Value=48000000 +RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CECFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FMPI2C1Freq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,I2S1Freq_Value,I2S2Freq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLI2SoutputFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLRCLKFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PLLSAIoutputFreq_Value,PWRFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SPDIFRXFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBFreq_Value,VCOI2SInputFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIInputFreq_Value,VCOSAIOutputFreq_Value +RCC.MCO2PinFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLI2SPCLKFreq_Value=48000000 +RCC.PLLI2SQCLKFreq_Value=48000000 +RCC.PLLI2SRCLKFreq_Value=48000000 +RCC.PLLI2SoutputFreq_Value=48000000 +RCC.PLLM=4 +RCC.PLLN=72 +RCC.PLLQ=3 +RCC.PLLQCLKFreq_Value=48000000 +RCC.PLLRCLKFreq_Value=72000000 +RCC.PLLSAIPCLKFreq_Value=48000000 +RCC.PLLSAIQCLKFreq_Value=48000000 +RCC.PLLSAIoutputFreq_Value=48000000 +RCC.PWRFreq_Value=72000000 +RCC.SAIAFreq_Value=48000000 +RCC.SAIBFreq_Value=48000000 +RCC.SDIOFreq_Value=48000000 +RCC.SPDIFRXFreq_Value=72000000 +RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.USBFreq_Value=48000000 +RCC.VCOI2SInputFreq_Value=500000 +RCC.VCOI2SOutputFreq_Value=96000000 +RCC.VCOInputFreq_Value=2000000 +RCC.VCOOutputFreq_Value=144000000 +RCC.VCOSAIInputFreq_Value=500000 +RCC.VCOSAIOutputFreq_Value=96000000 +USB_DEVICE.CLASS_NAME_FS=HID +USB_DEVICE.IPParameters=VirtualMode-HID_FS,VirtualModeFS,CLASS_NAME_FS,VID-HID_FS,MANUFACTURER_STRING-HID_FS,PRODUCT_STRING_HID_FS +USB_DEVICE.MANUFACTURER_STRING-HID_FS=TeamSKBD +USB_DEVICE.PRODUCT_STRING_HID_FS=MSKBD Mainboard +USB_DEVICE.VID-HID_FS=0xCAFE +USB_DEVICE.VirtualMode-HID_FS=Hid +USB_DEVICE.VirtualModeFS=Hid_FS +USB_OTG_FS.IPParameters=VirtualMode +USB_OTG_FS.VirtualMode=Device_Only +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_USB_DEVICE_VS_USB_DEVICE_HID_FS.Mode=HID_FS +VP_USB_DEVICE_VS_USB_DEVICE_HID_FS.Signal=USB_DEVICE_VS_USB_DEVICE_HID_FS +board=custom diff --git a/firmware/components/mainboard/stmf446retx/platformio.ini b/firmware/components/mainboard/stmf446retx/platformio.ini new file mode 100644 index 00000000..854de7fa --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/platformio.ini @@ -0,0 +1,19 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:nucleo_f446re] +platform = ststm32 +board = nucleo_f446re +framework = stm32cube +board_build.stm32cube.custom_config_header = yes + +[platformio] +include_dir = Inc +src_dir = Src diff --git a/firmware/components/mainboard/stmf446retx/stm32pio.ini b/firmware/components/mainboard/stmf446retx/stm32pio.ini new file mode 100644 index 00000000..4d7ac669 --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/stm32pio.ini @@ -0,0 +1,19 @@ +[app] +platformio_cmd = platformio +cubemx_cmd = /opt/stm32cubemx/STM32CubeMX +java_cmd = java + +[project] +cubemx_script_content = config load ${ioc_file_absolute_path} + generate code ${project_dir_absolute_path} + exit +platformio_ini_patch_content = [platformio] + include_dir = Inc + src_dir = Src +board = nucleo_f446re +ioc_file = mainboard-stmf446re.ioc +cleanup_ignore = mainboard-stmf446re.ioc +cleanup_use_git = False +inspect_ioc = True +last_error = + diff --git a/firmware/components/mainboard/stmf446retx/test/README b/firmware/components/mainboard/stmf446retx/test/README new file mode 100644 index 00000000..9b1e87bc --- /dev/null +++ b/firmware/components/mainboard/stmf446retx/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Test Runner and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html