| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
gpioint_001.c
Go to the documentation of this file.
1 /*
2 * @brief GPIO Interrupt Registers and control functions
3 *
4 * @note
5 * Copyright(C) NXP Semiconductors, 2012
6 * All rights reserved.
7 *
8 * @par
9 * Software that is described herein is for illustrative purposes only
10 * which provides customers with programming information regarding the
11 * LPC products. This software is supplied "AS IS" without any warranties of
12 * any kind, and NXP Semiconductors and its licensor disclaim any and
13 * all warranties, express or implied, including all implied warranties of
14 * merchantability, fitness for a particular purpose and non-infringement of
15 * intellectual property rights. NXP Semiconductors assumes no responsibility
16 * or liability for the use of the software, conveys no license or rights under any
17 * patent, copyright, mask work right, or any other intellectual property rights in
18 * or to any products. NXP Semiconductors reserves the right to make changes
19 * in the software without notification. NXP Semiconductors also makes no
20 * representation or warranty that such application will be suitable for the
21 * specified use without further testing or modification.
22 *
23 * @par
24 * Permission to use, copy, modify, and distribute this software and its
25 * documentation is hereby granted, under NXP Semiconductors' and its
26 * licensor's relevant copyrights in the software, without fee, provided that it
27 * is used in conjunction with NXP Semiconductors microcontrollers. This
28 * copyright, permission, and disclaimer notice must appear in all copies of
29 * this code.
30 */
31
32 #include "gpioint_001.h"
33
34 /*****************************************************************************
35 * Private types/enumerations/variables
36 ****************************************************************************/
37
38 /*****************************************************************************
39 * Public types/enumerations/variables
40 ****************************************************************************/
41
42 /*****************************************************************************
43 * Private functions
44 ****************************************************************************/
45
46 /*****************************************************************************
47 * Public functions
48 ****************************************************************************/
49
50 /* Enable GPIO Interrupt */
51 void IP_GPIOINT_IntCmd(IP_GPIOINT_001_T *pGPIOPININT, uint8_t PortNum, uint32_t BitValue, IP_GPIOPININT_MODE_T IntMode)
52 {
53 if (PortNum == 0) {
54 if (IntMode == GPIOPININT_RISING_EDGE) {
55 pGPIOPININT->EnR0 = BitValue;
56 }
57 else {
58 pGPIOPININT->EnF0 = BitValue;
59 }
60 }
61 else if (PortNum == 2) {
62 if (IntMode == GPIOPININT_RISING_EDGE) {
63 pGPIOPININT->EnR2 = BitValue;
64 }
65 else {
66 pGPIOPININT->EnF2 = BitValue;
67 }
68 }
69 }
70
71 /*Get GPIO Interrupt Status */
72 bool IP_GPIOINT_IntGetStatus(IP_GPIOINT_001_T *pGPIOPININT,
73 uint8_t PortNum,
74 uint32_t PinNum,
75 IP_GPIOPININT_MODE_T IntMode)
76 {
77 if (PortNum == 0) {
78 if (IntMode == GPIOPININT_RISING_EDGE) {
79 return (bool) ((pGPIOPININT->StatR0 >> PinNum) & 0x1);
80 }
81 else {
82 return (bool) ((pGPIOPININT->StatF0 >> PinNum) & 0x1);
83 }
84 }
85 else if (PortNum == 2) {
86 if (IntMode == GPIOPININT_RISING_EDGE) {
87 return (bool) ((pGPIOPININT->StatR2 >> PinNum) & 0x1);
88 }
89 else {
90 return (bool) ((pGPIOPININT->StatF2 >> PinNum) & 0x1);
91 }
92 }
93
94 return false;
95 }
96
103 void IP_GPIOINT_IntClear(IP_GPIOINT_001_T *pGPIOPININT, uint8_t PortNum, uint32_t BitValue)
104 {
105 if (PortNum == 0) {
106 pGPIOPININT->Clr0 = BitValue;
107 }
108 else if (PortNum == 2) {
109 pGPIOPININT->Clr2 = BitValue;
110 }
111 }