/** \page using_pg Using CMSIS in Embedded Applications \details To use the CMSIS-Core (Cortex-M) the following files are added to the embedded application: - \ref startup_c_pg (formerly \ref startup_s_pg) with reset handler and exception vectors. - \ref system_c_pg with general device configuration (i.e. for clock and BUS setup). - \ref device_h_pg gives access to processor core and all peripherals. \note The files \ref startup_c_pg (or \ref startup_s_pg) and \ref system_c_pg may require application specific adaptations and therefore should be copied into the application project folder prior configuration. The \ref device_h_pg is included in all source files that need device access and can be stored on a central include folder that is generic for all projects. The \ref startup_c_pg (or \ref startup_s_pg) is executed after reset and calls \ref SystemInit. After the system initialization control is transferred to the C/C++ run-time library which performs initialization and calls the \b main function in the user code. In addition the \ref startup_c_pg (or \ref startup_s_pg) contains all exception and interrupt vectors and implements a default function for every interrupt. It may also contain stack and heap configurations for the user application. The \ref system_c_pg performs the setup for the processor clock. The variable \ref SystemCoreClock indicates the CPU clock speed. \ref system_init_gr describes the minimum feature set. In addition the file may contain functions for the memory BUS setup and clock re-configuration. The \ref device_h_pg is the central include file that the application programmer is using in the C source code. It provides the following features: - \ref peripheral_gr provides a standardized register layout for all peripherals. Optionally functions for device-specific peripherals may be available. - \ref NVIC_gr can be accessed with standardized symbols and functions for the Nested Interrupt Vector Controller (NVIC) are provided. - \ref intrinsic_CPU_gr allow to access special instructions, for example for activating sleep mode or the NOP instruction. - \ref intrinsic_SIMD_gr provide access to the DSP-oriented instructions. - \ref SysTick_gr function to configure and start a periodic timer interrupt. - \ref ITM_Debug_gr are functions that allow printf-style I/O via the CoreSight Debug Unit and ITM communication. CMSIS-Pack provides the \#define CMSIS_header_file in RTE_Components.h which gives you access to this device.h file. \image html "CMSIS_CORE_Files_USER.png" "CMSIS-Core (Cortex-M) User Files" The CMSIS-Core (Cortex-M) system files are device specific. In addition, the deprecated \ref startup_s_pg is also compiler vendor specific. The versions provided by CMSIS are only generic templates. The adopted versions for a concrete device are typically provided by the device vendor through the according device family pack (DFP). For example, the following files are provided by the STM32F10x device family pack:
| File | Description |
|---|---|
| ".\Device\Source\ARM\startup_stm32f10x_cl.s" | \ref startup_s_pg for the STM32F10x Connectivity Line device variants. |
| ".\Device\Source\system_stmf10x.c" | \ref system_c_pg for the STM32F10x device families. |
| ".\Device\Include\stm32f10x.h" | \ref device_h_pg for the STM32F10x device families. |
| ".\Device\Include\system_stm32f10x.h" | \ref system_Device_h_sec for the STM32F10x device families. |
| Folder | Processor | Description |
|---|---|---|
| ".\Device\ARM\ARMCM0" | Cortex-M0 | Contains \b Include and \b Source template files configured for the Cortex-M0 processor.
The device name is ARMCM0 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM0plus" | Cortex-M0+ | Contains \b Include and \b Source template files configured for the Cortex-M0+ processor.
The device name is ARMCM0plus and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM3" | Cortex-M3 | Contains \b Include and \b Source template files configured for the Cortex-M3 processor.
The device name is ARMCM3 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM4" | Cortex-M4 | Contains \b Include and \b Source template files configured for the Cortex-M4 processor.
The device name is ARMCM4 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM7" | Cortex-M7 | Contains \b Include and \b Source template files configured for the Cortex-M7 processor.
The device name is ARMCM7 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM23" | Cortex-M23 | Contains \b Include and \b Source template files configured for the Cortex-M23 processor.
The device name is ARMCM23 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM33" | Cortex-M33 | Contains \b Include and \b Source template files configured for the Cortex-M33 processor.
The device name is ARMCM33 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM35P" | Cortex-M35P | Contains \b Include and \b Source template files configured for the Cortex-M35P processor.
The device name is ARMCM35P and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMCM55" | Cortex-M55 | Contains \b Include and \b Source template files configured for the Cortex-M55 processor.
The device name is ARMCM55 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMSC000" | SecurCore SC000 | Contains \b Include and \b Source template files configured for the SecurCore SC000 processor.
The device name is ARMSC000 and the name of the \ref device_h_pg is |
| ".\Device\ARM\ARMSC300" | SecurCore SC300 | Contains \b Include and \b Source template files configured for the SecurCore SC300 processor.
The device name is ARMSC300 and the name of the \ref device_h_pg is |