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

📄 armvic.h

📁 Free Usb Stack for NXP LPC2xxx microcontrollers.
💻 H
字号:
/****************************************************************************** * * $RCSfile$ * $Revision: 124 $ * * This module provides the interface definitions for setting up and * controlling the various interrupt modes present on the ARM processor. * Copyright 2004, R O SoftWare * No guarantees, warrantees, or promises, implied or otherwise. * May be used for hobby or commercial purposes provided copyright * notice remains intact. * *****************************************************************************/#ifndef INC_ARM_VIC_H#define INC_ARM_VIC_H/****************************************************************************** * * MACRO Name: ISR_ENTRY() * * Description: *    This MACRO is used upon entry to an ISR.  The current version of *    the gcc compiler for ARM does not produce correct code for *    interrupt routines to operate properly with THUMB code.  The MACRO *    performs the following steps: * *    1 - Adjust address at which execution should resume after servicing *        ISR to compensate for IRQ entry *    2 - Save the non-banked registers r0-r12 and lr onto the IRQ stack. *    3 - Get the status of the interrupted program is in SPSR. *    4 - Push it onto the IRQ stack as well. * *****************************************************************************/#define ISR_ENTRY() asm volatile(" sub   lr, lr,#4\n" \                                 " stmfd sp!,{r0-r12,lr}\n" \                                 " mrs   r1, spsr\n" \                                 " stmfd sp!,{r1}")/****************************************************************************** * * MACRO Name: ISR_EXIT() * * Description: *    This MACRO is used to exit an ISR.  The current version of the gcc *    compiler for ARM does not produce correct code for interrupt *    routines to operate properly with THUMB code.  The MACRO performs *    the following steps: * *    1 - Recover SPSR value from stack        *    2 - and restore  its value                    *    3 - Pop the return address & the saved general registers from *        the IRQ stack & return * *****************************************************************************/#define ISR_EXIT()  asm volatile(" ldmfd sp!,{r1}\n" \                                 " msr   spsr_c,r1\n" \                                 " ldmfd sp!,{r0-r12,pc}^")/****************************************************************************** * * Function Name: disableIRQ() * * Description: *    This function sets the IRQ disable bit in the status register * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned disableIRQ(void);/****************************************************************************** * * Function Name: enableIRQ() * * Description: *    This function clears the IRQ disable bit in the status register * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned enableIRQ(void);/****************************************************************************** * * Function Name: restoreIRQ() * * Description: *    This function restores the IRQ disable bit in the status register *    to the value contained within passed oldCPSR * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned restoreIRQ(unsigned oldCPSR);/****************************************************************************** * * Function Name: disableFIQ() * * Description: *    This function sets the FIQ disable bit in the status register * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned disableFIQ(void);/****************************************************************************** * * Function Name: enableFIQ() * * Description: *    This function clears the FIQ disable bit in the status register * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned enableFIQ(void);/****************************************************************************** * * Function Name: restoreIRQ() * * Description: *    This function restores the FIQ disable bit in the status register *    to the value contained within passed oldCPSR * * Calling Sequence:  *    void * * Returns: *    previous value of CPSR * *****************************************************************************/unsigned restoreFIQ(unsigned oldCPSR);#endif

⌨️ 快捷键说明

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