Нет описания

Konstantin Oblaukhov 15e7c0bda3 ChibiOS 3 support for F4/F1. 10 лет назад
cmake 15e7c0bda3 ChibiOS 3 support for F4/F1. 10 лет назад
cmsis 8d82a295d3 Fix #9 11 лет назад
cmsis-3.0 1b98a38c82 CMSIS and StdPeriphLib can be used as list of sources now. 11 лет назад
packages bc30771dc2 Add the cmake modules for the toolchain. 12 лет назад
stdperiph 1b98a38c82 CMSIS and StdPeriphLib can be used as list of sources now. 11 лет назад
stm32-blinky e405b312e2 Added ability to specify linker script. 12 лет назад
stm32-blinky-sources 1b98a38c82 CMSIS and StdPeriphLib can be used as list of sources now. 11 лет назад
stm32-chibios 32a36acf47 Advanced ChibiOS support. 11 лет назад
stm32-newlib e405b312e2 Added ability to specify linker script. 12 лет назад
stm32-template e405b312e2 Added ability to specify linker script. 12 лет назад
README.mediawiki 1b98a38c82 CMSIS and StdPeriphLib can be used as list of sources now. 11 лет назад
gcc_stm32.cmake 1b98a38c82 CMSIS and StdPeriphLib can be used as list of sources now. 11 лет назад
gcc_stm32f1.cmake 84117c549a Force GCC assembler to use C preprocessor regardless of assembler file extension (.s or .S) 11 лет назад
gcc_stm32f4.cmake 15e7c0bda3 ChibiOS 3 support for F4/F1. 10 лет назад

README.mediawiki

== 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.8
* GCC toolchain with newlib.
* STM32F10x Standard Peripherals Library for STM32F1 family
* STM32F4 DSP and Standard Peripherals Library for STM32F4 family
Project contains:
* CMake common toolchain file, that configures cmake to use arm toolchain.
* CMake family-specific toolchain file, that configures family-specific parameters.
* CMake projects that builds CMSIS and 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 (better way) 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
* STM32_FAMILY - STM32 family (F0, F1, F4, etc.) currently, F1 and F4 family are supported.
'''Note:''' If STM32_CHIP variable is set, STM32_FAMILY is optional.

Variables for CMSIS and StdPeriphLib:
* STM32F1_StdPeriphLib_DIR - path to STM32F10x Standard Peripherals Library '''default''': /opt/STM32F10x_StdPeriph_Lib_V3.5.0
* STM32F4_StdPeriphLib_DIR - path to STM32F4 DSP and Standard Peripherals Library '''default''': /opt/STM32F4xx_DSP_StdPeriph_Lib_V1.3.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 -DSTM32_FAMILY=F1 -DCMAKE_INSTALL_PREFIX=/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
make && make install
In stdperiph folder
cmake -DCMAKE_TOOLCHAIN_FILE=../gcc_stm32.cmake -DCMAKE_MODULE_PATH=/Modules -DSTM32_FAMILY=F1 -DCMAKE_INSTALL_PREFIX=/arm-none-eabi/ -DCMAKE_BUILD_TYPE=Release
make && make install
'''Note:''' For building for STM32F4 family, change -DSTM32_FAMILY=F1 to -DSTM32_FAMILY=F4

'''Note:''' You can use different CMAKE_INSTALL_PREFIX, but than you'll have to configure cmake search paths when using cmake modules. You may specify an additional search path with -DEXTRA_FIND_PATH=

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

== Usage ==
After building you need to copy cmake modules in cmake's modules path, or just set CMAKE_MODULE_PATH in project.
Template project can be found in stm32-template folder.
You can use StdPeriphLib and CMSIS both as static libraries or list of source files (see stm32-blinky and stm32-blinky-sources example).

=== Configure ===
Common usage:
cmake -DSTM32_CHIP= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Debug
Where - stm32 chip name (e.g. STM32F100C8, STM32F407IG).
This command will generate Makefile for project.
Scripts will try to detected chip parameters (type, flash/ram size) from chip name.
You can set this parameters directly using following cmake variables:
* STM32_CHIP_TYPE - family-depended chip type. Global variable STM32_CHIP_TYPES contains list of valid types for current family (e.g. for F1 family: HD, HD_VL, MD, MD_VL, LD, LD_VL, CL, XL)
* STM32_FLASH_SIZE - chip flash size (e.g. 64K)
* STM32_RAM_SIZE - chip RAM size (e.g. 4K)

For using with Eclipse CDT:
cmake -DSTM32_CHIP= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Debug -G "Eclipse CDT4 - Unix Makefiles"
For release build:
cmake -DSTM32_CHIP= -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_BUILD_TYPE=Release

=== Build ===
make
To build .hex:
make .hex
or .bin:
make .bin

=== Linker script variables ===
Next cmake variables are useful for linker tuning:
* STM32_FLASH_ORIGIN - Start address of flash (default: 0x08000000)
* STM32_RAM_ORIGIN - Start address of RAM (default: 0x20000000)
* STM32_STACK_ADDRESS - Address of stack bottom (default: RAM_ORIGIN + RAM_SIZE)
* STM32_FLASH_SIZE - Flash size (default: from chip name)
* STM32_RAM_SIZE - RAM size (default: from chip name)
* STM32_MIN_STACK_SIZE - Minimum stack size for error detection at link-time (default: 512 bytes)
* STM32_MIN_HEAP_SIZE - Minimum heap size for error detection at link-time (default: 0 bytes)

=== Useful cmake macros ===
* STM32_GET_CHIP_TYPE(CHIP CHIP_TYPE) - gets chip type (HD, MD, etc.) from chip name.
* STM32_GET_CHIP_PARAMETERS(CHIP FLASH_SIZE RAM_SIZE) - gets chip ram/flash size from chip name.
* STM32_SET_CHIP_DEFINITIONS(TARGET CHIP_TYPE) - sets chip family and type-specific compiler flags for target.
* STM32_SET_FLASH_PARAMS(TARGET ...) - sets chip flash/ram parameters for targer.
* STM32_SET_TARGET_PROPERTIES(TARGET) - sets all needed parameters and compiler flags for target.
* STM32_GENERATE_LIBRARIES(NAME SOURCES LIBRARIES) - generates libraries for all chip types in family. Resulting libraries stored in LIBRARIES and have names in ${NAME}_${FAMILY}_${CHIP_TYPE} format.
* STM32_SET_HSE_VALUE - change HSE frequency definitions (in Hz). You have to use CMSIS and stdperiph sources directly to use this macro (see stm32-blinky-sources example).