NXP's driver library for LPC17xx, ported to mbed's online compiler. Not tested! I had to fix a lot of warings and found a couple of pretty obvious bugs, so the chances are there are more. Original: http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip

Dependencies:   mbed

Committer:
igorsk
Date:
Wed Feb 17 16:22:39 2010 +0000
Revision:
0:1063a091a062

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igorsk 0:1063a091a062 1 /***********************************************************************//**
igorsk 0:1063a091a062 2 * @file : lpc17xx_gpio.h
igorsk 0:1063a091a062 3 * @brief : Contains all macro definitions and function prototypes
igorsk 0:1063a091a062 4 * support for GPIO firmware library on LPC17xx
igorsk 0:1063a091a062 5 * @version : 1.0
igorsk 0:1063a091a062 6 * @date : 23. Apr. 2009
igorsk 0:1063a091a062 7 * @author : HieuNguyen
igorsk 0:1063a091a062 8 **************************************************************************
igorsk 0:1063a091a062 9 * Software that is described herein is for illustrative purposes only
igorsk 0:1063a091a062 10 * which provides customers with programming information regarding the
igorsk 0:1063a091a062 11 * products. This software is supplied "AS IS" without any warranties.
igorsk 0:1063a091a062 12 * NXP Semiconductors assumes no responsibility or liability for the
igorsk 0:1063a091a062 13 * use of the software, conveys no license or title under any patent,
igorsk 0:1063a091a062 14 * copyright, or mask work right to the product. NXP Semiconductors
igorsk 0:1063a091a062 15 * reserves the right to make changes in the software without
igorsk 0:1063a091a062 16 * notification. NXP Semiconductors also make no representation or
igorsk 0:1063a091a062 17 * warranty that such application will be suitable for the specified
igorsk 0:1063a091a062 18 * use without further testing or modification.
igorsk 0:1063a091a062 19 **************************************************************************/
igorsk 0:1063a091a062 20
igorsk 0:1063a091a062 21 /* Peripheral group ----------------------------------------------------------- */
igorsk 0:1063a091a062 22 /** @defgroup GPIO
igorsk 0:1063a091a062 23 * @ingroup LPC1700CMSIS_FwLib_Drivers
igorsk 0:1063a091a062 24 * @{
igorsk 0:1063a091a062 25 */
igorsk 0:1063a091a062 26
igorsk 0:1063a091a062 27 #ifndef LPC17XX_GPIO_H_
igorsk 0:1063a091a062 28 #define LPC17XX_GPIO_H_
igorsk 0:1063a091a062 29
igorsk 0:1063a091a062 30 /* Includes ------------------------------------------------------------------- */
igorsk 0:1063a091a062 31 #include "cmsis.h"
igorsk 0:1063a091a062 32 #include "lpc_types.h"
igorsk 0:1063a091a062 33
igorsk 0:1063a091a062 34
igorsk 0:1063a091a062 35 #ifdef __cplusplus
igorsk 0:1063a091a062 36 extern "C"
igorsk 0:1063a091a062 37 {
igorsk 0:1063a091a062 38 #endif
igorsk 0:1063a091a062 39
igorsk 0:1063a091a062 40
igorsk 0:1063a091a062 41 /* Public Types --------------------------------------------------------------- */
igorsk 0:1063a091a062 42 /** @defgroup GPIO_Public_Types
igorsk 0:1063a091a062 43 * @{
igorsk 0:1063a091a062 44 */
igorsk 0:1063a091a062 45
igorsk 0:1063a091a062 46 /**
igorsk 0:1063a091a062 47 * @brief Fast GPIO port byte type definition
igorsk 0:1063a091a062 48 */
igorsk 0:1063a091a062 49 typedef struct {
igorsk 0:1063a091a062 50 __IO uint8_t FIODIR[4]; /**< FIO direction register in byte-align */
igorsk 0:1063a091a062 51 uint32_t RESERVED0[3]; /**< Reserved */
igorsk 0:1063a091a062 52 __IO uint8_t FIOMASK[4]; /**< FIO mask register in byte-align */
igorsk 0:1063a091a062 53 __IO uint8_t FIOPIN[4]; /**< FIO pin register in byte align */
igorsk 0:1063a091a062 54 __IO uint8_t FIOSET[4]; /**< FIO set register in byte-align */
igorsk 0:1063a091a062 55 __O uint8_t FIOCLR[4]; /**< FIO clear register in byte-align */
igorsk 0:1063a091a062 56 } GPIO_Byte_TypeDef;
igorsk 0:1063a091a062 57
igorsk 0:1063a091a062 58
igorsk 0:1063a091a062 59 /**
igorsk 0:1063a091a062 60 * @brief Fast GPIO port half-word type definition
igorsk 0:1063a091a062 61 */
igorsk 0:1063a091a062 62 typedef struct {
igorsk 0:1063a091a062 63 __IO uint16_t FIODIRL; /**< FIO direction register lower halfword part */
igorsk 0:1063a091a062 64 __IO uint16_t FIODIRU; /**< FIO direction register upper halfword part */
igorsk 0:1063a091a062 65 uint32_t RESERVED0[3]; /**< Reserved */
igorsk 0:1063a091a062 66 __IO uint16_t FIOMASKL; /**< FIO mask register lower halfword part */
igorsk 0:1063a091a062 67 __IO uint16_t FIOMASKU; /**< FIO mask register upper halfword part */
igorsk 0:1063a091a062 68 __IO uint16_t FIOPINL; /**< FIO pin register lower halfword part */
igorsk 0:1063a091a062 69 __IO uint16_t FIOPINU; /**< FIO pin register upper halfword part */
igorsk 0:1063a091a062 70 __IO uint16_t FIOSETL; /**< FIO set register lower halfword part */
igorsk 0:1063a091a062 71 __IO uint16_t FIOSETU; /**< FIO set register upper halfword part */
igorsk 0:1063a091a062 72 __O uint16_t FIOCLRL; /**< FIO clear register lower halfword part */
igorsk 0:1063a091a062 73 __O uint16_t FIOCLRU; /**< FIO clear register upper halfword part */
igorsk 0:1063a091a062 74 } GPIO_HalfWord_TypeDef;
igorsk 0:1063a091a062 75
igorsk 0:1063a091a062 76
igorsk 0:1063a091a062 77 /**
igorsk 0:1063a091a062 78 * @}
igorsk 0:1063a091a062 79 */
igorsk 0:1063a091a062 80
igorsk 0:1063a091a062 81
igorsk 0:1063a091a062 82 /* Public Macros -------------------------------------------------------------- */
igorsk 0:1063a091a062 83 /** @defgroup GPIO_Public_Macros
igorsk 0:1063a091a062 84 * @{
igorsk 0:1063a091a062 85 */
igorsk 0:1063a091a062 86
igorsk 0:1063a091a062 87 /** Fast GPIO port 0 byte accessible definition */
igorsk 0:1063a091a062 88 #define GPIO0_Byte ((GPIO_Byte_TypeDef *)(LPC_GPIO0_BASE))
igorsk 0:1063a091a062 89 /** Fast GPIO port 1 byte accessible definition */
igorsk 0:1063a091a062 90 #define GPIO1_Byte ((GPIO_Byte_TypeDef *)(LPC_GPIO1_BASE))
igorsk 0:1063a091a062 91 /** Fast GPIO port 2 byte accessible definition */
igorsk 0:1063a091a062 92 #define GPIO2_Byte ((GPIO_Byte_TypeDef *)(LPC_GPIO2_BASE))
igorsk 0:1063a091a062 93 /** Fast GPIO port 3 byte accessible definition */
igorsk 0:1063a091a062 94 #define GPIO3_Byte ((GPIO_Byte_TypeDef *)(LPC_GPIO3_BASE))
igorsk 0:1063a091a062 95 /** Fast GPIO port 4 byte accessible definition */
igorsk 0:1063a091a062 96 #define GPIO4_Byte ((GPIO_Byte_TypeDef *)(LPC_GPIO4_BASE))
igorsk 0:1063a091a062 97
igorsk 0:1063a091a062 98
igorsk 0:1063a091a062 99
igorsk 0:1063a091a062 100 /** Fast GPIO port 0 half-word accessible definition */
igorsk 0:1063a091a062 101 #define GPIO0_HalfWord ((GPIO_HalfWord_TypeDef *)(LPC_GPIO0_BASE))
igorsk 0:1063a091a062 102 /** Fast GPIO port 1 half-word accessible definition */
igorsk 0:1063a091a062 103 #define GPIO1_HalfWord ((GPIO_HalfWord_TypeDef *)(LPC_GPIO1_BASE))
igorsk 0:1063a091a062 104 /** Fast GPIO port 2 half-word accessible definition */
igorsk 0:1063a091a062 105 #define GPIO2_HalfWord ((GPIO_HalfWord_TypeDef *)(LPC_GPIO2_BASE))
igorsk 0:1063a091a062 106 /** Fast GPIO port 3 half-word accessible definition */
igorsk 0:1063a091a062 107 #define GPIO3_HalfWord ((GPIO_HalfWord_TypeDef *)(LPC_GPIO3_BASE))
igorsk 0:1063a091a062 108 /** Fast GPIO port 4 half-word accessible definition */
igorsk 0:1063a091a062 109 #define GPIO4_HalfWord ((GPIO_HalfWord_TypeDef *)(LPC_GPIO4_BASE))
igorsk 0:1063a091a062 110
igorsk 0:1063a091a062 111
igorsk 0:1063a091a062 112 /**
igorsk 0:1063a091a062 113 * @}
igorsk 0:1063a091a062 114 */
igorsk 0:1063a091a062 115
igorsk 0:1063a091a062 116
igorsk 0:1063a091a062 117 /* Public Functions ----------------------------------------------------------- */
igorsk 0:1063a091a062 118 /** @defgroup GPIO_Public_Functions
igorsk 0:1063a091a062 119 * @{
igorsk 0:1063a091a062 120 */
igorsk 0:1063a091a062 121
igorsk 0:1063a091a062 122 /* GPIO style ------------------------------- */
igorsk 0:1063a091a062 123 void GPIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);
igorsk 0:1063a091a062 124 void GPIO_SetValue(uint8_t portNum, uint32_t bitValue);
igorsk 0:1063a091a062 125 void GPIO_ClearValue(uint8_t portNum, uint32_t bitValue);
igorsk 0:1063a091a062 126 uint32_t GPIO_ReadValue(uint8_t portNum);
igorsk 0:1063a091a062 127
igorsk 0:1063a091a062 128 /* FIO (word-accessible) style ------------------------------- */
igorsk 0:1063a091a062 129 void FIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);
igorsk 0:1063a091a062 130 void FIO_SetValue(uint8_t portNum, uint32_t bitValue);
igorsk 0:1063a091a062 131 void FIO_ClearValue(uint8_t portNum, uint32_t bitValue);
igorsk 0:1063a091a062 132 uint32_t FIO_ReadValue(uint8_t portNum);
igorsk 0:1063a091a062 133 void FIO_SetMask(uint8_t portNum, uint32_t bitValue, uint8_t maskValue);
igorsk 0:1063a091a062 134
igorsk 0:1063a091a062 135 /* FIO (halfword-accessible) style ------------------------------- */
igorsk 0:1063a091a062 136 void FIO_HalfWordSetDir(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t dir);
igorsk 0:1063a091a062 137 void FIO_HalfWordSetMask(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue, uint8_t maskValue);
igorsk 0:1063a091a062 138 void FIO_HalfWordSetValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue);
igorsk 0:1063a091a062 139 void FIO_HalfWordClearValue(uint8_t portNum, uint8_t halfwordNum, uint16_t bitValue);
igorsk 0:1063a091a062 140 uint16_t FIO_HalfWordReadValue(uint8_t portNum, uint8_t halfwordNum);
igorsk 0:1063a091a062 141
igorsk 0:1063a091a062 142 /* FIO (byte-accessible) style ------------------------------- */
igorsk 0:1063a091a062 143 void FIO_ByteSetDir(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t dir);
igorsk 0:1063a091a062 144 void FIO_ByteSetMask(uint8_t portNum, uint8_t byteNum, uint8_t bitValue, uint8_t maskValue);
igorsk 0:1063a091a062 145 void FIO_ByteSetValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue);
igorsk 0:1063a091a062 146 void FIO_ByteClearValue(uint8_t portNum, uint8_t byteNum, uint8_t bitValue);
igorsk 0:1063a091a062 147 uint8_t FIO_ByteReadValue(uint8_t portNum, uint8_t byteNum);
igorsk 0:1063a091a062 148
igorsk 0:1063a091a062 149
igorsk 0:1063a091a062 150
igorsk 0:1063a091a062 151 /**
igorsk 0:1063a091a062 152 * @}
igorsk 0:1063a091a062 153 */
igorsk 0:1063a091a062 154
igorsk 0:1063a091a062 155
igorsk 0:1063a091a062 156 #ifdef __cplusplus
igorsk 0:1063a091a062 157 }
igorsk 0:1063a091a062 158 #endif
igorsk 0:1063a091a062 159
igorsk 0:1063a091a062 160 #endif /* LPC17XX_GPIO_H_ */
igorsk 0:1063a091a062 161
igorsk 0:1063a091a062 162 /**
igorsk 0:1063a091a062 163 * @}
igorsk 0:1063a091a062 164 */
igorsk 0:1063a091a062 165
igorsk 0:1063a091a062 166 /* --------------------------------- End Of File ------------------------------ */