CC3200 Peripheral Driver Library User's Guide  1.2.0
interrupt.h
1 //*****************************************************************************
2 //
3 // interrupt.h
4 //
5 // Prototypes for the NVIC Interrupt Controller Driver.
6 //
7 // Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com/
8 //
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions
12 // are met:
13 //
14 // Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the
20 // distribution.
21 //
22 // Neither the name of Texas Instruments Incorporated nor the names of
23 // its contributors may be used to endorse or promote products derived
24 // from this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 //*****************************************************************************
39 
40 #ifndef __INTERRUPT_H__
41 #define __INTERRUPT_H__
42 
43 //*****************************************************************************
44 //
45 // If building with a C++ compiler, make all of the definitions in this header
46 // have a C binding.
47 //
48 //*****************************************************************************
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 //*****************************************************************************
55 //
56 // A union that describes the entries of the vector table. The union is needed
57 // since the first entry is the stack pointer and the remainder are function
58 // pointers.
59 //
60 //*****************************************************************************
61 typedef union
62 {
63  void (*pfnHandler)(void);
64  unsigned long ulPtr;
65 }
67 
68 
69 //*****************************************************************************
70 //
71 // Macro to generate an interrupt priority mask based on the number of bits
72 // of priority supported by the hardware.
73 //
74 //*****************************************************************************
75 #define INT_PRIORITY_MASK ((0xFF << (8 - NUM_PRIORITY_BITS)) & 0xFF)
76 
77 //*****************************************************************************
78 // Interrupt priority levels
79 //*****************************************************************************
80 #define INT_PRIORITY_LVL_0 0x00
81 #define INT_PRIORITY_LVL_1 0x20
82 #define INT_PRIORITY_LVL_2 0x40
83 #define INT_PRIORITY_LVL_3 0x60
84 #define INT_PRIORITY_LVL_4 0x80
85 #define INT_PRIORITY_LVL_5 0xA0
86 #define INT_PRIORITY_LVL_6 0xC0
87 #define INT_PRIORITY_LVL_7 0xE0
88 
89 //*****************************************************************************
90 //
91 // Prototypes for the APIs.
92 //
93 //*****************************************************************************
94 extern tBoolean IntMasterEnable(void);
95 extern tBoolean IntMasterDisable(void);
96 extern void IntVTableBaseSet(unsigned long ulVtableBase);
97 extern void IntRegister(unsigned long ulInterrupt, void (*pfnHandler)(void));
98 extern void IntUnregister(unsigned long ulInterrupt);
99 extern void IntPriorityGroupingSet(unsigned long ulBits);
100 extern unsigned long IntPriorityGroupingGet(void);
101 extern void IntPrioritySet(unsigned long ulInterrupt,
102  unsigned char ucPriority);
103 extern long IntPriorityGet(unsigned long ulInterrupt);
104 extern void IntEnable(unsigned long ulInterrupt);
105 extern void IntDisable(unsigned long ulInterrupt);
106 extern void IntPendSet(unsigned long ulInterrupt);
107 extern void IntPendClear(unsigned long ulInterrupt);
108 extern void IntPriorityMaskSet(unsigned long ulPriorityMask);
109 extern unsigned long IntPriorityMaskGet(void);
110 
111 //*****************************************************************************
112 //
113 // Mark the end of the C bindings section for C++ compilers.
114 //
115 //*****************************************************************************
116 #ifdef __cplusplus
117 }
118 #endif
119 
120 #endif // __INTERRUPT_H__
void IntEnable(unsigned long ulInterrupt)
Definition: interrupt.c:461
Definition: interrupt.h:61
void IntPriorityMaskSet(unsigned long ulPriorityMask)
Definition: interrupt.c:733
tBoolean IntMasterEnable(void)
Definition: interrupt.c:180
void IntRegister(unsigned long ulInterrupt, void(*pfnHandler)(void))
Definition: interrupt.c:253
void IntPendSet(unsigned long ulInterrupt)
Definition: interrupt.c:610
void IntPrioritySet(unsigned long ulInterrupt, unsigned char ucPriority)
Definition: interrupt.c:401
tBoolean IntMasterDisable(void)
Definition: interrupt.c:207
void IntUnregister(unsigned long ulInterrupt)
Definition: interrupt.c:283
void IntPendClear(unsigned long ulInterrupt)
Definition: interrupt.c:675
unsigned long IntPriorityMaskGet(void)
Definition: interrupt.c:759
void IntPriorityGroupingSet(unsigned long ulBits)
Definition: interrupt.c:313
unsigned long IntPriorityGroupingGet(void)
Definition: interrupt.c:337
void IntDisable(unsigned long ulInterrupt)
Definition: interrupt.c:533
void IntVTableBaseSet(unsigned long ulVtableBase)
Definition: interrupt.c:229
long IntPriorityGet(unsigned long ulInterrupt)
Definition: interrupt.c:433