2 * IO functions for NXP LPC1768. (generated file, check io-pin.ss)
4 * See also: http://bitbucket.org/jpc/lpc1768/
6 * Copyright (c) 2010 LoEE - Jakub Piotr Cłapa
7 * This program is released under the new BSD license.
12 #include "CMSIS/LPC17xx.h"
27 extern void invalid_pin_error () __attribute__((error ("Invalid IO pin number.")));
29 extern __inline__ __attribute__((always_inline))
30 int pin_read (int pin_no)
34 return LPC_GPIO0->FIOPIN & (1 << (pin_no - 0));
36 return LPC_GPIO1->FIOPIN & (1 << (pin_no - 32));
38 return LPC_GPIO2->FIOPIN & (1 << (pin_no - 64));
40 return LPC_GPIO3->FIOPIN & (1 << (pin_no - 96));
42 return LPC_GPIO4->FIOPIN & (1 << (pin_no - 128));
50 extern __inline__ __attribute__((always_inline))
51 void pin_write (int pin_no, int value)
56 LPC_GPIO0->FIOSET = (1 << (pin_no - 0));
58 LPC_GPIO0->FIOCLR = (1 << (pin_no - 0));
63 LPC_GPIO1->FIOSET = (1 << (pin_no - 32));
65 LPC_GPIO1->FIOCLR = (1 << (pin_no - 32));
70 LPC_GPIO2->FIOSET = (1 << (pin_no - 64));
72 LPC_GPIO2->FIOCLR = (1 << (pin_no - 64));
77 LPC_GPIO3->FIOSET = (1 << (pin_no - 96));
79 LPC_GPIO3->FIOCLR = (1 << (pin_no - 96));
84 LPC_GPIO4->FIOSET = (1 << (pin_no - 128));
86 LPC_GPIO4->FIOCLR = (1 << (pin_no - 128));
95 extern __inline__ __attribute__((always_inline))
96 void pin_dir (int pin_no, enum pin_dir dir)
100 if (dir == PIN_OUT) {
101 LPC_GPIO0->FIODIR |= (1 << (pin_no - 0));
103 LPC_GPIO0->FIODIR &= (1 << (pin_no - 0));
107 if (dir == PIN_OUT) {
108 LPC_GPIO1->FIODIR |= (1 << (pin_no - 32));
110 LPC_GPIO1->FIODIR &= (1 << (pin_no - 32));
114 if (dir == PIN_OUT) {
115 LPC_GPIO2->FIODIR |= (1 << (pin_no - 64));
117 LPC_GPIO2->FIODIR &= (1 << (pin_no - 64));
121 if (dir == PIN_OUT) {
122 LPC_GPIO3->FIODIR |= (1 << (pin_no - 96));
124 LPC_GPIO3->FIODIR &= (1 << (pin_no - 96));
128 if (dir == PIN_OUT) {
129 LPC_GPIO4->FIODIR |= (1 << (pin_no - 128));
131 LPC_GPIO4->FIODIR &= (1 << (pin_no - 128));
135 invalid_pin_error ();