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