Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

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?

UserRevisionLine numberNew 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__ */