Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_exti.c
frank26080115 0:84d7747641aa 3 * @brief Contains all functions support for External interrupt firmware library on LPC17xx
frank26080115 0:84d7747641aa 4 * @version 3.0
frank26080115 0:84d7747641aa 5 * @date 18. June. 2010
frank26080115 0:84d7747641aa 6 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 7 **************************************************************************
frank26080115 0:84d7747641aa 8 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 9 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 10 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 11 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 12 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 13 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 14 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 15 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 16 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 17 * use without further testing or modification.
frank26080115 0:84d7747641aa 18 **********************************************************************/
frank26080115 0:84d7747641aa 19
frank26080115 0:84d7747641aa 20 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 21 /** @addtogroup EXTI
frank26080115 0:84d7747641aa 22 * @{
frank26080115 0:84d7747641aa 23 */
frank26080115 0:84d7747641aa 24
frank26080115 0:84d7747641aa 25 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 26 #include "lpc17xx_exti.h"
frank26080115 0:84d7747641aa 27
frank26080115 0:84d7747641aa 28 /* If this source file built with example, the LPC17xx FW library configuration
frank26080115 0:84d7747641aa 29 * file in each example directory ("lpc17xx_libcfg.h") must be included,
frank26080115 0:84d7747641aa 30 * otherwise the default FW library configuration file must be included instead
frank26080115 0:84d7747641aa 31 */
frank26080115 0:84d7747641aa 32 #ifdef __BUILD_WITH_EXAMPLE__
frank26080115 0:84d7747641aa 33 #include "lpc17xx_libcfg.h"
frank26080115 0:84d7747641aa 34 #else
frank26080115 0:84d7747641aa 35 #include "lpc17xx_libcfg_default.h"
frank26080115 0:84d7747641aa 36 #endif /* __BUILD_WITH_EXAMPLE__ */
frank26080115 0:84d7747641aa 37
frank26080115 0:84d7747641aa 38
frank26080115 0:84d7747641aa 39 #ifdef _EXTI
frank26080115 0:84d7747641aa 40
frank26080115 0:84d7747641aa 41 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 42 /** @addtogroup EXTI_Public_Functions
frank26080115 0:84d7747641aa 43 * @{
frank26080115 0:84d7747641aa 44 */
frank26080115 0:84d7747641aa 45
frank26080115 0:84d7747641aa 46 /*********************************************************************//**
frank26080115 0:84d7747641aa 47 * @brief Initial for EXT
frank26080115 0:84d7747641aa 48 * - Set EXTINT, EXTMODE, EXTPOLAR registers to default value
frank26080115 0:84d7747641aa 49 * @param[in] None
frank26080115 0:84d7747641aa 50 * @return None
frank26080115 0:84d7747641aa 51 **********************************************************************/
frank26080115 0:84d7747641aa 52 void EXTI_Init(void)
frank26080115 0:84d7747641aa 53 {
frank26080115 0:84d7747641aa 54 LPC_SC->EXTINT = 0xF;
frank26080115 0:84d7747641aa 55 LPC_SC->EXTMODE = 0x0;
frank26080115 0:84d7747641aa 56 LPC_SC->EXTPOLAR = 0x0;
frank26080115 0:84d7747641aa 57 }
frank26080115 0:84d7747641aa 58
frank26080115 0:84d7747641aa 59
frank26080115 0:84d7747641aa 60 /*********************************************************************//**
frank26080115 0:84d7747641aa 61 * @brief Close EXT
frank26080115 0:84d7747641aa 62 * @param[in] None
frank26080115 0:84d7747641aa 63 * @return None
frank26080115 0:84d7747641aa 64 **********************************************************************/
frank26080115 0:84d7747641aa 65 void EXTI_DeInit(void)
frank26080115 0:84d7747641aa 66 {
frank26080115 0:84d7747641aa 67 ;
frank26080115 0:84d7747641aa 68 }
frank26080115 0:84d7747641aa 69
frank26080115 0:84d7747641aa 70 /*********************************************************************//**
frank26080115 0:84d7747641aa 71 * @brief Configuration for EXT
frank26080115 0:84d7747641aa 72 * - Set EXTINT, EXTMODE, EXTPOLAR register
frank26080115 0:84d7747641aa 73 * @param[in] EXTICfg Pointer to a EXTI_InitTypeDef structure
frank26080115 0:84d7747641aa 74 * that contains the configuration information for the
frank26080115 0:84d7747641aa 75 * specified external interrupt
frank26080115 0:84d7747641aa 76 * @return None
frank26080115 0:84d7747641aa 77 **********************************************************************/
frank26080115 0:84d7747641aa 78 void EXTI_Config(EXTI_InitTypeDef *EXTICfg)
frank26080115 0:84d7747641aa 79 {
frank26080115 0:84d7747641aa 80 LPC_SC->EXTINT = 0x0;
frank26080115 0:84d7747641aa 81 EXTI_SetMode(EXTICfg->EXTI_Line, EXTICfg->EXTI_Mode);
frank26080115 0:84d7747641aa 82 EXTI_SetPolarity(EXTICfg->EXTI_Line, EXTICfg->EXTI_polarity);
frank26080115 0:84d7747641aa 83 }
frank26080115 0:84d7747641aa 84
frank26080115 0:84d7747641aa 85 /*********************************************************************//**
frank26080115 0:84d7747641aa 86 * @brief Set mode for EXTI pin
frank26080115 0:84d7747641aa 87 * @param[in] EXTILine external interrupt line, should be:
frank26080115 0:84d7747641aa 88 * - EXTI_EINT0: external interrupt line 0
frank26080115 0:84d7747641aa 89 * - EXTI_EINT1: external interrupt line 1
frank26080115 0:84d7747641aa 90 * - EXTI_EINT2: external interrupt line 2
frank26080115 0:84d7747641aa 91 * - EXTI_EINT3: external interrupt line 3
frank26080115 0:84d7747641aa 92 * @param[in] mode external mode, should be:
frank26080115 0:84d7747641aa 93 * - EXTI_MODE_LEVEL_SENSITIVE
frank26080115 0:84d7747641aa 94 * - EXTI_MODE_EDGE_SENSITIVE
frank26080115 0:84d7747641aa 95 * @return None
frank26080115 0:84d7747641aa 96 *********************************************************************/
frank26080115 0:84d7747641aa 97 void EXTI_SetMode(EXTI_LINE_ENUM EXTILine, EXTI_MODE_ENUM mode)
frank26080115 0:84d7747641aa 98 {
frank26080115 0:84d7747641aa 99 if(mode == EXTI_MODE_EDGE_SENSITIVE)
frank26080115 0:84d7747641aa 100 {
frank26080115 0:84d7747641aa 101 LPC_SC->EXTMODE |= (1 << EXTILine);
frank26080115 0:84d7747641aa 102 }
frank26080115 0:84d7747641aa 103 else if(mode == EXTI_MODE_LEVEL_SENSITIVE)
frank26080115 0:84d7747641aa 104 {
frank26080115 0:84d7747641aa 105 LPC_SC->EXTMODE &= ~(1 << EXTILine);
frank26080115 0:84d7747641aa 106 }
frank26080115 0:84d7747641aa 107 }
frank26080115 0:84d7747641aa 108
frank26080115 0:84d7747641aa 109 /*********************************************************************//**
frank26080115 0:84d7747641aa 110 * @brief Set polarity for EXTI pin
frank26080115 0:84d7747641aa 111 * @param[in] EXTILine external interrupt line, should be:
frank26080115 0:84d7747641aa 112 * - EXTI_EINT0: external interrupt line 0
frank26080115 0:84d7747641aa 113 * - EXTI_EINT1: external interrupt line 1
frank26080115 0:84d7747641aa 114 * - EXTI_EINT2: external interrupt line 2
frank26080115 0:84d7747641aa 115 * - EXTI_EINT3: external interrupt line 3
frank26080115 0:84d7747641aa 116 * @param[in] polarity external polarity value, should be:
frank26080115 0:84d7747641aa 117 * - EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE
frank26080115 0:84d7747641aa 118 * - EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE
frank26080115 0:84d7747641aa 119 * @return None
frank26080115 0:84d7747641aa 120 *********************************************************************/
frank26080115 0:84d7747641aa 121 void EXTI_SetPolarity(EXTI_LINE_ENUM EXTILine, EXTI_POLARITY_ENUM polarity)
frank26080115 0:84d7747641aa 122 {
frank26080115 0:84d7747641aa 123 if(polarity == EXTI_POLARITY_HIGH_ACTIVE_OR_RISING_EDGE)
frank26080115 0:84d7747641aa 124 {
frank26080115 0:84d7747641aa 125 LPC_SC->EXTPOLAR |= (1 << EXTILine);
frank26080115 0:84d7747641aa 126 }
frank26080115 0:84d7747641aa 127 else if(polarity == EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE)
frank26080115 0:84d7747641aa 128 {
frank26080115 0:84d7747641aa 129 LPC_SC->EXTPOLAR &= ~(1 << EXTILine);
frank26080115 0:84d7747641aa 130 }
frank26080115 0:84d7747641aa 131 }
frank26080115 0:84d7747641aa 132
frank26080115 0:84d7747641aa 133 /*********************************************************************//**
frank26080115 0:84d7747641aa 134 * @brief Clear External interrupt flag
frank26080115 0:84d7747641aa 135 * @param[in] EXTILine external interrupt line, should be:
frank26080115 0:84d7747641aa 136 * - EXTI_EINT0: external interrupt line 0
frank26080115 0:84d7747641aa 137 * - EXTI_EINT1: external interrupt line 1
frank26080115 0:84d7747641aa 138 * - EXTI_EINT2: external interrupt line 2
frank26080115 0:84d7747641aa 139 * - EXTI_EINT3: external interrupt line 3
frank26080115 0:84d7747641aa 140 * @return None
frank26080115 0:84d7747641aa 141 *********************************************************************/
frank26080115 0:84d7747641aa 142 void EXTI_ClearEXTIFlag(EXTI_LINE_ENUM EXTILine)
frank26080115 0:84d7747641aa 143 {
frank26080115 0:84d7747641aa 144 LPC_SC->EXTINT |= (1 << EXTILine);
frank26080115 0:84d7747641aa 145 }
frank26080115 0:84d7747641aa 146
frank26080115 0:84d7747641aa 147 /**
frank26080115 0:84d7747641aa 148 * @}
frank26080115 0:84d7747641aa 149 */
frank26080115 0:84d7747641aa 150
frank26080115 0:84d7747641aa 151 #endif /* _EXTI */
frank26080115 0:84d7747641aa 152
frank26080115 0:84d7747641aa 153 /**
frank26080115 0:84d7747641aa 154 * @}
frank26080115 0:84d7747641aa 155 */
frank26080115 0:84d7747641aa 156
frank26080115 0:84d7747641aa 157 /* --------------------------------- End Of File ------------------------------ */
frank26080115 0:84d7747641aa 158