CMSIS-Core (Cortex-M): Version Control

| CMSIS-Core (Cortex-M) Version 5.4.0 CMSIS-Core support for Cortex-M processor-based devices

- Main Page
- Usage and Description
- Reference

All Data Structures Files Functions Variables Enumerations Enumerator Groups Pages
Macros
Version Control

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

## 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

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

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

Deprecated

The following macros are deprecated:

- __XXX_CMSIS_VERSION_MAIN which is replaced by __CM_CMSIS_VERSION_MAIN.
- __XXX_CMSIS_VERSION_SUB which is replaced by __CM_CMSIS_VERSION_SUB.
- __XXX_CMSIS_VERSION which is replaced by __CM_CMSIS_VERSION.

## Macro Definition Documentation

#define __CM_CMSIS_VERSION

Contains the 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

Contains the CMSIS major version.

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

#define __CM_CMSIS_VERSION_SUB

Contains the CMSIS minor version.

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

#define __CORTEX_M

Contains the core version for a Cortex-M class controller.

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+
- 1 for a Cortex-M1
- 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
- 35 for a Cortex-M35P
- 55 for a Cortex-M55
- 2 for a Armv8-M Base Line device
- 80 for a Armv8-M Main Line device
- 81 for a Armv8.1-M Main Line device

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

Contains the core version for a Cortex Secure Core controller.

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