== 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=/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release make && make install In stdperiph folder cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_INSTALL_PREFIX=/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release 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= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Debug Where : * 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 .hex or .bin: make .bin For using with Eclipse CDT: cmake -DSTM32_CHIP_TYPE= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Debug -G "Eclipse CDT4 - Unix Makefiles" For release build: cmake -DSTM32_CHIP_TYPE= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Release