Creating a New Project

You create a new project by invoking File->New…->Project




The left panel is the list of “Wizards”, and “Projects”. You can select one of the following wizards:


     ImageCraft ArmGnu C Project creates a project with a skeletal main.c C file.

     ImageCraft ArmGnu Cpp Project creates a project with a skeletal main.cpp C++ file.

     ImageCraft ArmGnu Empty Project creates a project with no pre-created file

     ImageCraft ArmGnu Lib Project creates a project that compiles to a library project

     ImageCraft JSAPI Templates creates a project that uses ImageCraft JSAPI library. JSAPI (JumpStart API) is described later


Select one of the wizards, click Go, and follow the directions which include the location to create the project files and the Build and Debug options (described later). Except for a library project, the output of building/compiling a project is an “executable” image which you can download to a target MCU.


At the end of the process, the wizards will bring up the Build Options, and then the Debug/Download Options dialog boxes. See later sections for detail on these dialog boxes.

Wizard-Generated Files

In addition to a skeletal main.c or main.cpp source file, the wizards also generate two sets of files, one each for the Debug and Release targets:


     Startup.s, located in <project dir>\Setup\Debug and <project dir>\Setup\Release. The startup file contains code that executes before the user main function, and also contains code that sets up the C/C++ environment.

     Flash.ld, located in same directories as the startup files. These are Linker Memory files, described in detail later.


The actual filenames may be different from those above, depending on the project wizard. In any case, the wizard adds the startup and linker memory files to the project file list for the project, so it is easy to locate the files and their names.

Best Way to Create a New Project

If you are using an STM32Fxxx MCU, using the JumpStart API (JSAPI) template wizard is recommended. With JSAPI API, you can set up the system clock and have basic peripheral I/O such as USART, SPI, I2C working in just a few lines of code. We will expand JSAPI to cover other MCU series in the future.

Otherwise, ST’s graphical CubeMX tools (for STM32 MCU only) is useful to set up all the low-level bits and pieces that JSAPI does not support. Once you create a CubeMX project, you can import the project to JumpStart C++ for Cortex.

For other vendors’ MCUs, most of the examples and source code libraries are provided in GCC compatible form, and it is easy to create a JumpStart C++ project for them.