diff --git a/libraries/USBDevice/USBDevice/USBHAL_LPC40.cpp b/libraries/USBDevice/USBDevice/USBHAL_LPC40.cpp index b7c9977a67c..f2643afa376 100644 --- a/libraries/USBDevice/USBDevice/USBHAL_LPC40.cpp +++ b/libraries/USBDevice/USBDevice/USBHAL_LPC40.cpp @@ -32,8 +32,9 @@ #define PCUSB (1UL<<31) // USB Clock Control register -#define DEV_CLK_EN (1UL<<1) -#define AHB_CLK_EN (1UL<<4) +#define DEV_CLK_EN (1UL<<1) +#define PORT_CLK_EN (1UL<<3) +#define AHB_CLK_EN (1UL<<4) // USB Clock Status register #define DEV_CLK_ON (1UL<<1) @@ -364,21 +365,23 @@ USBHAL::USBHAL(void) { LPC_SC->PCONP |= PCUSB; // Enable USB clocks - LPC_USB->USBClkCtrl |= DEV_CLK_EN | AHB_CLK_EN; - while ((LPC_USB->USBClkSt & (DEV_CLK_EN | AHB_CLK_EN)) != (DEV_CLK_ON | AHB_CLK_ON)); + LPC_USB->USBClkCtrl |= DEV_CLK_EN | AHB_CLK_EN | PORT_CLK_EN; + while ((LPC_USB->USBClkSt & (DEV_CLK_EN | AHB_CLK_EN | PORT_CLK_EN)) != (DEV_CLK_ON | AHB_CLK_ON | PORT_CLK_EN)); + + // Select port USB2 + LPC_USB->StCtrl |= 3; + - // Configure pins P0.29 and P0.30 to be USB D+ and USB D- - LPC_IOCON->P0_29 &= ~0x07; - LPC_IOCON->P0_29 |= 0x01; - LPC_IOCON->P0_30 &= ~0x07; - LPC_IOCON->P0_30 |= 0x01; + // Configure pin P0.31 to be USB2 + LPC_IOCON->P0_31 &= ~0x07; + LPC_IOCON->P0_31 |= 0x01; // Disconnect USB device SIEdisconnect(); - // Configure pin P2.9 to be Connect - LPC_IOCON->P2_9 &= ~0x07; - LPC_IOCON->P2_9 |= 0x01; + // Configure pin P0.14 to be Connect + LPC_IOCON->P0_14 &= ~0x07; + LPC_IOCON->P0_14 |= 0x03; // Connect must be low for at least 2.5uS wait(0.3); diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/PinNames.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/PinNames.h index 5bc466d4f61..987ccbe6d37 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/PinNames.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/PinNames.h @@ -40,38 +40,45 @@ typedef enum { P5_0, P5_1, P5_2, P5_3, P5_4, // mbed DIP Pin Names - p5 = P0_9, - p6 = P0_8, - p7 = P0_7, - p8 = P0_6, + p5 = P1_24, + p6 = P1_23, + p7 = P1_20, + p8 = P0_21, p9 = P0_0, p10 = P0_1, - p11 = P0_18, - p12 = P0_17, - p13 = P0_15, - p14 = P0_16, + p11 = P0_9, + p12 = P0_8, + p13 = P0_7, + p14 = P0_6, p15 = P0_23, p16 = P0_24, p17 = P0_25, p18 = P0_26, p19 = P1_30, p20 = P1_31, - p21 = P2_5, - p22 = P2_4, - p23 = P2_3, - p24 = P2_2, - p25 = P2_1, - p26 = P2_0, - p27 = P0_11, - p28 = P0_10, - p29 = P0_5, - p30 = P0_4, + p23 = P2_10, + p24 = P1_12, + p25 = P1_11, + p26 = P1_7, + p27 = P1_6, + p28 = P1_5, + p29 = P1_3, + p30 = P1_2, + p31 = P5_3, + p32 = P5_2, + p33 = P0_5, + p34 = P0_4, + + p37 = P5_4, + p38 = P5_1, + p39 = P5_0, + // Other mbed Pin Names - LED1 = P2_27, - LED2 = P2_26, - LED3 = P2_26, - LED4 = P2_26, + LED1 = P1_18, + LED2 = P0_13, + LED3 = P1_13, + LED4 = P2_19, USBTX = P0_2, USBRX = P0_3, diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/can_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/can_api.c index 0e45ee8d91a..0858f38ca27 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/can_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/can_api.c @@ -13,14 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include -#include - #include "can_api.h" + #include "cmsis.h" #include "pinmap.h" #include "error.h" +#include +#include + +#define CAN_NUM 2 + /* Acceptance filter mode in AFMR register */ #define ACCF_OFF 0x01 #define ACCF_BYPASS 0x02 @@ -60,6 +63,9 @@ struct CANMsg { }; typedef struct CANMsg CANMsg; +static uint32_t can_irq_ids[CAN_NUM] = {0}; +static can_irq_handler irq_handler; + static uint32_t can_disable(can_t *obj) { uint32_t sm = obj->dev->MOD; obj->dev->MOD |= 1; @@ -72,6 +78,101 @@ static inline void can_enable(can_t *obj) { } } +int can_mode(can_t *obj, CanMode mode) +{ + return 0; // not implemented +} + +static inline void can_irq(uint32_t icr, uint32_t index) { + uint32_t i; + + for(i = 0; i < 8; i++) + { + if((can_irq_ids[index] != 0) && (icr & (1 << i))) + { + switch (i) { + case 0: irq_handler(can_irq_ids[index], IRQ_RX); break; + case 1: irq_handler(can_irq_ids[index], IRQ_TX); break; + case 2: irq_handler(can_irq_ids[index], IRQ_ERROR); break; + case 3: irq_handler(can_irq_ids[index], IRQ_OVERRUN); break; + case 4: irq_handler(can_irq_ids[index], IRQ_WAKEUP); break; + case 5: irq_handler(can_irq_ids[index], IRQ_PASSIVE); break; + case 6: irq_handler(can_irq_ids[index], IRQ_ARB); break; + case 7: irq_handler(can_irq_ids[index], IRQ_BUS); break; + case 8: irq_handler(can_irq_ids[index], IRQ_READY); break; + } + } + } +} + +// Have to check that the CAN block is active before reading the Interrupt +// Control Register, or the mbed hangs +void can_irq_n() { + uint32_t icr; + + if(LPC_SC->PCONP & (1 << 13)) { + icr = LPC_CAN1->ICR & 0x1FF; + can_irq(icr, 0); + } + + if(LPC_SC->PCONP & (1 << 14)) { + icr = LPC_CAN2->ICR & 0x1FF; + can_irq(icr, 1); + } +} + +// Register CAN object's irq handler +void can_irq_init(can_t *obj, can_irq_handler handler, uint32_t id) { + irq_handler = handler; + can_irq_ids[obj->index] = id; +} + +// Unregister CAN object's irq handler +void can_irq_free(can_t *obj) { + obj->dev->IER &= ~(1); + can_irq_ids[obj->index] = 0; + + if ((can_irq_ids[0] == 0) && (can_irq_ids[1] == 0)) { + NVIC_DisableIRQ(CAN_IRQn); + } +} + +// Clear or set a irq +void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable) { + uint32_t ier; + + switch (type) { + case IRQ_RX: ier = (1 << 0); break; + case IRQ_TX: ier = (1 << 1); break; + case IRQ_ERROR: ier = (1 << 2); break; + case IRQ_OVERRUN: ier = (1 << 3); break; + case IRQ_WAKEUP: ier = (1 << 4); break; + case IRQ_PASSIVE: ier = (1 << 5); break; + case IRQ_ARB: ier = (1 << 6); break; + case IRQ_BUS: ier = (1 << 7); break; + case IRQ_READY: ier = (1 << 8); break; + default: return; + } + + obj->dev->MOD |= 1; + if(enable == 0) { + obj->dev->IER &= ~ier; + } + else { + obj->dev->IER |= ier; + } + obj->dev->MOD &= ~(1); + + // Enable NVIC if at least 1 interrupt is active + if(LPC_CAN1->IER | LPC_CAN2->IER != 0) { + NVIC_SetVector(CAN_IRQn, (uint32_t) &can_irq_n); + NVIC_EnableIRQ(CAN_IRQn); + } + else { + NVIC_DisableIRQ(CAN_IRQn); + } +} + // This table has the sampling points as close to 75% as possible. The first // value is TSEG1, the second TSEG2. static const int timing_pts[23][2] = { @@ -132,6 +233,7 @@ static unsigned int can_speed(unsigned int sclk, unsigned int pclk, unsigned int } return btr; + } void can_init(can_t *obj, PinName rd, PinName td) { @@ -141,19 +243,24 @@ void can_init(can_t *obj, PinName rd, PinName td) { if ((int)obj->dev == NC) { error("CAN pin mapping failed"); } - + switch ((int)obj->dev) { case CAN_1: LPC_SC->PCONP |= 1 << 13; break; case CAN_2: LPC_SC->PCONP |= 1 << 14; break; } - + pinmap_pinout(rd, PinMap_CAN_RD); pinmap_pinout(td, PinMap_CAN_TD); + switch ((int)obj->dev) { + case CAN_1: obj->index = 0; break; + case CAN_2: obj->index = 1; break; + } + can_reset(obj); obj->dev->IER = 0; // Disable Interrupts can_frequency(obj, 100000); - + LPC_CANAF->AFMR = ACCF_BYPASS; // Bypass Filter } @@ -166,8 +273,9 @@ void can_free(can_t *obj) { int can_frequency(can_t *obj, int f) { int pclk = PeripheralClock; - int btr = can_speed(SystemCoreClock, pclk, (unsigned int)f, 1); + int btr = can_speed(SystemCoreClock, pclk, (unsigned int)f, 1); + if (btr > 0) { uint32_t modmask = can_disable(obj); obj->dev->BTR = btr; @@ -181,16 +289,16 @@ int can_frequency(can_t *obj, int f) { int can_write(can_t *obj, CAN_Message msg, int cc) { unsigned int CANStatus; CANMsg m; - + can_enable(obj); - + m.id = msg.id ; m.dlc = msg.len & 0xF; m.rtr = msg.type; m.type = msg.format; memcpy(m.data, msg.data, msg.len); const unsigned int *buf = (const unsigned int *)&m; - + CANStatus = obj->dev->SR; if (CANStatus & 0x00000004) { obj->dev->TFI1 = buf[0] & 0xC00F0000; @@ -203,7 +311,7 @@ int can_write(can_t *obj, CAN_Message msg, int cc) { obj->dev->CMR = 0x21; } return 1; - + } else if (CANStatus & 0x00000400) { obj->dev->TFI2 = buf[0] & 0xC00F0000; obj->dev->TID2 = buf[1]; @@ -215,7 +323,7 @@ int can_write(can_t *obj, CAN_Message msg, int cc) { obj->dev->CMR = 0x41; } return 1; - + } else if (CANStatus & 0x00040000) { obj->dev->TFI3 = buf[0] & 0xC00F0000; obj->dev->TID3 = buf[1]; @@ -228,23 +336,23 @@ int can_write(can_t *obj, CAN_Message msg, int cc) { } return 1; } - + return 0; } int can_read(can_t *obj, CAN_Message *msg) { CANMsg x; unsigned int *i = (unsigned int *)&x; - + can_enable(obj); - + if (obj->dev->GSR & 0x1) { *i++ = obj->dev->RFS; // Frame *i++ = obj->dev->RID; // ID *i++ = obj->dev->RDA; // Data A *i++ = obj->dev->RDB; // Data B obj->dev->CMR = 0x04; // release receive buffer - + msg->id = x.id; msg->len = x.dlc; msg->format = (x.type)? CANExtended : CANStandard; @@ -252,7 +360,7 @@ int can_read(can_t *obj, CAN_Message *msg) { memcpy(msg->data,x.data,x.dlc); return 1; } - + return 0; } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/device.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/device.h index aff691f1cc1..c9bd8d0d0db 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/device.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/device.h @@ -41,8 +41,8 @@ #define DEVICE_PWMOUT 1 -#define DEVICE_SEMIHOST 0 // Need HW? -#define DEVICE_LOCALFILESYSTEM 0 // Need HW? +#define DEVICE_SEMIHOST 0 +#define DEVICE_LOCALFILESYSTEM 0 #define DEVICE_ID_LENGTH 32 #define DEVICE_MAC_OFFSET 20 diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/objects.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/objects.h index 7eb68f1a1ba..e7227ba6e48 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/objects.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC408X/objects.h @@ -60,6 +60,7 @@ struct dac_s { struct can_s { LPC_CAN_TypeDef *dev; + int index; }; struct i2c_s { diff --git a/libraries/rpc/parse_pins.cpp b/libraries/rpc/parse_pins.cpp index faaa955dd27..30796803a16 100644 --- a/libraries/rpc/parse_pins.cpp +++ b/libraries/rpc/parse_pins.cpp @@ -18,10 +18,15 @@ namespace mbed { PinName parse_pins(const char *str) { -#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) +#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 , p15, p16, p17, p18, p19, p20, p21, p22, p23 , p24, p25, p26, p27, p28, p29, p30}; +#elif defined(TARGET_LPC4088) + static const PinName pin_names[] = {p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 + , p15, p16, p17, p18, p19, p20, NC, NC, p23 + , p24, p25, p26, p27, p28, p29, p30, p31, p32 + , p33, p34, NC, NC, p37, p38, p39}; #endif #if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC812) || defined(TARGET_LPC4088) @@ -46,7 +51,7 @@ PinName parse_pins(const char *str) { return port_pin((PortName)port, pin); #endif -#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) +#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC2368) } else if (str[0] == 'p') { // pn uint32_t pin = str[1] - '0'; // pn uint32_t pin2 = str[2] - '0'; // pnn @@ -57,6 +62,17 @@ PinName parse_pins(const char *str) { return NC; } return pin_names[pin - 5]; +#elif defined(TARGET_LPC4088) + } else if (str[0] == 'p') { // pn + uint32_t pin = str[1] - '0'; // pn + uint32_t pin2 = str[2] - '0'; // pnn + if (pin2 <= 9) { + pin = pin * 10 + pin2; + } + if (pin < 5 || pin > 39) { + return NC; + } + return pin_names[pin - 5]; #endif } else if (str[0] == 'L') { // LEDn diff --git a/libraries/tests/mbed/analog/main.cpp b/libraries/tests/mbed/analog/main.cpp index 6f84322ad98..0df1d3ff4c2 100644 --- a/libraries/tests/mbed/analog/main.cpp +++ b/libraries/tests/mbed/analog/main.cpp @@ -4,10 +4,6 @@ AnalogIn in(PTC2); AnalogOut out(PTE30); -#elif defined(TARGET_LPC4088) -AnalogIn in(p15); // p17 (p0.25) is connected to trimpot on OEM base board -AnalogOut out(p18); - #elif defined(TARGET_KL05Z) AnalogIn in(PTB11); // D9 AnalogOut out(PTB1); // D1 diff --git a/libraries/tests/mbed/can/main.cpp b/libraries/tests/mbed/can/main.cpp index 7ed5b71c65c..4a51923f8bb 100644 --- a/libraries/tests/mbed/can/main.cpp +++ b/libraries/tests/mbed/can/main.cpp @@ -4,7 +4,11 @@ Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can1(p9, p10); +#if defined(TARGET_LPC4088) +CAN can2(p34, p33); +#else CAN can2(p30, p29); +#endif char counter = 0; void printmsg(char *title, CANMessage *msg) { diff --git a/libraries/tests/mbed/can_interrupt/main.cpp b/libraries/tests/mbed/can_interrupt/main.cpp index 71846e99fea..979e7ac3d9c 100644 --- a/libraries/tests/mbed/can_interrupt/main.cpp +++ b/libraries/tests/mbed/can_interrupt/main.cpp @@ -4,7 +4,11 @@ Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can1(p9, p10); +#if defined(TARGET_LPC4088) +CAN can2(p34, p33); +#else CAN can2(p30, p29); +#endif char counter = 0; void printmsg(char *title, CANMessage *msg) { diff --git a/libraries/tests/mbed/i2c_TMP102/main.cpp b/libraries/tests/mbed/i2c_TMP102/main.cpp index 40d6b50c9cb..6453e8ecb08 100644 --- a/libraries/tests/mbed/i2c_TMP102/main.cpp +++ b/libraries/tests/mbed/i2c_TMP102/main.cpp @@ -7,6 +7,9 @@ TMP102 temperature(PTC9, PTC8, 0x90); #elif defined(TARGET_LPC812) TMP102 temperature(D10, D11, 0x90); +#elif defined(TARGET_LPC4088) +TMP102 temperature(p9, p10, 0x90); + #else TMP102 temperature(p28, p27, 0x90); #endif diff --git a/libraries/tests/mbed/i2c_slave/main.cpp b/libraries/tests/mbed/i2c_slave/main.cpp index 1482d0a96e4..bd0dd5fc8a2 100644 --- a/libraries/tests/mbed/i2c_slave/main.cpp +++ b/libraries/tests/mbed/i2c_slave/main.cpp @@ -6,6 +6,8 @@ #if defined(TARGET_KL25Z) I2CSlave slave(PTE0, PTE1); +#elif defined(TARGET_LPC4088) +I2CSlave slave(p9, p10); #else I2CSlave slave(p28, p27); #endif diff --git a/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp b/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp index 275f3f7b2a3..4406c73cb3c 100644 --- a/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp +++ b/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp @@ -23,6 +23,10 @@ void in_handler() { #define PIN_OUT D10 #define PIN_IN D11 +#elif defined(TARGET_LPC4088) +#define PIN_IN (p11) +#define PIN_OUT (p12) + #else #define PIN_IN (p5) #define PIN_OUT (p25) diff --git a/libraries/tests/mbed/interrupt_chaining/ticker/main.cpp b/libraries/tests/mbed/interrupt_chaining/ticker/main.cpp index 21536a7d74e..b8613002a2b 100644 --- a/libraries/tests/mbed/interrupt_chaining/ticker/main.cpp +++ b/libraries/tests/mbed/interrupt_chaining/ticker/main.cpp @@ -3,7 +3,7 @@ #include "cmsis.h" #include "test_env.h" -#if defined(TARGET_LPC1768) +#if defined(TARGET_LPC1768) || defined(TARGET_LPC4088) #define TIMER_IRQ TIMER3_IRQn #elif defined(TARGET_LPC11U24) #define TIMER_IRQ TIMER_32_1_IRQn diff --git a/libraries/tests/mbed/interruptin/main.cpp b/libraries/tests/mbed/interruptin/main.cpp index aabdb7c8ceb..4fb647f20e5 100644 --- a/libraries/tests/mbed/interruptin/main.cpp +++ b/libraries/tests/mbed/interruptin/main.cpp @@ -25,6 +25,10 @@ void in_handler() { #define PIN_OUT dp1 #define PIN_IN dp2 +#elif defined(TARGET_LPC4088) +#define PIN_IN (p11) +#define PIN_OUT (p12) + #else #define PIN_IN (p5) #define PIN_OUT (p25) diff --git a/libraries/tests/mbed/interruptin_2/main.cpp b/libraries/tests/mbed/interruptin_2/main.cpp index 4fb1df5f721..7726883d72c 100644 --- a/libraries/tests/mbed/interruptin_2/main.cpp +++ b/libraries/tests/mbed/interruptin_2/main.cpp @@ -1,5 +1,19 @@ #include "mbed.h" - + +#if defined(TARGET_LPC4088) +InterruptIn button(p18); +InterruptIn button1(p17); +InterruptIn button2(p16); +InterruptIn button3(p15); +InterruptIn button4(p14); +InterruptIn button5(p13); +InterruptIn button6(p12); +InterruptIn button7(p11); +InterruptIn button8(p10); +InterruptIn button9(p9); +DigitalOut led(LED1); +DigitalOut flash(LED4); +#else InterruptIn button(p30); InterruptIn button1(p29); InterruptIn button2(p28); @@ -12,6 +26,7 @@ InterruptIn button8(p22); InterruptIn button9(p21); DigitalOut led(LED1); DigitalOut flash(LED4); +#endif void flip() { led = !led; diff --git a/libraries/tests/mbed/portinout/main.cpp b/libraries/tests/mbed/portinout/main.cpp index 5fae4172821..db3b291dc9c 100644 --- a/libraries/tests/mbed/portinout/main.cpp +++ b/libraries/tests/mbed/portinout/main.cpp @@ -9,7 +9,7 @@ #define P2_2 (1 << 25) // p1.25 #define PORT_2 Port1 -#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) +#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) #define P1_1 (1 << 9) // p0.9 -> p5 #define P1_2 (1 << 8) // p0.8 -> p6 #define PORT_1 Port0 @@ -18,6 +18,15 @@ #define P2_2 (1 << 0) // p2.0 -> p26 #define PORT_2 Port2 +#elif defined(TARGET_LPC4088) +#define P1_1 (1 << 7) // p0.7 -> p13 +#define P1_2 (1 << 6) // p0.6 -> p14 +#define PORT_1 Port0 + +#define P2_1 (1 << 2) // p1.2 -> p30 +#define P2_2 (1 << 3) // p1.3 -> p29 +#define PORT_2 Port1 + #elif defined(TARGET_LPC1114) #define P1_1 (1 << 9) // p0.9 #define P1_2 (1 << 8) // p0.8 diff --git a/libraries/tests/mbed/portout_portin/main.cpp b/libraries/tests/mbed/portout_portin/main.cpp index 2e43008b2b5..5a4e8c874b4 100644 --- a/libraries/tests/mbed/portout_portin/main.cpp +++ b/libraries/tests/mbed/portout_portin/main.cpp @@ -9,7 +9,7 @@ #define P2_2 (1 << 25) // p1.25 #define PORT_2 Port1 -#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) +#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) #define P1_1 (1 << 9) // p0.9 -> p5 #define P1_2 (1 << 8) // p0.8 -> p6 #define PORT_1 Port0 @@ -18,6 +18,15 @@ #define P2_2 (1 << 0) // p2.0 -> p26 #define PORT_2 Port2 +#elif defined(TARGET_LPC4088) +#define P1_1 (1 << 7) // p0.7 -> p13 +#define P1_2 (1 << 6) // p0.6 -> p14 +#define PORT_1 Port0 + +#define P2_1 (1 << 2) // p1.2 -> p30 +#define P2_2 (1 << 3) // p1.3 -> p29 +#define PORT_2 Port1 + #elif defined(TARGET_LPC1114) #define P1_1 (1 << 9) // p0.9 #define P1_2 (1 << 8) // p0.8 diff --git a/workspace_tools/tests.py b/workspace_tools/tests.py index f355d8a46b5..366049327cb 100644 --- a/workspace_tools/tests.py +++ b/workspace_tools/tests.py @@ -119,7 +119,7 @@ "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "automated": True, "peripherals": ["analog_loop"], - "mcu": ["LPC1768", "LPC2368", "KL25Z"] + "mcu": ["LPC1768", "LPC2368", "KL25Z", "LPC4088"] }, { "id": "MBED_A9", "description": "Serial Echo at 115200", @@ -259,7 +259,7 @@ "source_dir": join(TEST_DIR, "mbed", "sleep"), "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB], "duration": 30, - "mcu": ["LPC1768", "LPC11U24"] + "mcu": ["LPC1768", "LPC11U24", "LPC4088"] }, { "id": "MBED_5", "description": "PWM", @@ -395,13 +395,13 @@ "id": "MBED_30", "description": "CAN network test", "source_dir": join(TEST_DIR, "mbed", "can"), "dependencies": [MBED_LIBRARIES], - "mcu": ["LPC1768"] + "mcu": ["LPC1768", "LPC4088"] }, { "id": "MBED_31", "description": "CAN network test using interrupts", "source_dir": join(TEST_DIR, "mbed", "can_interrupt"), "dependencies": [MBED_LIBRARIES], - "mcu": ["LPC1768"] + "mcu": ["LPC1768", "LPC4088"] }, # CMSIS RTOS tests