/* ****************************************************************************** * @file apt32f102_ck801.h * @author APT AE Team * @version V1.08 * @date 2021/06/21 ****************************************************************************** *THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES *CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS. *APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT, *INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF *SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION *CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES *THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef _apt32f102_ck801_H #define _apt32f102_ck801_H //---------------------------------------------------------------------------- // Interrupt Controller //---------------------------------------------------------------------------- //#define CK801_BASEADDR ((unsigned int) 0xE000E000) #define CK801_BASEADDR 0xE000E000 #define INTC_ISER CK801_BASEADDR+0x100 //INTC interrupt enable register #define INTC_IWER CK801_BASEADDR+0x140 //INTC wake-up interrupt enable register #define INTC_ICER CK801_BASEADDR+0x180 //INTC interrupt enable clear register #define INTC_IWDR CK801_BASEADDR+0x1C0 //INTC wake-up interrupt enable clear register #define INTC_ISPR CK801_BASEADDR+0x200 //INTC interrupt pending register #define INTC_ICPR CK801_BASEADDR+0x280 //INTC interrupt pending clear register #define INTC_IABR CK801_BASEADDR+0x300 //INTC interrupt acknowledge status register #define INTC_IPR0 CK801_BASEADDR+0x400 //INTC interrupt priority register #define INTC_IPR1 CK801_BASEADDR+0x404 //INTC interrupt priority register #define INTC_IPR2 CK801_BASEADDR+0x408 //INTC interrupt priority register #define INTC_IPR3 CK801_BASEADDR+0x40C //INTC interrupt priority register #define INTC_IPR4 CK801_BASEADDR+0x410 //INTC interrupt priority register #define INTC_IPR5 CK801_BASEADDR+0x414 //INTC interrupt priority register #define INTC_IPR6 CK801_BASEADDR+0x418 //INTC interrupt priority register #define INTC_IPR7 CK801_BASEADDR+0x41C //INTC interrupt priority register #define INTC_ISR CK801_BASEADDR+0xC00 //INTC interrupt status register #define INTC_IPTR CK801_BASEADDR+0xC04 //INTC interrupt pending threshold register #define INTC_ISER_WRITE(val) *(volatile UINT32 *) (INTC_ISER ) = val #define INTC_IWER_WRITE(val) *(volatile UINT32 *) (INTC_IWER ) = val #define INTC_ICER_WRITE(val) *(volatile UINT32 *) (INTC_ICER ) = val #define INTC_IWDR_WRITE(val) *(volatile UINT32 *) (INTC_IWDR ) = val #define INTC_ISPR_WRITE(val) *(volatile UINT32 *) (INTC_ISPR ) = val #define INTC_ICPR_WRITE(val) *(volatile UINT32 *) (INTC_ICPR ) = val #define INTC_IABR_WRITE(val) *(volatile UINT32 *) (INTC_IABR ) = val #define INTC_IPR0_WRITE(val) *(volatile UINT32 *) (INTC_IPR0 ) = val #define INTC_IPR1_WRITE(val) *(volatile UINT32 *) (INTC_IPR1 ) = val #define INTC_IPR2_WRITE(val) *(volatile UINT32 *) (INTC_IPR2 ) = val #define INTC_IPR3_WRITE(val) *(volatile UINT32 *) (INTC_IPR3 ) = val #define INTC_IPR4_WRITE(val) *(volatile UINT32 *) (INTC_IPR4 ) = val #define INTC_IPR5_WRITE(val) *(volatile UINT32 *) (INTC_IPR5 ) = val #define INTC_IPR6_WRITE(val) *(volatile UINT32 *) (INTC_IPR6 ) = val #define INTC_IPR7_WRITE(val) *(volatile UINT32 *) (INTC_IPR7 ) = val #define INTC_ISR_WRITE(val) *(volatile UINT32 *) (INTC_ISR ) = val #define INTC_IPTR_WRITE(val) *(volatile UINT32 *) (INTC_IPTR ) = val #define INTC_ISER_READ(intc) (intc->ISER ) #define INTC_IWER_READ(intc) (intc->IWER ) #define INTC_ICER_READ(intc) (intc->ICER ) #define INTC_IWDR_READ(intc) (intc->IWDR ) #define INTC_ISPR_READ(intc) (intc->ISPR ) #define INTC_ICPR_READ(intc) (intc->ICPR ) #define INTC_IABR_READ(intc) (intc->IABR ) #define INTC_IPR0_READ(intc) (intc->IPR0 ) #define INTC_IPR1_READ(intc) (intc->IPR1 ) #define INTC_IPR2_READ(intc) (intc->IPR2 ) #define INTC_IPR3_READ(intc) (intc->IPR3 ) #define INTC_IPR4_READ(intc) (intc->IPR4 ) #define INTC_IPR5_READ(intc) (intc->IPR5 ) #define INTC_IPR6_READ(intc) (intc->IPR6 ) #define INTC_IPR7_READ(intc) (intc->IPR7 ) #define INTC_ISR_READ(intc) (intc->ISR ) #define INTC_IPTR_READ(intc) (intc->IPTR ) typedef enum IRQn { ISR_Restart = -32, ISR_Misaligned_Access = -31, ISR_Access_Error = -30, ISR_Divided_By_Zero = -29, ISR_Illegal = -28, ISR_Privlege_Violation = -27, ISR_Trace_Exection = -26, ISR_Breakpoint_Exception = -25, ISR_Unrecoverable_Error = -24, ISR_Idly4_Error = -23, ISR_Auto_INT = -22, ISR_Auto_FINT = -21, ISR_Reserved_HAI = -20, ISR_Reserved_FP = -19, ISR_TLB_Ins_Empty = -18, ISR_TLB_Data_Empty = -17, INTC_CORETIM_IRQn = 0, INTC_TIME1_IRQn = 1, INTC_UART0_IRQn = 2, INTC_GPIOA2_IRQn = 8, } IRQn_Type; void INTC_Init(void); void force_interrupt(IRQn_Type IRQn); void CK_CPU_EnAllNormalIrq(void); void CK_CPU_DisAllNormalIrq(void); #ifndef __INLINE #define __INLINE inline #endif #ifndef uint32_t #define uint32_t unsigned int #endif #ifndef uint8_t #define uint8_t unsigned char #endif #endif /******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/