CMSIS-Core (Cortex-M)  Version 5.1.1
CMSIS-Core support for Cortex-M processor-based devices
 All Data Structures Files Functions Variables Enumerations Enumerator Groups Pages
Version Control

Version #define symbols for CMSIS release specific C/C++ source code. More...

Content

 Version Control per Core (Depricated)
 Version #define symbols for CMSIS release specific C/C++ source code.
 

Macros

#define __CM_CMSIS_VERSION_MAIN
 Contains the CMSIS major version. More...
 
#define __CM_CMSIS_VERSION_SUB
 Contains the CMSIS minor version. More...
 
#define __CM_CMSIS_VERSION
 Contains the CMSIS version. More...
 
#define __CORTEX_M
 Contains the core version for a Cortex-M class controller. More...
 
#define __CORTEX_SC
 Contains the core version for a Cortex Secure Core controller. More...
 

Description

The header file cmsis_version.h is included by each core header so that these definitions are available.

Code Example:

#if defined(__CM_CMSIS_VERSION) && \
(__CM_CMSIS_VERSION >= 0x00050001)
#error Yes, we have CMSIS 5.1 or later
#else
#error We need CMSIS 5.1 or later!
#endif

Macro Definition Documentation

#define __CM_CMSIS_VERSION

The CMSIS version is a combination of the __CM_CMSIS_VERSION_MAIN (bits 31..15) and __CM_CMSIS_VERSION_SUB (bits 14..0).

#define __CM_CMSIS_VERSION_MAIN

The CMSIS major version can be used to differentiate between CMSIS major releases.

#define __CM_CMSIS_VERSION_SUB

The CMSIS minor version can be used to query a CMSIS release update level.

#define __CORTEX_M

This define can be used to differentiate between the various available Cortex-M controllers. Possible values are:

  • 0 for a Cortex-M0 or Cortex-M0+
  • 3 for a Cortex-M3
  • 4 for a Cortex-M4
  • 7 for a Cortex-M7
  • 23 for a Cortex-M23
  • 33 for a Cortex-M33

This define is only available for Cortex-M class controllers. Code Example:

#if defined(__CORTEX_M) && (__CORTEX_M == 4)
#error Yes, we have an Cortex-M4 controller.
#else
#error We need a Cortex-M4 controller!
#endif
#define __CORTEX_SC

This define can be used to differentiate between the various available Cortex Secure Core controllers. Possible values are:

  • 000 for a Cortex-SC000
  • 300 for a Cortex-SC300

This define is only available for Cortex Secure Core controllers. Code Example:

#if defined(__CORTEX_SC) && (__CORTEX_SC == 300U)
#error Yes, we have an Cortex SC300 controller.
#else
#error We need a Cortex SC300 controller!
#endif