⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 landzo

📁 【开源】线性CCD自适应性算法攻略
💻
📖 第 1 页 / 共 5 页
字号:
/**************************************************************************//**
 * @file     core_cm4.h
 * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File
 * @version  V2.10
 * @date     19. July 2011
 *
 * @note
 * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
 *
 * @par
 * ARM Limited (ARM) is supplying this software for use with Cortex-M
 * processor based microcontrollers.  This file can be freely distributed
 * within development tools that are supporting such ARM based processors.
 *
 * @par
 * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 ******************************************************************************/
#if defined ( __ICCARM__ )
#pragma system_include  /* treat file as system include file for MISRA check */
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __CORE_CM4_H_GENERIC
#define __CORE_CM4_H_GENERIC


    /** \mainpage CMSIS Cortex-M4

      This documentation describes the CMSIS Cortex-M Core Peripheral Access Layer.
      It consists of:

         - Cortex-M Core Register Definitions
         - Cortex-M functions
         - Cortex-M instructions
         - Cortex-M SIMD instructions

      The CMSIS Cortex-M4 Core Peripheral Access Layer contains C and assembly functions that ease
      access to the Cortex-M Core
     */

    /** \defgroup CMSIS_MISRA_Exceptions  CMSIS MISRA-C:2004 Compliance Exceptions
      CMSIS violates following MISRA-C2004 Rules:

       - Violates MISRA 2004 Required Rule 8.5, object/function definition in header file.<br>
         Function definitions in header files are used to allow 'inlining'.

       - Violates MISRA 2004 Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
         Unions are used for effective representation of core registers.

       - Violates MISRA 2004 Advisory Rule 19.7, Function-like macro defined.<br>
         Function-like macros are used to allow more efficient code.

     */


    /*******************************************************************************
     *                 CMSIS definitions
     ******************************************************************************/
    /** \defgroup CMSIS_core_definitions CMSIS Core Definitions
      This file defines all structures and symbols for CMSIS core:
       - CMSIS version number
       - Cortex-M core
       - Cortex-M core Revision Number
      @{
     */

    /*  CMSIS CM4 definitions */
#define __CM4_CMSIS_VERSION_MAIN  (0x02)                                                       /*!< [31:16] CMSIS HAL main version */
#define __CM4_CMSIS_VERSION_SUB   (0x10)                                                       /*!< [15:0]  CMSIS HAL sub version  */
#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | __CM4_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number       */

#define __CORTEX_M                (0x04)                                                       /*!< Cortex core                    */


#if   defined ( __CC_ARM )
#define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */
#define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */

#elif defined ( __ICCARM__ )
#define __ASM           __asm                                       /*!< asm keyword for IAR Compiler          */
#define __INLINE        inline                                      /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */

#elif defined ( __GNUC__ )
#define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
#define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */

#elif defined ( __TASKING__ )
#define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */
#define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */

#endif

    /*!< __FPU_USED to be checked prior to making use of FPU specific registers and functions */
#if defined ( __CC_ARM )
#if defined __TARGET_FPU_VFP
#if (__FPU_PRESENT == 1)
#define __FPU_USED       1
#else
#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
#define __FPU_USED       0
#endif
#else
#define __FPU_USED         0
#endif

#elif defined ( __ICCARM__ )
#if defined __ARMVFP__
#if (__FPU_PRESENT == 1)
#define __FPU_USED       1
#else
#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
#define __FPU_USED       0
#endif
#else
#define __FPU_USED         0
#endif

#elif defined ( __GNUC__ )
#if defined (__VFP_FP__) && !defined(__SOFTFP__)
#if (__FPU_PRESENT == 1)
#define __FPU_USED       1
#else
#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
#define __FPU_USED       0
#endif
#else
#define __FPU_USED         0
#endif

#elif defined ( __TASKING__ )
    /* add preprocessor checks to define __FPU_USED */
#define __FPU_USED         0
#endif

#include <stdint.h>                      /*!< standard types definitions                      */
#include <core_cmInstr.h>                /*!< Core Instruction Access                         */
#include <core_cmFunc.h>                 /*!< Core Function Access                            */
#include <core_cm4_simd.h>               /*!< Compiler specific SIMD Intrinsics               */

#endif /* __CORE_CM4_H_GENERIC */

#ifndef __CMSIS_GENERIC

#ifndef __CORE_CM4_H_DEPENDANT
#define __CORE_CM4_H_DEPENDANT

    /* check device defines and use defaults */
#if defined __CHECK_DEVICE_DEFINES
#ifndef __CM4_REV
#define __CM4_REV               0x0000
#warning "__CM4_REV not defined in device header file; using default!"
#endif

#ifndef __FPU_PRESENT
#define __FPU_PRESENT             0
#warning "__FPU_PRESENT not defined in device header file; using default!"
#endif

#ifndef __MPU_PRESENT
#define __MPU_PRESENT             0
#warning "__MPU_PRESENT not defined in device header file; using default!"
#endif

#ifndef __NVIC_PRIO_BITS
#define __NVIC_PRIO_BITS          4
#warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
#endif

#ifndef __Vendor_SysTickConfig
#define __Vendor_SysTickConfig    0
#warning "__Vendor_SysTickConfig not defined in device header file; using default!"
#endif
#endif

    /* IO definitions (access restrictions to peripheral registers) */
#ifdef __cplusplus
#define   __I     volatile             /*!< defines 'read only' permissions                 */
#else
#define   __I     volatile const       /*!< defines 'read only' permissions                 */
#endif
#define     __O     volatile             /*!< defines 'write only' permissions                */
#define     __IO    volatile             /*!< defines 'read / write' permissions              */

    /*@} end of group CMSIS_core_definitions */



    /*******************************************************************************
     *                 Register Abstraction
     ******************************************************************************/
    /** \defgroup CMSIS_core_register CMSIS Core Register
      Core Register contain:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -