Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 59)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 61)
@@ -36,4 +36,5 @@
 Mcu.IP0=CORTEX_M7
 Mcu.IP1=DEBUG
+Mcu.IP10=USART3
 Mcu.IP2=DMA
 Mcu.IP3=MEMORYMAP
@@ -44,5 +45,5 @@
 Mcu.IP8=SPI4
 Mcu.IP9=SYS
-Mcu.IPNb=10
+Mcu.IPNb=11
 Mcu.Name=STM32H723ZETx
 Mcu.Package=LQFP144
@@ -53,27 +54,31 @@
 Mcu.Pin12=PE14
 Mcu.Pin13=PE15
-Mcu.Pin14=PC8
-Mcu.Pin15=PC9
-Mcu.Pin16=PA8
-Mcu.Pin17=PA13(JTMS/SWDIO)
-Mcu.Pin18=PA14(JTCK/SWCLK)
-Mcu.Pin19=PC10
+Mcu.Pin14=PD8
+Mcu.Pin15=PD9
+Mcu.Pin16=PD10
+Mcu.Pin17=PC8
+Mcu.Pin18=PC9
+Mcu.Pin19=PA8
 Mcu.Pin2=PC15-OSC32_OUT
-Mcu.Pin20=PC11
-Mcu.Pin21=PC12
-Mcu.Pin22=PD2
-Mcu.Pin23=PD7
-Mcu.Pin24=PG9
-Mcu.Pin25=PG10
-Mcu.Pin26=PG11
-Mcu.Pin27=PG12
-Mcu.Pin28=PG13
-Mcu.Pin29=VP_RTC_VS_RTC_Activate
+Mcu.Pin20=PA13(JTMS/SWDIO)
+Mcu.Pin21=PA14(JTCK/SWCLK)
+Mcu.Pin22=PC10
+Mcu.Pin23=PC11
+Mcu.Pin24=PC12
+Mcu.Pin25=PD2
+Mcu.Pin26=PD7
+Mcu.Pin27=PG9
+Mcu.Pin28=PG10
+Mcu.Pin29=PG11
 Mcu.Pin3=PH0-OSC_IN
-Mcu.Pin30=VP_SYS_VS_tim7
-Mcu.Pin31=VP_MEMORYMAP_VS_MEMORYMAP
-Mcu.Pin32=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_RTOSJjThreadX_6.4.0_3.3.0
-Mcu.Pin33=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_FileOoSystemJjFileX_6.4.0_3.3.0
-Mcu.Pin34=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_FileOoSystemJjInterfaces_3.3.0_3.3.0
+Mcu.Pin30=PG12
+Mcu.Pin31=PG13
+Mcu.Pin32=PG15
+Mcu.Pin33=VP_RTC_VS_RTC_Activate
+Mcu.Pin34=VP_SYS_VS_tim7
+Mcu.Pin35=VP_MEMORYMAP_VS_MEMORYMAP
+Mcu.Pin36=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_RTOSJjThreadX_6.4.0_3.3.0
+Mcu.Pin37=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_FileOoSystemJjFileX_6.4.0_3.3.0
+Mcu.Pin38=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_FileOoSystemJjInterfaces_3.3.0_3.3.0
 Mcu.Pin4=PH1-OSC_OUT
 Mcu.Pin5=PF15
@@ -82,5 +87,5 @@
 Mcu.Pin8=PE7
 Mcu.Pin9=PE11
-Mcu.PinsNb=35
+Mcu.PinsNb=39
 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
 Mcu.ThirdPartyNb=1
@@ -133,4 +138,8 @@
 PC9.Mode=SD_4_bits_Wide_bus
 PC9.Signal=SDMMC1_D1
+PD10.GPIOParameters=GPIO_Label
+PD10.GPIO_Label=GSM_PWR
+PD10.Locked=true
+PD10.Signal=GPIO_Output
 PD2.Mode=SD_4_bits_Wide_bus
 PD2.Signal=SDMMC1_CMD
@@ -139,4 +148,10 @@
 PD7.Locked=true
 PD7.Signal=GPIO_Output
