The question requires
the use of N32G430 as the main control of the multi-function DC power supply.
Question analysis
tips: Analyze and explain the entire question or the main part of the question content.

Schematic diagram design description
Voltage acquisition



PCB design description

The high current part uses 150mil line width and double-layer wiring.
Software description
void ADC_Initial(void){ ADC_InitType ADC_InitStructure; /* Enable peripheral clocks ------------------------------------------------*/ /* Enable GPIO ADC clock*/ RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA|RCC_AHB_PERIPH_GPIOB|RCC_AHB_PERIPH_GPIOC|RCC_AHB_PERIPH_G PIOD|RCC_AHB_PERIPH_ADC); /* RCC_ADCHCLK_DIV16*/ ADC_Clock_Mode_Config(ADC_CKMOD_AHB, RCC_ADCHCLK_DIV16); RCC_ADC_1M_Clock_Config(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8); //selsect HSE as RCC ADC1M CLK Source /* ADC configuration ---------------------------------------------------------*/ ADC_InitStructure.MultiChEn = DISABLE; ADC_InitStructure.ContinueConvEn = DISABLE; ADC_InitStructure.ExtTrigSelect = ADC_EXT_TRIGCONV_REGULAR_SWSTRRCH; ADC_InitStructure.DatAlign = ADC_DAT_ALIGN_R; ADC_InitStructure.ChsNumber = ADC_REGULAR_LEN_1; ADC_Initializes(&ADC_InitStructure);
/* Enable ADC */ ADC_ON( ); /* Check ADC Ready */ while(ADC_Flag_Status_Get(ADC_RD_FLAG ,ADC_FLAG_AWDG ,ADC_FLAG_RDY) == RESET) ; /* Start ADC1 calibration */ ADC_Calibration_Operation(ADC_CALIBRATION_ENABLE); /* Check the end of ADC1 calibration */ while (ADC_Calibration_Operation(ADC_CALIBRATION_STS) == SET) ;}
uint16_t ADC_GetData(uint8_t ADC_Channel){ uint16_t dat; ADC_Channel_Sample_Time_Config(ADC_Channel ,ADC_S AMP_TIME_55CYCLES5); ADC_Regular_Sequence_Conversion_Number_Config(ADC_Channel, ADC_REGULAR_NUMBER_1); /* Start ADC Software Conversion */ ADC_Regular_Channels_Software_Conversion_Operation(ADC_EXTRTRIG_SWSTRRCH_ENABLE); while(ADC_Flag_Status_Get(ADC_RUN_FL AG ,ADC_FLAG_ENDC ,ADC_FLAG_RDY)==0){ }ADC_Flag_Status_Clear(ADC_FLAG_ENDC); ADC_Flag_Status_Clear(ADC_FLAG_STR); dat=ADC_Regular_Group_Conversion_Data_Get(); return dat;}
Physical display descriptionThere

are two potentiometers under the OLED (one potentiometer was burned, and the new potentiometer has not arrived yet). The voltage can be adjusted through the potentiometer and displayed on the OLED.
NotesThe
maximum voltage of the OUT2 part is 12V. OUT1 is infinitely refreshed, and the maximum can be the battery voltage.
Demo video
tips: You can upload attachments for the demonstration video. The maximum attachment can only be a 50M file. Files larger than 50M can be placed on other network disks or video websites. Just put the address link here.
Other attachment upload
tips: Participating works must upload project-related program attachments to the open source platform or personal code storage cloud. The maximum attachment supports 50M upload (please do not upload in the LiChuang workspace, there are restrictions)