1*10465441SEvalZero /* 2*10465441SEvalZero * File : core_ck802.h 3*10465441SEvalZero * This file is part of RT-Thread RTOS 4*10465441SEvalZero * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team 5*10465441SEvalZero * 6*10465441SEvalZero * This program is free software; you can redistribute it and/or modify 7*10465441SEvalZero * it under the terms of the GNU General Public License as published by 8*10465441SEvalZero * the Free Software Foundation; either version 2 of the License, or 9*10465441SEvalZero * (at your option) any later version. 10*10465441SEvalZero * 11*10465441SEvalZero * This program is distributed in the hope that it will be useful, 12*10465441SEvalZero * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*10465441SEvalZero * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*10465441SEvalZero * GNU General Public License for more details. 15*10465441SEvalZero * 16*10465441SEvalZero * You should have received a copy of the GNU General Public License along 17*10465441SEvalZero * with this program; if not, write to the Free Software Foundation, Inc., 18*10465441SEvalZero * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19*10465441SEvalZero * 20*10465441SEvalZero * Change Logs: 21*10465441SEvalZero * Date Author Notes 22*10465441SEvalZero * 2017-01-01 Urey first version 23*10465441SEvalZero */ 24*10465441SEvalZero 25*10465441SEvalZero #ifndef __CORE_CK802_H_GENERIC 26*10465441SEvalZero #define __CORE_CK802_H_GENERIC 27*10465441SEvalZero 28*10465441SEvalZero #include <stdint.h> 29*10465441SEvalZero 30*10465441SEvalZero #ifdef __cplusplus 31*10465441SEvalZero extern "C" { 32*10465441SEvalZero #endif 33*10465441SEvalZero 34*10465441SEvalZero /******************************************************************************* 35*10465441SEvalZero * CSI definitions 36*10465441SEvalZero ******************************************************************************/ 37*10465441SEvalZero /** 38*10465441SEvalZero \ingroup Ck802 39*10465441SEvalZero @{ 40*10465441SEvalZero */ 41*10465441SEvalZero 42*10465441SEvalZero /* CSI CK802 definitions */ 43*10465441SEvalZero #define __CK802_CSI_VERSION_MAIN (0x04U) /*!< [31:16] CSI HAL main version */ 44*10465441SEvalZero #define __CK802_CSI_VERSION_SUB (0x1EU) /*!< [15:0] CSI HAL sub version */ 45*10465441SEvalZero #define __CK802_CSI_VERSION ((__CK802_CSI_VERSION_MAIN << 16U) | \ 46*10465441SEvalZero __CK802_CSI_VERSION_SUB ) /*!< CSI HAL version number */ 47*10465441SEvalZero 48*10465441SEvalZero #define __CK80X (0x02U) /*!< CK80X Core */ 49*10465441SEvalZero 50*10465441SEvalZero /** __FPU_USED indicates whether an FPU is used or not. 51*10465441SEvalZero This core does not support an FPU at all 52*10465441SEvalZero */ 53*10465441SEvalZero #define __FPU_USED 0U 54*10465441SEvalZero 55*10465441SEvalZero #if defined ( __GNUC__ ) 56*10465441SEvalZero #if defined (__VFP_FP__) && !defined(__SOFTFP__) 57*10465441SEvalZero #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" 58*10465441SEvalZero #endif 59*10465441SEvalZero #endif 60*10465441SEvalZero 61*10465441SEvalZero #include "csi_gcc.h" 62*10465441SEvalZero 63*10465441SEvalZero #ifdef __cplusplus 64*10465441SEvalZero } 65*10465441SEvalZero #endif 66*10465441SEvalZero 67*10465441SEvalZero #endif /* __CORE_CK802_H_GENERIC */ 68*10465441SEvalZero 69*10465441SEvalZero #ifndef __CSI_GENERIC 70*10465441SEvalZero 71*10465441SEvalZero #ifndef __CORE_CK802_H_DEPENDANT 72*10465441SEvalZero #define __CORE_CK802_H_DEPENDANT 73*10465441SEvalZero 74*10465441SEvalZero #ifdef __cplusplus 75*10465441SEvalZero extern "C" { 76*10465441SEvalZero #endif 77*10465441SEvalZero 78*10465441SEvalZero /* check device defines and use defaults */ 79*10465441SEvalZero //#if defined __CHECK_DEVICE_DEFINES 80*10465441SEvalZero #ifndef __CK802_REV 81*10465441SEvalZero #define __CK802_REV 0x0000U 82*10465441SEvalZero //#warning "__CK802_REV not defined in device header file; using default!" 83*10465441SEvalZero #endif 84*10465441SEvalZero 85*10465441SEvalZero #ifndef __NVIC_PRIO_BITS 86*10465441SEvalZero #define __NVIC_PRIO_BITS 2U 87*10465441SEvalZero //#warning "__NVIC_PRIO_BITS not defined in device header file; using default!" 88*10465441SEvalZero #endif 89*10465441SEvalZero 90*10465441SEvalZero #ifndef __Vendor_SysTickConfig 91*10465441SEvalZero #define __Vendor_SysTickConfig 0U 92*10465441SEvalZero //#warning "__Vendor_SysTickConfig not defined in device header file; using default!" 93*10465441SEvalZero #endif 94*10465441SEvalZero 95*10465441SEvalZero #ifndef __GSR_GCR_PRESENT 96*10465441SEvalZero #define __GSR_GCR_PRESENT 0U 97*10465441SEvalZero //#warning "__GSR_GCR_PRESENT not defined in device header file; using default!" 98*10465441SEvalZero #endif 99*10465441SEvalZero 100*10465441SEvalZero #ifndef __MGU_PRESENT 101*10465441SEvalZero #define __MGU_PRESENT 0U 102*10465441SEvalZero //#warning "__MGU_PRESENT not defined in device header file; using default!" 103*10465441SEvalZero #endif 104*10465441SEvalZero //#endif 105*10465441SEvalZero 106*10465441SEvalZero /* IO definitions (access restrictions to peripheral registers) */ 107*10465441SEvalZero /** 108*10465441SEvalZero \defgroup CSI_glob_defs CSI Global Defines 109*10465441SEvalZero 110*10465441SEvalZero <strong>IO Type Qualifiers</strong> are used 111*10465441SEvalZero \li to specify the access to peripheral variables. 112*10465441SEvalZero \li for automatic generation of peripheral register debug information. 113*10465441SEvalZero */ 114*10465441SEvalZero #ifdef __cplusplus 115*10465441SEvalZero #define __I volatile /*!< Defines 'read only' permissions */ 116*10465441SEvalZero #else 117*10465441SEvalZero #define __I volatile const /*!< Defines 'read only' permissions */ 118*10465441SEvalZero #endif 119*10465441SEvalZero #define __O volatile /*!< Defines 'write only' permissions */ 120*10465441SEvalZero #define __IO volatile /*!< Defines 'read / write' permissions */ 121*10465441SEvalZero 122*10465441SEvalZero /* following defines should be used for structure members */ 123*10465441SEvalZero #define __IM volatile const /*! Defines 'read only' structure member permissions */ 124*10465441SEvalZero #define __OM volatile /*! Defines 'write only' structure member permissions */ 125*10465441SEvalZero #define __IOM volatile /*! Defines 'read / write' structure member permissions */ 126*10465441SEvalZero 127*10465441SEvalZero /*@} end of group CK802 */ 128*10465441SEvalZero 129*10465441SEvalZero /******************************************************************************* 130*10465441SEvalZero * Register Abstraction 131*10465441SEvalZero Core Register contain: 132*10465441SEvalZero - Core Register 133*10465441SEvalZero - Core NVIC Register 134*10465441SEvalZero - Core SCB Register 135*10465441SEvalZero - Core SysTick Register 136*10465441SEvalZero ******************************************************************************/ 137*10465441SEvalZero /** 138*10465441SEvalZero \defgroup CSI_core_register Defines and Type Definitions 139*10465441SEvalZero \brief Type definitions and defines for CK80X processor based devices. 140*10465441SEvalZero */ 141*10465441SEvalZero 142*10465441SEvalZero /** 143*10465441SEvalZero \ingroup CSI_core_register 144*10465441SEvalZero \defgroup CSI_CORE Status and Control Registers 145*10465441SEvalZero \brief Core Register type definitions. 146*10465441SEvalZero @{ 147*10465441SEvalZero */ 148*10465441SEvalZero 149*10465441SEvalZero /** 150*10465441SEvalZero \brief ���ʴ�����״̬�Ĵ���(PSR)�������嶨��. 151*10465441SEvalZero */ 152*10465441SEvalZero typedef union 153*10465441SEvalZero { 154*10465441SEvalZero struct 155*10465441SEvalZero { 156*10465441SEvalZero uint32_t C: 1; /*!< bit: 0 �����룯��λλ */ 157*10465441SEvalZero uint32_t _reserved0: 5; /*!< bit: 2.. 5 ���� */ 158*10465441SEvalZero uint32_t IE: 1; /*!< bit: 6 �ж���Ч����λ */ 159*10465441SEvalZero uint32_t IC: 1; /*!< bit: 7 �жϿ���λ */ 160*10465441SEvalZero uint32_t EE: 1; /*!< bit: 8 �쳣��Ч����λ */ 161*10465441SEvalZero uint32_t MM: 1; /*!< bit: 9 �������쳣�ڸ�λ */ 162*10465441SEvalZero uint32_t _reserved1: 6; /*!< bit: 10..15 ���� */ 163*10465441SEvalZero uint32_t VEC: 8; /*!< bit: 16..23 �쳣�¼�����ֵ */ 164*10465441SEvalZero uint32_t _reserved2: 7; /*!< bit: 24..30 ���� */ 165*10465441SEvalZero uint32_t S: 1; /*!< bit: 31 �����û�ģʽ����λ */ 166*10465441SEvalZero } b; /*!< Structure ������λ���� */ 167*10465441SEvalZero uint32_t w; /*!< Type �����Ĵ������� */ 168*10465441SEvalZero } PSR_Type; 169*10465441SEvalZero 170*10465441SEvalZero /* PSR Register Definitions */ 171*10465441SEvalZero #define PSR_S_Pos 31U /*!< PSR: S Position */ 172*10465441SEvalZero #define PSR_S_Msk (1UL << PSR_S_Pos) /*!< PSR: S Mask */ 173*10465441SEvalZero 174*10465441SEvalZero #define PSR_VEC_Pos 16U /*!< PSR: VEC Position */ 175*10465441SEvalZero #define PSR_VEC_Msk (0x7FUL << PSR_VEC_Pos) /*!< PSR: VEC Mask */ 176*10465441SEvalZero 177*10465441SEvalZero #define PSR_MM_Pos 9U /*!< PSR: MM Position */ 178*10465441SEvalZero #define PSR_MM_Msk (1UL << PSR_MM_Pos) /*!< PSR: MM Mask */ 179*10465441SEvalZero 180*10465441SEvalZero #define PSR_EE_Pos 8U /*!< PSR: EE Position */ 181*10465441SEvalZero #define PSR_EE_Msk (1UL << PSR_EE_Pos) /*!< PSR: EE Mask */ 182*10465441SEvalZero 183*10465441SEvalZero #define PSR_IC_Pos 7U /*!< PSR: IC Position */ 184*10465441SEvalZero #define PSR_IC_Msk (1UL << PSR_IC_Pos) /*!< PSR: IC Mask */ 185*10465441SEvalZero 186*10465441SEvalZero #define PSR_IE_Pos 6U /*!< PSR: IE Position */ 187*10465441SEvalZero #define PSR_IE_Msk (1UL << PSR_IE_Pos) /*!< PSR: IE Mask */ 188*10465441SEvalZero 189*10465441SEvalZero #define PSR_C_Pos 0U /*!< PSR: C Position */ 190*10465441SEvalZero #define PSR_C_Msk (1UL << PSR_C_Pos) /*!< PSR: C Mask */ 191*10465441SEvalZero 192*10465441SEvalZero /** 193*10465441SEvalZero \brief ���ʸ��ٻ������üĴ���(CCR, CR<18, 0>)�������嶨��. 194*10465441SEvalZero */ 195*10465441SEvalZero typedef union 196*10465441SEvalZero { 197*10465441SEvalZero struct 198*10465441SEvalZero { 199*10465441SEvalZero uint32_t MP: 1; /*!< bit: 0 �ڴ汣������λ */ 200*10465441SEvalZero uint32_t _reserved0: 6; /*!< bit: 1.. 6 ���� */ 201*10465441SEvalZero uint32_t BE: 1; /*!< bit: 7 Endianģʽ */ 202*10465441SEvalZero uint32_t SCK: 3; /*!< bit: 8..10 ϵͳ�ʹ�������ʱ�ӱ� */ 203*10465441SEvalZero uint32_t _reserved1: 2; /*!< bit: 11..12 ���� */ 204*10465441SEvalZero uint32_t BE_V2: 1; /*!< bit: 13 V2�汾��С�� */ 205*10465441SEvalZero uint32_t _reserved2: 18; /*!< bit: 14..31 ���� */ 206*10465441SEvalZero } b; /*!< Structure ������λ���� */ 207*10465441SEvalZero uint32_t w; /*!< Type �����Ĵ������� */ 208*10465441SEvalZero } CCR_Type; 209*10465441SEvalZero 210*10465441SEvalZero /* CCR Register Definitions */ 211*10465441SEvalZero #define CCR_BE_V2_Pos 13U /*!< CCR: BE_V2 Position */ 212*10465441SEvalZero #define CCR_BE_V2_Msk (0x1UL << CCR_ISR_Pos) /*!< CCR: BE_V2 Mask */ 213*10465441SEvalZero 214*10465441SEvalZero #define CCR_SCK_Pos 8U /*!< CCR: SCK Position */ 215*10465441SEvalZero #define CCR_SCK_Msk (0x3UL << CCR_SCK_Pos) /*!< CCR: SCK Mask */ 216*10465441SEvalZero 217*10465441SEvalZero #define CCR_BE_Pos 7U /*!< CCR: BE Position */ 218*10465441SEvalZero #define CCR_BE_Msk (0x1UL << CCR_BE_Pos) /*!< CCR: BE Mask */ 219*10465441SEvalZero 220*10465441SEvalZero #define CCR_MP_Pos 0U /*!< CCR: MP Position */ 221*10465441SEvalZero #define CCR_MP_Msk (0x1UL << CCR_MP_Pos) /*!< CCR: MP Mask */ 222*10465441SEvalZero 223*10465441SEvalZero /** 224*10465441SEvalZero \brief ���ʿɸ��ͷ���Ȩ�����üĴ���(CAPR, CR<19,0>)�������嶨��.. 225*10465441SEvalZero */ 226*10465441SEvalZero typedef union 227*10465441SEvalZero { 228*10465441SEvalZero struct 229*10465441SEvalZero { 230*10465441SEvalZero uint32_t X0: 1; /*!< bit: 0 ����ִ����������λ */ 231*10465441SEvalZero uint32_t X1: 1; /*!< bit: 1 ����ִ����������λ */ 232*10465441SEvalZero uint32_t X2: 1; /*!< bit: 2 ����ִ����������λ */ 233*10465441SEvalZero uint32_t X3: 1; /*!< bit: 3 ����ִ����������λ */ 234*10465441SEvalZero uint32_t X4: 1; /*!< bit: 4 ����ִ����������λ */ 235*10465441SEvalZero uint32_t X5: 1; /*!< bit: 5 ����ִ����������λ */ 236*10465441SEvalZero uint32_t X6: 1; /*!< bit: 6 ����ִ����������λ */ 237*10465441SEvalZero uint32_t X7: 1; /*!< bit: 7 ����ִ����������λ */ 238*10465441SEvalZero uint32_t AP0: 2; /*!< bit: 8.. 9 ����Ȩ������λ */ 239*10465441SEvalZero uint32_t AP1: 2; /*!< bit: 10..11 ����Ȩ������λ */ 240*10465441SEvalZero uint32_t AP2: 2; /*!< bit: 12..13 ����Ȩ������λ */ 241*10465441SEvalZero uint32_t AP3: 2; /*!< bit: 14..15 ����Ȩ������λ */ 242*10465441SEvalZero uint32_t AP4: 2; /*!< bit: 16..17 ����Ȩ������λ */ 243*10465441SEvalZero uint32_t AP5: 2; /*!< bit: 18..19 ����Ȩ������λ */ 244*10465441SEvalZero uint32_t AP6: 2; /*!< bit: 20..21 ����Ȩ������λ */ 245*10465441SEvalZero uint32_t AP7: 2; /*!< bit: 22..23 ����Ȩ������λ */ 246*10465441SEvalZero uint32_t S0: 1; /*!< bit: 24 ��ȫ��������λ */ 247*10465441SEvalZero uint32_t S1: 1; /*!< bit: 25 ��ȫ��������λ */ 248*10465441SEvalZero uint32_t S2: 1; /*!< bit: 26 ��ȫ��������λ */ 249*10465441SEvalZero uint32_t S3: 1; /*!< bit: 27 ��ȫ��������λ */ 250*10465441SEvalZero uint32_t S4: 1; /*!< bit: 28 ��ȫ��������λ */ 251*10465441SEvalZero uint32_t S5: 1; /*!< bit: 29 ��ȫ��������λ */ 252*10465441SEvalZero uint32_t S6: 1; /*!< bit: 30 ��ȫ��������λ */ 253*10465441SEvalZero uint32_t S7: 1; /*!< bit: 31 ��ȫ��������λ */ 254*10465441SEvalZero } b; /*!< Structure ������λ���� */ 255*10465441SEvalZero uint32_t w; /*!< Type �����Ĵ������� */ 256*10465441SEvalZero } CAPR_Type; 257*10465441SEvalZero 258*10465441SEvalZero /* CAPR Register Definitions */ 259*10465441SEvalZero #define CAPR_S7_Pos 31U /*!< CAPR: S7 Position */ 260*10465441SEvalZero #define CAPR_S7_Msk (1UL << CAPR_S7_Pos) /*!< CAPR: S7 Mask */ 261*10465441SEvalZero 262*10465441SEvalZero #define CAPR_S6_Pos 30U /*!< CAPR: S6 Position */ 263*10465441SEvalZero #define CAPR_S6_Msk (1UL << CAPR_S6_Pos) /*!< CAPR: S6 Mask */ 264*10465441SEvalZero 265*10465441SEvalZero #define CAPR_S5_Pos 29U /*!< CAPR: S5 Position */ 266*10465441SEvalZero #define CAPR_S5_Msk (1UL << CAPR_S5_Pos) /*!< CAPR: S5 Mask */ 267*10465441SEvalZero 268*10465441SEvalZero #define CAPR_S4_Pos 28U /*!< CAPR: S4 Position */ 269*10465441SEvalZero #define CAPR_S4_Msk (1UL << CAPR_S4_Pos) /*!< CAPR: S4 Mask */ 270*10465441SEvalZero 271*10465441SEvalZero #define CAPR_S3_Pos 27U /*!< CAPR: S3 Position */ 272*10465441SEvalZero #define CAPR_S3_Msk (1UL << CAPR_S3_Pos) /*!< CAPR: S3 Mask */ 273*10465441SEvalZero 274*10465441SEvalZero #define CAPR_S2_Pos 26U /*!< CAPR: S2 Position */ 275*10465441SEvalZero #define CAPR_S2_Msk (1UL << CAPR_S2_Pos) /*!< CAPR: S2 Mask */ 276*10465441SEvalZero 277*10465441SEvalZero #define CAPR_S1_Pos 25U /*!< CAPR: S1 Position */ 278*10465441SEvalZero #define CAPR_S1_Msk (1UL << CAPR_S1_Pos) /*!< CAPR: S1 Mask */ 279*10465441SEvalZero 280*10465441SEvalZero #define CAPR_S0_Pos 24U /*!< CAPR: S0 Position */ 281*10465441SEvalZero #define CAPR_S0_Msk (1UL << CAPR_S0_Pos) /*!< CAPR: S0 Mask */ 282*10465441SEvalZero 283*10465441SEvalZero #define CAPR_AP7_Pos 22U /*!< CAPR: AP7 Position */ 284*10465441SEvalZero #define CAPR_AP7_Msk (0x3UL << CAPR_AP7_Pos) /*!< CAPR: AP7 Mask */ 285*10465441SEvalZero 286*10465441SEvalZero #define CAPR_AP6_Pos 20U /*!< CAPR: AP6 Position */ 287*10465441SEvalZero #define CAPR_AP6_Msk (0x3UL << CAPR_AP6_Pos) /*!< CAPR: AP6 Mask */ 288*10465441SEvalZero 289*10465441SEvalZero #define CAPR_AP5_Pos 18U /*!< CAPR: AP5 Position */ 290*10465441SEvalZero #define CAPR_AP5_Msk (0x3UL << CAPR_AP5_Pos) /*!< CAPR: AP5 Mask */ 291*10465441SEvalZero 292*10465441SEvalZero #define CAPR_AP4_Pos 16U /*!< CAPR: AP4 Position */ 293*10465441SEvalZero #define CAPR_AP4_Msk (0x3UL << CAPR_AP4_Pos) /*!< CAPR: AP4 Mask */ 294*10465441SEvalZero 295*10465441SEvalZero #define CAPR_AP3_Pos 14U /*!< CAPR: AP3 Position */ 296*10465441SEvalZero #define CAPR_AP3_Msk (0x3UL << CAPR_AP3_Pos) /*!< CAPR: AP3 Mask */ 297*10465441SEvalZero 298*10465441SEvalZero #define CAPR_AP2_Pos 12U /*!< CAPR: AP2 Position */ 299*10465441SEvalZero #define CAPR_AP2_Msk (0x3UL << CAPR_AP2_Pos) /*!< CAPR: AP2 Mask */ 300*10465441SEvalZero 301*10465441SEvalZero #define CAPR_AP1_Pos 10U /*!< CAPR: AP1 Position */ 302*10465441SEvalZero #define CAPR_AP1_Msk (0x3UL << CAPR_AP1_Pos) /*!< CAPR: AP1 Mask */ 303*10465441SEvalZero 304*10465441SEvalZero #define CAPR_AP0_Pos 8U /*!< CAPR: AP0 Position */ 305*10465441SEvalZero #define CAPR_AP0_Msk (0x3UL << CAPR_AP0_Pos) /*!< CAPR: AP0 Mask */ 306*10465441SEvalZero 307*10465441SEvalZero #define CAPR_X7_Pos 7U /*!< CAPR: X7 Position */ 308*10465441SEvalZero #define CAPR_X7_Msk (0x1UL << CAPR_X7_Pos) /*!< CAPR: X7 Mask */ 309*10465441SEvalZero 310*10465441SEvalZero #define CAPR_X6_Pos 6U /*!< CAPR: X6 Position */ 311*10465441SEvalZero #define CAPR_X6_Msk (0x1UL << CAPR_X6_Pos) /*!< CAPR: X6 Mask */ 312*10465441SEvalZero 313*10465441SEvalZero #define CAPR_X5_Pos 5U /*!< CAPR: X5 Position */ 314*10465441SEvalZero #define CAPR_X5_Msk (0x1UL << CAPR_X5_Pos) /*!< CAPR: X5 Mask */ 315*10465441SEvalZero 316*10465441SEvalZero #define CAPR_X4_Pos 4U /*!< CAPR: X4 Position */ 317*10465441SEvalZero #define CAPR_X4_Msk (0x1UL << CAPR_X4_Pos) /*!< CAPR: X4 Mask */ 318*10465441SEvalZero 319*10465441SEvalZero #define CAPR_X3_Pos 3U /*!< CAPR: X3 Position */ 320*10465441SEvalZero #define CAPR_X3_Msk (0x1UL << CAPR_X3_Pos) /*!< CAPR: X3 Mask */ 321*10465441SEvalZero 322*10465441SEvalZero #define CAPR_X2_Pos 2U /*!< CAPR: X2 Position */ 323*10465441SEvalZero #define CAPR_X2_Msk (0x1UL << CAPR_X2_Pos) /*!< CAPR: X2 Mask */ 324*10465441SEvalZero 325*10465441SEvalZero #define CAPR_X1_Pos 1U /*!< CAPR: X1 Position */ 326*10465441SEvalZero #define CAPR_X1_Msk (0x1UL << CAPR_X1_Pos) /*!< CAPR: X1 Mask */ 327*10465441SEvalZero 328*10465441SEvalZero #define CAPR_X0_Pos 0U /*!< CAPR: X0 Position */ 329*10465441SEvalZero #define CAPR_X0_Msk (0x1UL << CAPR_X0_Pos) /*!< CAPR: X0 Mask */ 330*10465441SEvalZero 331*10465441SEvalZero /** 332*10465441SEvalZero \brief ���ʱ��������ƼĴ���(PACR, CR<20,0>)�������嶨��. 333*10465441SEvalZero */ 334*10465441SEvalZero typedef union 335*10465441SEvalZero { 336*10465441SEvalZero struct 337*10465441SEvalZero { 338*10465441SEvalZero uint32_t E: 1; /*!< bit: 0 ��������Ч���� */ 339*10465441SEvalZero uint32_t Size: 5; /*!< bit: 1.. 5 ��������С */ 340*10465441SEvalZero uint32_t _reserved0: 4; /*!< bit: 6.. 9 ���� */ 341*10465441SEvalZero uint32_t base_addr: 22; /*!< bit: 10..31 ��������ַ�ĸ�λ */ 342*10465441SEvalZero } b; /*!< Structure ������λ���� */ 343*10465441SEvalZero uint32_t w; /*!< Type �����Ĵ������� */ 344*10465441SEvalZero } PACR_Type; 345*10465441SEvalZero 346*10465441SEvalZero /* PACR Register Definitions */ 347*10465441SEvalZero #define PACR_BASE_ADDR_Pos 10U /*!< PACR: base_addr Position */ 348*10465441SEvalZero #define PACK_BASE_ADDR_Msk (0x3FFFFFUL << PACR_BASE_ADDR_Pos) /*!< PACR: base_addr Mask */ 349*10465441SEvalZero 350*10465441SEvalZero #define PACR_SIZE_Pos 1U /*!< PACR: Size Position */ 351*10465441SEvalZero #define PACK_SIZE_Msk (0x1FUL << PACR_SIZE_Pos) /*!< PACR: Size Mask */ 352*10465441SEvalZero 353*10465441SEvalZero #define PACR_E_Pos 0U /*!< PACR: E Position */ 354*10465441SEvalZero #define PACK_E_Msk (0x1UL << PACR_E_Pos) /*!< PACR: E Mask */ 355*10465441SEvalZero 356*10465441SEvalZero /** 357*10465441SEvalZero \brief ���ʱ�����ѡ��Ĵ���(PRSR,CR<21,0>)�������嶨��. 358*10465441SEvalZero */ 359*10465441SEvalZero typedef union 360*10465441SEvalZero { 361*10465441SEvalZero struct 362*10465441SEvalZero { 363*10465441SEvalZero uint32_t RID: 3; /*!< bit: 0.. 2 ����������ֵ */ 364*10465441SEvalZero uint32_t _reserved0: 30; /*!< bit: 3..31 ���� */ 365*10465441SEvalZero } b; /*!< Structure ������λ���� */ 366*10465441SEvalZero uint32_t w; /*!< Type �����Ĵ������� */ 367*10465441SEvalZero } PRSR_Type; 368*10465441SEvalZero 369*10465441SEvalZero /* PRSR Register Definitions */ 370*10465441SEvalZero #define PRSR_RID_Pos 0U /*!< PRSR: RID Position */ 371*10465441SEvalZero #define PRSR_RID_Msk (0x7UL << PRSR_RID_Pos) /*!< PRSR: RID Mask */ 372*10465441SEvalZero 373*10465441SEvalZero /*@} end of group CSI_CORE */ 374*10465441SEvalZero 375*10465441SEvalZero 376*10465441SEvalZero /** 377*10465441SEvalZero \ingroup CSI_core_register 378*10465441SEvalZero \defgroup CSI_NVIC Vectored Interrupt Controller (NVIC) 379*10465441SEvalZero \brief Type definitions for the NVIC Registers 380*10465441SEvalZero @{ 381*10465441SEvalZero */ 382*10465441SEvalZero 383*10465441SEvalZero /** 384*10465441SEvalZero \brief ����ʸ���жϿ������Ľṹ��. 385*10465441SEvalZero */ 386*10465441SEvalZero typedef struct 387*10465441SEvalZero { 388*10465441SEvalZero __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) �ж�ʹ�����üĴ��� */ 389*10465441SEvalZero uint32_t RESERVED0[15U]; 390*10465441SEvalZero __IOM uint32_t IWER[1U]; /*!< Offset: 0x040 (R/W) �жϵ��Ļ������üĴ��� */ 391*10465441SEvalZero uint32_t RESERVED1[15U]; 392*10465441SEvalZero __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) �ж�ʹ������Ĵ��� */ 393*10465441SEvalZero uint32_t RESERVED2[15U]; 394*10465441SEvalZero __IOM uint32_t IWDR[1U]; /*!< Offset: 0x0c0 (R/W) �жϵ��Ļ�������Ĵ��� */ 395*10465441SEvalZero uint32_t RESERVED3[15U]; 396*10465441SEvalZero __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) �жϵȴ����üĴ��� */ 397*10465441SEvalZero uint32_t RESERVED4[15U]; 398*10465441SEvalZero __IOM uint32_t ISSR[1U]; /*!< Offset: 0x140 (R/W) ��ȫ�ж�ʹ�����üĴ��� */ 399*10465441SEvalZero uint32_t RESERVED5[15U]; 400*10465441SEvalZero __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) �жϵȴ�����Ĵ��� */ 401*10465441SEvalZero uint32_t RESERVED6[31U]; 402*10465441SEvalZero __IOM uint32_t IABR[1U]; /*!< Offset: 0x200 (R/W) �ж���Ӧ״̬�Ĵ��� */ 403*10465441SEvalZero uint32_t RESERVED7[63U]; 404*10465441SEvalZero __IOM uint32_t IPR[8U]; /*!< Offset: 0x300 (R/W) �ж����ȼ����üĴ��� */ 405*10465441SEvalZero uint32_t RESERVED8[504U]; 406*10465441SEvalZero __IM uint32_t ISR; /*!< Offset: 0xB00 (R/ ) �ж�״̬�Ĵ��� */ 407*10465441SEvalZero __IOM uint32_t IPTR; /*!< Offset: 0xB04 (R/W) �ж����ȼ���ֵ�Ĵ��� */ 408*10465441SEvalZero } NVIC_Type; 409*10465441SEvalZero 410*10465441SEvalZero /*@} end of group CSI_NVIC */ 411*10465441SEvalZero 412*10465441SEvalZero /** 413*10465441SEvalZero \ingroup CSI_core_register 414*10465441SEvalZero \defgroup CSI_SysTick System Tick Timer (CORET) 415*10465441SEvalZero \brief Type definitions for the System Timer Registers. 416*10465441SEvalZero @{ 417*10465441SEvalZero */ 418*10465441SEvalZero 419*10465441SEvalZero /** 420*10465441SEvalZero \brief ����ϵͳ��ʱ�������ݽṹ. 421*10465441SEvalZero */ 422*10465441SEvalZero typedef struct 423*10465441SEvalZero { 424*10465441SEvalZero __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) ����״̬�Ĵ��� */ 425*10465441SEvalZero __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) ����ֵ�Ĵ��� */ 426*10465441SEvalZero __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) ��ǰֵ�Ĵ��� */ 427*10465441SEvalZero __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) У�Ĵ��� */ 428*10465441SEvalZero } CORET_Type; 429*10465441SEvalZero 430*10465441SEvalZero /* CORET Control / Status Register Definitions */ 431*10465441SEvalZero #define CORET_CTRL_COUNTFLAG_Pos 16U /*!< CORET CTRL: COUNTFLAG Position */ 432*10465441SEvalZero #define CORET_CTRL_COUNTFLAG_Msk (1UL << CORET_CTRL_COUNTFLAG_Pos) /*!< CORET CTRL: COUNTFLAG Mask */ 433*10465441SEvalZero 434*10465441SEvalZero #define CORET_CTRL_CLKSOURCE_Pos 2U /*!< CORET CTRL: CLKSOURCE Position */ 435*10465441SEvalZero #define CORET_CTRL_CLKSOURCE_Msk (1UL << CORET_CTRL_CLKSOURCE_Pos) /*!< CORET CTRL: CLKSOURCE Mask */ 436*10465441SEvalZero 437*10465441SEvalZero #define CORET_CTRL_TICKINT_Pos 1U /*!< CORET CTRL: TICKINT Position */ 438*10465441SEvalZero #define CORET_CTRL_TICKINT_Msk (1UL << CORET_CTRL_TICKINT_Pos) /*!< CORET CTRL: TICKINT Mask */ 439*10465441SEvalZero 440*10465441SEvalZero #define CORET_CTRL_ENABLE_Pos 0U /*!< CORET CTRL: ENABLE Position */ 441*10465441SEvalZero #define CORET_CTRL_ENABLE_Msk (1UL /*<< CORET_CTRL_ENABLE_Pos*/) /*!< CORET CTRL: ENABLE Mask */ 442*10465441SEvalZero 443*10465441SEvalZero /* CORET Reload Register Definitions */ 444*10465441SEvalZero #define CORET_LOAD_RELOAD_Pos 0U /*!< CORET LOAD: RELOAD Position */ 445*10465441SEvalZero #define CORET_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< CORET_LOAD_RELOAD_Pos*/) /*!< CORET LOAD: RELOAD Mask */ 446*10465441SEvalZero 447*10465441SEvalZero /* CORET Current Register Definitions */ 448*10465441SEvalZero #define CORET_VAL_CURRENT_Pos 0U /*!< CORET VAL: CURRENT Position */ 449*10465441SEvalZero #define CORET_VAL_CURRENT_Msk (0xFFFFFFUL /*<< CORET_VAL_CURRENT_Pos*/) /*!< CORET VAL: CURRENT Mask */ 450*10465441SEvalZero 451*10465441SEvalZero /* CORET Calibration Register Definitions */ 452*10465441SEvalZero #define CORET_CALIB_NOREF_Pos 31U /*!< CORET CALIB: NOREF Position */ 453*10465441SEvalZero #define CORET_CALIB_NOREF_Msk (1UL << CORET_CALIB_NOREF_Pos) /*!< CORET CALIB: NOREF Mask */ 454*10465441SEvalZero 455*10465441SEvalZero #define CORET_CALIB_SKEW_Pos 30U /*!< CORET CALIB: SKEW Position */ 456*10465441SEvalZero #define CORET_CALIB_SKEW_Msk (1UL << CORET_CALIB_SKEW_Pos) /*!< CORET CALIB: SKEW Mask */ 457*10465441SEvalZero 458*10465441SEvalZero #define CORET_CALIB_TENMS_Pos 0U /*!< CORET CALIB: TENMS Position */ 459*10465441SEvalZero #define CORET_CALIB_TENMS_Msk (0xFFFFFFUL /*<< CORET_CALIB_TENMS_Pos*/) /*!< CORET CALIB: TENMS Mask */ 460*10465441SEvalZero 461*10465441SEvalZero /*@} end of group CSI_SysTick */ 462*10465441SEvalZero 463*10465441SEvalZero /** 464*10465441SEvalZero \ingroup CSI_core_register 465*10465441SEvalZero \defgroup CSI_DCC 466*10465441SEvalZero \brief Type definitions for the DCC. 467*10465441SEvalZero @{ 468*10465441SEvalZero */ 469*10465441SEvalZero 470*10465441SEvalZero /** 471*10465441SEvalZero \brief ����DCC�����ݽṹ. 472*10465441SEvalZero */ 473*10465441SEvalZero typedef struct 474*10465441SEvalZero { 475*10465441SEvalZero uint32_t RESERVED0[13U]; 476*10465441SEvalZero __IOM uint32_t HCR; /*!< Offset: 0x034 (R/W) */ 477*10465441SEvalZero __IM uint32_t EHSR; /*!< Offset: 0x03C (R/ ) */ 478*10465441SEvalZero uint32_t RESERVED1[6U]; 479*10465441SEvalZero union 480*10465441SEvalZero { 481*10465441SEvalZero __IM uint32_t DERJW; /*!< Offset: 0x058 (R/ ) ���ݽ����Ĵ��� CPU��*/ 482*10465441SEvalZero __OM uint32_t DERJR; /*!< Offset: 0x058 ( /W) ���ݽ����Ĵ��� CPUд*/ 483*10465441SEvalZero }; 484*10465441SEvalZero 485*10465441SEvalZero } DCC_Type; 486*10465441SEvalZero 487*10465441SEvalZero #define DCC_HCR_JW_Pos 18U /*!< DCC HCR: jw_int_en Position */ 488*10465441SEvalZero #define DCC_HCR_JW_Msk (1UL << DCC_HCR_JW_Pos) /*!< DCC HCR: jw_int_en Mask */ 489*10465441SEvalZero 490*10465441SEvalZero #define DCC_HCR_JR_Pos 19U /*!< DCC HCR: jr_int_en Position */ 491*10465441SEvalZero #define DCC_HCR_JR_Msk (1UL << DCC_HCR_JR_Pos) /*!< DCC HCR: jr_int_en Mask */ 492*10465441SEvalZero 493*10465441SEvalZero #define DCC_EHSR_JW_Pos 1U /*!< DCC EHSR: jw_vld Position */ 494*10465441SEvalZero #define DCC_EHSR_JW_Msk (1UL << DCC_EHSR_JW_Pos) /*!< DCC EHSR: jw_vld Mask */ 495*10465441SEvalZero 496*10465441SEvalZero #define DCC_EHSR_JR_Pos 2U /*!< DCC EHSR: jr_vld Position */ 497*10465441SEvalZero #define DCC_EHSR_JR_Msk (1UL << DCC_EHSR_JR_Pos) /*!< DCC EHSR: jr_vld Mask */ 498*10465441SEvalZero 499*10465441SEvalZero /*@} end of group CSI_DCC */ 500*10465441SEvalZero 501*10465441SEvalZero 502*10465441SEvalZero /** 503*10465441SEvalZero \ingroup CSI_core_register 504*10465441SEvalZero \defgroup CSI_core_bitfield Core register bit field macros 505*10465441SEvalZero \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). 506*10465441SEvalZero @{ 507*10465441SEvalZero */ 508*10465441SEvalZero 509*10465441SEvalZero /** 510*10465441SEvalZero \brief Mask and shift a bit field value for use in a register bit range. 511*10465441SEvalZero \param[in] field Name of the register bit field. 512*10465441SEvalZero \param[in] value Value of the bit field. 513*10465441SEvalZero \return Masked and shifted value. 514*10465441SEvalZero */ 515*10465441SEvalZero #define _VAL2FLD(field, value) ((value << field ## _Pos) & field ## _Msk) 516*10465441SEvalZero 517*10465441SEvalZero /** 518*10465441SEvalZero \brief Mask and shift a register value to extract a bit filed value. 519*10465441SEvalZero \param[in] field Name of the register bit field. 520*10465441SEvalZero \param[in] value Value of register. 521*10465441SEvalZero \return Masked and shifted bit field value. 522*10465441SEvalZero */ 523*10465441SEvalZero #define _FLD2VAL(field, value) ((value & field ## _Msk) >> field ## _Pos) 524*10465441SEvalZero 525*10465441SEvalZero /*@} end of group CSI_core_bitfield */ 526*10465441SEvalZero 527*10465441SEvalZero /** 528*10465441SEvalZero \ingroup CSI_core_register 529*10465441SEvalZero \defgroup CSI_core_base Core Definitions 530*10465441SEvalZero \brief Definitions for base addresses, unions, and structures. 531*10465441SEvalZero @{ 532*10465441SEvalZero */ 533*10465441SEvalZero 534*10465441SEvalZero /* Memory mapping of CK802 Hardware */ 535*10465441SEvalZero #define TCIP_BASE (0xE000E000UL) /*!< Titly Coupled IP Base Address */ 536*10465441SEvalZero #define CORET_BASE (TCIP_BASE + 0x0010UL) /*!< CORET Base Address */ 537*10465441SEvalZero #define NVIC_BASE (TCIP_BASE + 0x0100UL) /*!< NVIC Base Address */ 538*10465441SEvalZero #define DCC_BASE (0xE0011000UL) /*!< DCC Base Address */ 539*10465441SEvalZero 540*10465441SEvalZero #define CORET ((CORET_Type *) CORET_BASE ) /*!< SysTick configuration struct */ 541*10465441SEvalZero #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ 542*10465441SEvalZero #define DCC ((DCC_Type *) DCC_BASE ) /*!< DCC configuration struct */ 543*10465441SEvalZero 544*10465441SEvalZero /*@} */ 545*10465441SEvalZero 546*10465441SEvalZero #ifdef __cplusplus 547*10465441SEvalZero } 548*10465441SEvalZero #endif 549*10465441SEvalZero 550*10465441SEvalZero #endif /* __CORE_CK802_H_DEPENDANT */ 551*10465441SEvalZero 552*10465441SEvalZero #endif /* __CSI_GENERIC */ 553