|
|
|
@ -48,6 +48,12 @@
|
|
|
|
|
*
|
|
|
|
|
* Macros to aid debugging of a user application.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/** \defgroup Group_GlobalInt Global Interrupt Macros
|
|
|
|
|
* \brief Convenience macros for the management of interrupts globally within the device.
|
|
|
|
|
*
|
|
|
|
|
* Macros and functions to create and control global interrupts within the device.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef __LUFA_COMMON_H__
|
|
|
|
|
#define __LUFA_COMMON_H__
|
|
|
|
@ -228,6 +234,8 @@
|
|
|
|
|
* \note This is supplied on some architectures where the standard library does not include a valid
|
|
|
|
|
* definition. If an existing definition exists, the definition here will be ignored.
|
|
|
|
|
*
|
|
|
|
|
* \ingroup Group_GlobalInt
|
|
|
|
|
*
|
|
|
|
|
* \param Name Unique name of the interrupt service routine.
|
|
|
|
|
*/
|
|
|
|
|
#define ISR(Name, ...) void Name (void) __attribute__((__interrupt__)); void Name (void)
|
|
|
|
@ -280,6 +288,8 @@
|
|
|
|
|
* value can be stored before altering the global interrupt enable state, before restoring the
|
|
|
|
|
* flag(s) back to their previous values after a critical section using \ref SetGlobalInterruptMask().
|
|
|
|
|
*
|
|
|
|
|
* \ingroup Group_GlobalInt
|
|
|
|
|
*
|
|
|
|
|
* \return Mask containing the current Global Interrupt Enable Mask bit(s).
|
|
|
|
|
*/
|
|
|
|
|
static inline uint_reg_t GetGlobalInterruptMask(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
|
|
|
@ -300,6 +310,8 @@
|
|
|
|
|
* This can be combined with \ref GetGlobalInterruptMask() to save and restore the Global Interrupt Enable
|
|
|
|
|
* Mask bit(s) of the device after a critical section has completed.
|
|
|
|
|
*
|
|
|
|
|
* \ingroup Group_GlobalInt
|
|
|
|
|
*
|
|
|
|
|
* \param[in] GlobalIntState Global Interrupt Enable Mask value to use
|
|
|
|
|
*/
|
|
|
|
|
static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) ATTR_ALWAYS_INLINE;
|
|
|
|
@ -319,7 +331,10 @@
|
|
|
|
|
GCC_MEMORY_BARRIER();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Enables global interrupt handling for the device, allowing interrupts to be handled. */
|
|
|
|
|
/** Enables global interrupt handling for the device, allowing interrupts to be handled.
|
|
|
|
|
*
|
|
|
|
|
* \ingroup Group_GlobalInt
|
|
|
|
|
*/
|
|
|
|
|
static inline void GlobalInterruptEnable(void) ATTR_ALWAYS_INLINE;
|
|
|
|
|
static inline void GlobalInterruptEnable(void)
|
|
|
|
|
{
|
|
|
|
@ -334,7 +349,10 @@
|
|
|
|
|
GCC_MEMORY_BARRIER();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Disabled global interrupt handling for the device, preventing interrupts from being handled. */
|
|
|
|
|
/** Disabled global interrupt handling for the device, preventing interrupts from being handled.
|
|
|
|
|
*
|
|
|
|
|
* \ingroup Group_GlobalInt
|
|
|
|
|
*/
|
|
|
|
|
static inline void GlobalInterruptDisable(void) ATTR_ALWAYS_INLINE;
|
|
|
|
|
static inline void GlobalInterruptDisable(void)
|
|
|
|
|
{
|
|
|
|
|