How to Configure VS Code with CMake for STM32F4xx Projects Using GNU Arm Toolchain

Configuring VS Code with CMake for STM32F4xx Embedded C Projects Using the GNU Arm Embedded Toolchain

This tutorial will guide you through the process of configuring Visual Studio Code (VS Code) with CMake to develop STM32F4xx embedded C projects using the GNU Arm Embedded Toolchain. By the end of this tutorial, you will have a fully functional development environment tailored for STM32 microcontrollers.

Prerequisites

  • Basic understanding of embedded C programming.
  • Installed Visual Studio Code.
  • Installed CMake.
  • Installed GNU Arm Embedded Toolchain.
  • STM32CubeMX (optional, for generating initialization code).

Parts/Tools

  • Computer with Windows, macOS, or Linux.
  • USB to serial adapter (for flashing and debugging).
  • STM32F4xx development board.
  • VS Code extensions: C/C++, CMake Tools, Cortex-Debug.

Steps

  1. Install Required Software
  2. Create a New Project
    • Open VS Code and create a new folder for your project.
    • Open the terminal in VS Code (“Ctrl + ` “) and run:
      mkdir STM32F4_Project
      cd STM32F4_Project
      
  3. Set Up CMake Configuration
    • Create a `CMakeLists.txt` file in your project folder with the following content:
      cmake_minimum_required(VERSION 3.10)
      project(STM32F4_Project C CXX)
      
      set(CMAKE_SYSTEM_NAME Generic)
      set(CMAKE_SYSTEM_PROCESSOR arm)
      
      set(CMAKE_C_COMPILER arm-none-eabi-gcc)
      set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
      set(CMAKE_LINKER arm-none-eabi-ld)
      
      set(SOURCE_FILES main.c)
      add_executable(STM32F4_Project ${SOURCE_FILES})
      
  4. Create Main Source File
    • Create a `main.c` file in your project folder with a simple main function:
      #include 
      
      int main() {
          printf("Hello STM32!n");
          while(1);
          return 0;
      }
      
  5. Configure VS Code Settings
    • Open the command palette (“Ctrl + Shift + P“) and select `CMake: Configure`. This will generate the build files.
    • To set up debugging, create a `.vscode` folder in your project directory and add a `launch.json` file:
      {
          "version": "0.2.0",
          "configurations": [
              {
                  "name": "STM32F4 Debug",
                  "type": "cortex-debug",
                  "request": "launch",
                  "executable": "${workspaceFolder}/build/STM32F4_Project.elf",
                  "servertype": "stlink",
                  "device": "STM32F4xx",
                  "cwd": "${workspaceFolder}",
                  "runToEntryPoint": "main",
                  "preLaunchTask": "build"
              }
          ]
      }
      
  6. Build Your Project
    • Open the terminal and run:
      cmake -S . -B build
      cmake --build build
      
  7. Upload Code to STM32F4xx
    • Connect your STM32 board to the computer using the USB cable.
    • In the terminal, use:
      arm-none-eabi-gdb build/STM32F4_Project.elf
      target remote :1234
      monitor reset halt
      load
      

Troubleshooting

  • GDB Connection Issues: Ensure that the STM32 board is properly connected and powered. Check the correct port in the `launch.json` file.
  • Compilation Errors: Verify that the paths to the compiler and tools are correctly set in your environment variables.
  • Debugging Problems: Make sure the Cortex-Debug extension is properly configured and that the correct device is specified.

Conclusion

By following these steps, you have successfully configured VS Code with CMake for STM32F4xx embedded C projects using the GNU Arm Embedded Toolchain. You can now develop, build, and debug your applications effectively. Happy coding!

Leave a Comment

Your email address will not be published. Required fields are marked *