Creating a project using STM32F407VET6 with V1.9.0 standard library#
1. Creating a new project directory#
For a completely new project, you need to create a new empty project directory. Create a folder and place 5 sub-folders inside it, named Core, Hardware, Library, System, and User. Each folder will contain different project files in the future.

2. Downloading the STM32 firmware library#
The STM32 firmware library includes the library function c files and h files corresponding to the STM32 peripherals, as well as the necessary startup files, etc. The firmware library also needs to be downloaded from the official website. Here, I provide a Lanzou download link.

3. Copying the files from the firmware library to the project path#
First, you need to copy the peripheral files from the firmware library to the project path. Copy the src and inc folders under the firmware library path \STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\STM32F4xx_StdPeriph_Driver to the project directory Library. The src folder contains the .c files of the firmware library, and the inc folder contains the corresponding .h files.

Copy the firmware library \STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm to the project directory Core. The file startup_stm32f40_41xxx.s is the startup file.

Copy the following core files from the firmware library \STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Libraries\CMSIS\Include to the project directory Core.



Now, these files have been copied to the Core directory of the project.
Copy the firmware library \STM32F4xx_DSP_StdPeriph_Lib_V1.9.0\Project\STM32F4xx_StdPeriph_Templates to the project directory User.

4. Creating a new project in Keil#
Open Keil5, select Project→New uVision Project from the top menu bar to create a new project. If there are other projects, click on Project->Close Project first.

Save it to the directory of the folder we just created, and name the file STM32F407VEProject.

Select the chip STM32F407VETx.

Click OK, then close the window below.

Click Manage Project Items.

Modify it as follows.

Add the following files to Core.

Add all files in the Library/src folder to Library.

Add the following files to User.

Click OK to close the window.
Click the magic wand to add file paths.

Add the following paths.

Click OK, then add the global macro definition identifier STM32F40_41xxx,USE_STDPERIPH_DRIVER.

Click OK again.
Open main.c and clear the internal data, leaving only the main function.

Remove the inclusion of the main.h header file on line 32 and the content of the SysTick_Handler function on line 144 in the stm32f4xx_it.c file under the User group.


Finally, find stm32f4xx_fmc.c in Library, right-click and select Options.
Uncheck include in Target Build in front of stm32f4xx_fmc.c. stm32f4xx_fmc.c is specific to the STM32F42 and STM32F43 series, so we need to remove it from the project (note that it is stm32f4xx_fmc.c, not stm32f4xx_fsmc.c).

After removing FMC and FSMC, the following situation may occur during compilation:

After the compilation is complete, we find that there are still errors. Double-click on the error message with the mouse to find the location of the error.

The reason is that it is defined repeatedly, which can be considered as an official bug. You need to comment out the code that causes the error:

Comment out this part and the warning will disappear.
The project is now created. Link to the project I created.