+PD8.Locked=true
+PD8.Mode=Asynchronous
+PD8.Signal=USART3_TX
+PD9.Locked=true
+PD9.Mode=Asynchronous
+PD9.Signal=USART3_RX
 PE11.GPIOParameters=GPIO_Label
 PE11.GPIO_Label=SPI4_NSS_DISPLAY
@@ -199,4 +214,8 @@
 PG13.Locked=true
 PG13.Signal=GPIO_Output
+PG15.GPIOParameters=GPIO_Label
+PG15.GPIO_Label=BUZZER
+PG15.Locked=true
+PG15.Signal=GPIO_Output
 PG9.GPIOParameters=GPIO_Label
 PG9.GPIO_Label=ERROR_LED
@@ -256,20 +275,21 @@
 RCC.DIVM1=5
 RCC.DIVM2=3
-RCC.DIVM3=1
+RCC.DIVM3=25
 RCC.DIVN1=40
 RCC.DIVN2=40
-RCC.DIVN3=4
+RCC.DIVN3=200
 RCC.DIVP1Freq_Value=100000000
 RCC.DIVP2Freq_Value=166666666.66666666
-RCC.DIVP3Freq_Value=50000000
+RCC.DIVP3Freq_Value=100000000
 RCC.DIVQ1=4
 RCC.DIVQ1Freq_Value=50000000
 RCC.DIVQ2=11
 RCC.DIVQ2Freq_Value=30303030.3030303
-RCC.DIVQ3Freq_Value=50000000
+RCC.DIVQ3=8
+RCC.DIVQ3Freq_Value=25000000
 RCC.DIVR1Freq_Value=100000000
 RCC.DIVR2=10
 RCC.DIVR2Freq_Value=33333333.333333332
-RCC.DIVR3Freq_Value=50000000
+RCC.DIVR3Freq_Value=100000000
 RCC.FDCANFreq_Value=50000000
 RCC.FMCFreq_Value=100000000
@@ -279,10 +299,10 @@
 RCC.I2C123Freq_Value=100000000
 RCC.I2C4Freq_Value=100000000
-RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
+RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
 RCC.LPTIM1Freq_Value=100000000
 RCC.LPTIM2Freq_Value=100000000
 RCC.LPTIM345Freq_Value=100000000
 RCC.LPUART1Freq_Value=100000000
-RCC.LTDCFreq_Value=50000000
+RCC.LTDCFreq_Value=100000000
 RCC.MCO1PinFreq_Value=64000000
 RCC.MCO2PinFreq_Value=100000000
@@ -310,12 +330,13 @@
 RCC.TraceFreq_Value=100000000
 RCC.USART16Freq_Value=100000000
-RCC.USART234578Freq_Value=100000000
+RCC.USART234578CLockSelection=RCC_USART234578CLKSOURCE_PLL3
+RCC.USART234578Freq_Value=25000000
 RCC.USBFreq_Value=50000000
 RCC.VCO1OutputFreq_Value=200000000
 RCC.VCO2OutputFreq_Value=333333333.3333333
-RCC.VCO3OutputFreq_Value=100000000
+RCC.VCO3OutputFreq_Value=200000000
 RCC.VCOInput1Freq_Value=5000000
 RCC.VCOInput2Freq_Value=8333333.333333333
-RCC.VCOInput3Freq_Value=25000000
+RCC.VCOInput3Freq_Value=1000000
 SDMMC1.ClockPowerSave=SDMMC_CLOCK_POWER_SAVE_ENABLE
 SDMMC1.HardwareFlowControl=SDMMC_HARDWARE_FLOW_CONTROL_ENABLE
@@ -352,4 +373,6 @@
 STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0_IsAnAzureRtosMw=true
 STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0_SwParameter=InterfacesCcFileOoSystemJjFileXOoSDOointerface\:true;ThreadXCcRTOSJjThreadXJjLowOoPowerOosupport\:true;FileXCcFileOoSystemJjFileXJjCore\:true;ThreadXCcRTOSJjThreadXJjCore\:true;
+USART3.IPParameters=VirtualMode-Asynchronous
+USART3.VirtualMode-Asynchronous=VM_ASYNC
 VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg
 VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP
