Skip to content

Dima-Meln/stm32-cmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents

About

This project is used to develop applications for stm32 - ST's ARM Cortex-M3 MCUs, using cmake, GCC, newlib (libc) and STM32F10x Standard Peripherals Library.

Requirements:

  • cmake >= 2.6
  • GCC toolchain with newlib.
  • STM32F10x Standard Peripherals Library
Project contains:
  • CMake toolchain file, that configures cmake to use arm toolchain.
  • CMake projects that builds CMSIS and STM32F10x Standard Peripherals Library into static libraries.
  • CMake modules to find and configure CMSIS ans StdPeriphLib libraries.
  • CMake project template.
  • Example projects
    • blinky - blink LED using timers and PWM.
    • newlib - show date from RTC using uart and libc functions from newlib

Building & Installing

First of all you need to configure toolchain and libraries, you can do this by editing gcc_stm32.cmake or pass it throught command line. Variables for toolchain:

  • TOOLCHAIN_PREFIX - where toolchain is located, default: /usr
  • TARGET_TRIPLET - toolchain target triplet, default: arm-none-eabi
Variables for CMSIS and StdPeriphLib:
  • STM32_StdPeriphLib_DIR - path to STM32F10x Standard Peripherals Library default: /opt/STM32F10x_StdPeriph_Lib_V3.5.0
  • USE_ASSERT - Use internal asserts in Standard Peripherals Library.

Build CMSIS and Standard Peripherals Library

In cmsis folder:

 cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_INSTALL_PREFIX=/home/dima/apps/CodeBench/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release -DPROJECT_BINARY_DIR=/home/dima/projects/git/stm32-cmake/stm32f4/cmsis/build
 make && make install

In stdperiph folder

 cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_INSTALL_PREFIX=/home/dima/apps/CodeBench/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release -DPROJECT_BINARY_DIR=/home/dima/projects/git/stm32-cmake/stm32f4/cmsis/build
 make && make install

Note: You can use different CMAKE_INSTALL_PREFIX, but than you'll have to configure cmake search paths when using cmake modules.

Note: To prevent header collision file "misc.h" from Standard Peripherals Library will be installed as stm32f10x_misc.h

Usage

After building you need to copy cmake modules in cmake's modules path, or just set CMAKE_MODULE_PATH in project. Than you need to adjust some variables in CMakeLists.txt (example for stm32f103ve):

  • PROJECT(stm32-template) - Set the project name.
  • FIND_PACKAGE(StdPeriphLib REQUIRED) - comment/remove this if you don't need StdPeriphLib. CMSIS package are always required.
  • STM32_SET_PARAMS("512K" "64K" "0x20010000") - Set chip's flash size, ram size, and stack bottom address. Also, you can change min heap size, stack size, etc. - look into FindCMSIS.cmake
  • All projects sources should be listed in PROJECT_SOURCES variable.
Also, if you using StdPeriphLib you need to adjust modules in stm32f10x_conf.h.

Build

Generate Makefile:

 cmake -DSTM32_CHIP_TYPE=<chip type> -DCMAKE_TOOLCHAIN_FILE=<path_to_gcc_stm32.cmake> -DCMAKE_BUILD_TYPE=Debug <path_to_source_dir>

Where <chip></chip>:

  • HD - High Density MCUs
  • HD_VL - High Density Value Line MCUs
  • MD - Medium Density MCUs
  • MD_VL - Medium Density Value Line MCUs
  • LD - Low Density MCUs
  • LD_VL - Low Density Value Line MCUs
  • CL - Connectivity Line MCUs
  • XL - XL Density MCUs
Build:

 make

The result is a .elf file, to build .hex:

 make &lt;project&gt;&lt;/project&gt;.hex

or .bin:

 make &lt;project&gt;&lt;/project&gt;.bin

For using with Eclipse CDT:

 cmake -DSTM32_CHIP_TYPE=&lt;chip&gt;&lt;/chip&gt; -DCMAKE_TOOLCHAIN_FILE=&lt;path_to_stm32.cmake&gt;&lt;/path_to_stm32.cmake&gt; -DCMAKE_BUILD_TYPE=Debug -G "Eclipse CDT4 - Unix Makefiles" &lt;path_to_source_dir&gt;&lt;/path_to_source_dir&gt;

For release build:

 cmake -DSTM32_CHIP_TYPE=&lt;chip&gt;&lt;/chip&gt; -DCMAKE_TOOLCHAIN_FILE=&lt;path_to_stm32.cmake&gt;&lt;/path_to_stm32.cmake&gt; -DCMAKE_BUILD_TYPE=Release &lt;path_to_source_dir&gt;&lt;/path_to_source_dir&gt;

About

CMake tools for stm32f1xx/stm32f4xx developing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages