diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/LPC1114.sct b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/LPC1114.sct index 0a7772d0c31..44850e6a947 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/LPC1114.sct +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/LPC1114.sct @@ -1,14 +1,16 @@ LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k) + ER_IROM1 0x00000000 0x8000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } - ; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0 - ; 8KB - 0xC0 = 0xF40 - RW_IRAM1 0x100000C0 0xF40 { + + ; 48 vectors * 4 bytes = 0xC0 for remap + RW_IRAM1 (0x10000000+0xC0) (0x1000-0xC0) { .ANY (+RW +ZI) } + } diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s index 84df623515f..2f24b504aa5 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s @@ -63,20 +63,20 @@ __Vectors DCD __initial_sp ; Top of Stack DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler - DCD FLEX_INT0_IRQHandler ; All GPIO pin can be routed to FLEX_INTx - DCD FLEX_INT1_IRQHandler ; - DCD FLEX_INT2_IRQHandler ; - DCD FLEX_INT3_IRQHandler ; - DCD FLEX_INT4_IRQHandler ; - DCD FLEX_INT5_IRQHandler ; - DCD FLEX_INT6_IRQHandler ; - DCD FLEX_INT7_IRQHandler ; - DCD GINT0_IRQHandler ; - DCD GINT1_IRQHandler ; PIO0 (0:7) - DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; - DCD Reserved_IRQHandler ; - DCD Reserved_IRQHandler ; + DCD SLWU_INT0_IRQHandler ; Start logic wake-up interrupt 0 + DCD SLWU_INT1_IRQHandler ; Start logic wake-up interrupt 1 + DCD SLWU_INT2_IRQHandler ; Start logic wake-up interrupt 2 + DCD SLWU_INT3_IRQHandler ; Start logic wake-up interrupt 3 + DCD SLWU_INT4_IRQHandler ; Start logic wake-up interrupt 4 + DCD SLWU_INT5_IRQHandler ; Start logic wake-up interrupt 5 + DCD SLWU_INT6_IRQHandler ; Start logic wake-up interrupt 6 + DCD SLWU_INT7_IRQHandler ; Start logic wake-up interrupt 7 + DCD SLWU_INT8_IRQHandler ; Start logic wake-up interrupt 8 + DCD SLWU_INT9_IRQHandler ; Start logic wake-up interrupt 9 + DCD SLWU_INT10_IRQHandler ; Start logic wake-up interrupt 10 + DCD SLWU_INT11_IRQHandler ; Start logic wake-up interrupt 11 + DCD SLWU_INT12_IRQHandler ; Start logic wake-up interrupt 12 + DCD C_CAN_IRQHandler ; C_CAN DCD SSP1_IRQHandler ; SSP1 DCD I2C_IRQHandler ; I2C DCD TIMER16_0_IRQHandler ; 16-bit Timer0 @@ -85,19 +85,19 @@ __Vectors DCD __initial_sp ; Top of Stack DCD TIMER32_1_IRQHandler ; 32-bit Timer1 DCD SSP0_IRQHandler ; SSP0 DCD UART_IRQHandler ; UART - DCD USB_IRQHandler ; USB IRQ - DCD USB_FIQHandler ; USB FIQ + DCD Reserved_IRQHandler ; Reserved + DCD Reserved_IRQHandler ; Reserved DCD ADC_IRQHandler ; A/D Converter DCD WDT_IRQHandler ; Watchdog timer DCD BOD_IRQHandler ; Brown Out Detect - DCD FMC_IRQHandler ; IP2111 Flash Memory Controller - DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; Reserved DCD Reserved_IRQHandler ; Reserved + DCD PIO_3_IRQHandler ; GPIO interrupt status of port 3 + DCD PIO_2_IRQHandler ; GPIO interrupt status of port 2 + DCD PIO_1_IRQHandler ; GPIO interrupt status of port 1 + DCD PIO_0_IRQHandler ; GPIO interrupt status of port 0 ;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space - + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -185,17 +185,14 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - + IF :LNOT::DEF:NO_CRP AREA |.ARM.__at_0x02FC|, CODE, READONLY CRP_Key DCD 0xFFFFFFFF ENDIF - AREA |.text|, CODE, READONLY - - ; Reset Handler Reset_Handler PROC @@ -208,14 +205,10 @@ Reset_Handler PROC BX R0 ENDP -; Dummy Exception Handlers (infinite loops which can be modified) +; Dummy Exception Handlers (infinite loops which can be modified) ; now, under COMMON NMI.c and NMI.h, a real NMI handler is created if NMI is enabled ; for particular peripheral. -;NMI_Handler PROC -; EXPORT NMI_Handler [WEAK] -; B . -; ENDP HardFault_Handler\ PROC EXPORT HardFault_Handler [WEAK] @@ -239,18 +232,22 @@ Reserved_IRQHandler PROC ENDP Default_Handler PROC -; for LPC11Uxx (With USB) +; for LPC1114 EXPORT NMI_Handler [WEAK] - EXPORT FLEX_INT0_IRQHandler [WEAK] - EXPORT FLEX_INT1_IRQHandler [WEAK] - EXPORT FLEX_INT2_IRQHandler [WEAK] - EXPORT FLEX_INT3_IRQHandler [WEAK] - EXPORT FLEX_INT4_IRQHandler [WEAK] - EXPORT FLEX_INT5_IRQHandler [WEAK] - EXPORT FLEX_INT6_IRQHandler [WEAK] - EXPORT FLEX_INT7_IRQHandler [WEAK] - EXPORT GINT0_IRQHandler [WEAK] - EXPORT GINT1_IRQHandler [WEAK] + EXPORT SLWU_INT0_IRQHandler [WEAK] + EXPORT SLWU_INT1_IRQHandler [WEAK] + EXPORT SLWU_INT2_IRQHandler [WEAK] + EXPORT SLWU_INT3_IRQHandler [WEAK] + EXPORT SLWU_INT4_IRQHandler [WEAK] + EXPORT SLWU_INT5_IRQHandler [WEAK] + EXPORT SLWU_INT6_IRQHandler [WEAK] + EXPORT SLWU_INT7_IRQHandler [WEAK] + EXPORT SLWU_INT8_IRQHandler [WEAK] + EXPORT SLWU_INT9_IRQHandler [WEAK] + EXPORT SLWU_INT10_IRQHandler [WEAK] + EXPORT SLWU_INT11_IRQHandler [WEAK] + EXPORT SLWU_INT12_IRQHandler [WEAK] + EXPORT C_CAN_IRQHandler [WEAK] EXPORT SSP1_IRQHandler [WEAK] EXPORT I2C_IRQHandler [WEAK] EXPORT TIMER16_0_IRQHandler [WEAK] @@ -259,26 +256,30 @@ Default_Handler PROC EXPORT TIMER32_1_IRQHandler [WEAK] EXPORT SSP0_IRQHandler [WEAK] EXPORT UART_IRQHandler [WEAK] - - EXPORT USB_IRQHandler [WEAK] - EXPORT USB_FIQHandler [WEAK] EXPORT ADC_IRQHandler [WEAK] EXPORT WDT_IRQHandler [WEAK] EXPORT BOD_IRQHandler [WEAK] - EXPORT FMC_IRQHandler [WEAK] - EXPORT USBWakeup_IRQHandler [WEAK] + EXPORT PIO_3_IRQHandler [WEAK] + EXPORT PIO_2_IRQHandler [WEAK] + EXPORT PIO_1_IRQHandler [WEAK] + EXPORT PIO_0_IRQHandler [WEAK] NMI_Handler -FLEX_INT0_IRQHandler -FLEX_INT1_IRQHandler -FLEX_INT2_IRQHandler -FLEX_INT3_IRQHandler -FLEX_INT4_IRQHandler -FLEX_INT5_IRQHandler -FLEX_INT6_IRQHandler -FLEX_INT7_IRQHandler -GINT0_IRQHandler -GINT1_IRQHandler + +SLWU_INT0_IRQHandler +SLWU_INT1_IRQHandler +SLWU_INT2_IRQHandler +SLWU_INT3_IRQHandler +SLWU_INT4_IRQHandler +SLWU_INT5_IRQHandler +SLWU_INT6_IRQHandler +SLWU_INT7_IRQHandler +SLWU_INT8_IRQHandler +SLWU_INT9_IRQHandler +SLWU_INT10_IRQHandler +SLWU_INT11_IRQHandler +SLWU_INT12_IRQHandler +C_CAN_IRQHandler SSP1_IRQHandler I2C_IRQHandler TIMER16_0_IRQHandler @@ -287,13 +288,13 @@ TIMER32_0_IRQHandler TIMER32_1_IRQHandler SSP0_IRQHandler UART_IRQHandler -USB_IRQHandler -USB_FIQHandler ADC_IRQHandler WDT_IRQHandler BOD_IRQHandler -FMC_IRQHandler -USBWakeup_IRQHandler +PIO_3_IRQHandler +PIO_2_IRQHandler +PIO_1_IRQHandler +PIO_0_IRQHandler B . diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s index 310568eb276..33277170714 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11XX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s @@ -46,20 +46,20 @@ __Vectors DCD __initial_sp ; Top of Stack DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler - DCD FLEX_INT0_IRQHandler ; All GPIO pin can be routed to FLEX_INTx - DCD FLEX_INT1_IRQHandler ; - DCD FLEX_INT2_IRQHandler ; - DCD FLEX_INT3_IRQHandler ; - DCD FLEX_INT4_IRQHandler ; - DCD FLEX_INT5_IRQHandler ; - DCD FLEX_INT6_IRQHandler ; - DCD FLEX_INT7_IRQHandler ; - DCD GINT0_IRQHandler ; - DCD GINT1_IRQHandler ; PIO0 (0:7) - DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; - DCD Reserved_IRQHandler ; - DCD Reserved_IRQHandler ; + DCD SLWU_INT0_IRQHandler ; Start logic wake-up interrupt 0 + DCD SLWU_INT1_IRQHandler ; Start logic wake-up interrupt 1 + DCD SLWU_INT2_IRQHandler ; Start logic wake-up interrupt 2 + DCD SLWU_INT3_IRQHandler ; Start logic wake-up interrupt 3 + DCD SLWU_INT4_IRQHandler ; Start logic wake-up interrupt 4 + DCD SLWU_INT5_IRQHandler ; Start logic wake-up interrupt 5 + DCD SLWU_INT6_IRQHandler ; Start logic wake-up interrupt 6 + DCD SLWU_INT7_IRQHandler ; Start logic wake-up interrupt 7 + DCD SLWU_INT8_IRQHandler ; Start logic wake-up interrupt 8 + DCD SLWU_INT9_IRQHandler ; Start logic wake-up interrupt 9 + DCD SLWU_INT10_IRQHandler ; Start logic wake-up interrupt 10 + DCD SLWU_INT11_IRQHandler ; Start logic wake-up interrupt 11 + DCD SLWU_INT12_IRQHandler ; Start logic wake-up interrupt 12 + DCD C_CAN_IRQHandler ; C_CAN DCD SSP1_IRQHandler ; SSP1 DCD I2C_IRQHandler ; I2C DCD TIMER16_0_IRQHandler ; 16-bit Timer0 @@ -68,19 +68,19 @@ __Vectors DCD __initial_sp ; Top of Stack DCD TIMER32_1_IRQHandler ; 32-bit Timer1 DCD SSP0_IRQHandler ; SSP0 DCD UART_IRQHandler ; UART - DCD USB_IRQHandler ; USB IRQ - DCD USB_FIQHandler ; USB FIQ + DCD Reserved_IRQHandler ; Reserved + DCD Reserved_IRQHandler ; Reserved DCD ADC_IRQHandler ; A/D Converter DCD WDT_IRQHandler ; Watchdog timer DCD BOD_IRQHandler ; Brown Out Detect - DCD FMC_IRQHandler ; IP2111 Flash Memory Controller - DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; Reserved DCD Reserved_IRQHandler ; Reserved - DCD Reserved_IRQHandler ; Reserved - + DCD PIO_3_IRQHandler ; GPIO interrupt status of port 3 + DCD PIO_2_IRQHandler ; GPIO interrupt status of port 2 + DCD PIO_1_IRQHandler ; GPIO interrupt status of port 1 + DCD PIO_0_IRQHandler ; GPIO interrupt status of port 0 + ;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space - + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -92,7 +92,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -103,7 +103,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -114,7 +114,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -125,7 +125,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -136,7 +136,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -147,7 +147,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill + DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -158,7 +158,6 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill @@ -168,17 +167,16 @@ __Vectors DCD __initial_sp ; Top of Stack DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill DCD 0xFFFFFFFF ; Datafill - + DCD 0xFFFFFFFF ; Datafill + IF :LNOT::DEF:NO_CRP AREA |.ARM.__at_0x02FC|, CODE, READONLY CRP_Key DCD 0xFFFFFFFF ENDIF - AREA |.text|, CODE, READONLY - ; Reset Handler Reset_Handler PROC @@ -222,18 +220,22 @@ Reserved_IRQHandler PROC ENDP Default_Handler PROC -; for LPC11Uxx (With USB) +; for LPC1114 EXPORT NMI_Handler [WEAK] - EXPORT FLEX_INT0_IRQHandler [WEAK] - EXPORT FLEX_INT1_IRQHandler [WEAK] - EXPORT FLEX_INT2_IRQHandler [WEAK] - EXPORT FLEX_INT3_IRQHandler [WEAK] - EXPORT FLEX_INT4_IRQHandler [WEAK] - EXPORT FLEX_INT5_IRQHandler [WEAK] - EXPORT FLEX_INT6_IRQHandler [WEAK] - EXPORT FLEX_INT7_IRQHandler [WEAK] - EXPORT GINT0_IRQHandler [WEAK] - EXPORT GINT1_IRQHandler [WEAK] + EXPORT SLWU_INT0_IRQHandler [WEAK] + EXPORT SLWU_INT1_IRQHandler [WEAK] + EXPORT SLWU_INT2_IRQHandler [WEAK] + EXPORT SLWU_INT3_IRQHandler [WEAK] + EXPORT SLWU_INT4_IRQHandler [WEAK] + EXPORT SLWU_INT5_IRQHandler [WEAK] + EXPORT SLWU_INT6_IRQHandler [WEAK] + EXPORT SLWU_INT7_IRQHandler [WEAK] + EXPORT SLWU_INT8_IRQHandler [WEAK] + EXPORT SLWU_INT9_IRQHandler [WEAK] + EXPORT SLWU_INT10_IRQHandler [WEAK] + EXPORT SLWU_INT11_IRQHandler [WEAK] + EXPORT SLWU_INT12_IRQHandler [WEAK] + EXPORT C_CAN_IRQHandler [WEAK] EXPORT SSP1_IRQHandler [WEAK] EXPORT I2C_IRQHandler [WEAK] EXPORT TIMER16_0_IRQHandler [WEAK] @@ -242,26 +244,30 @@ Default_Handler PROC EXPORT TIMER32_1_IRQHandler [WEAK] EXPORT SSP0_IRQHandler [WEAK] EXPORT UART_IRQHandler [WEAK] - - EXPORT USB_IRQHandler [WEAK] - EXPORT USB_FIQHandler [WEAK] EXPORT ADC_IRQHandler [WEAK] EXPORT WDT_IRQHandler [WEAK] EXPORT BOD_IRQHandler [WEAK] - EXPORT FMC_IRQHandler [WEAK] - EXPORT USBWakeup_IRQHandler [WEAK] + EXPORT PIO_3_IRQHandler [WEAK] + EXPORT PIO_2_IRQHandler [WEAK] + EXPORT PIO_1_IRQHandler [WEAK] + EXPORT PIO_0_IRQHandler [WEAK] NMI_Handler -FLEX_INT0_IRQHandler -FLEX_INT1_IRQHandler -FLEX_INT2_IRQHandler -FLEX_INT3_IRQHandler -FLEX_INT4_IRQHandler -FLEX_INT5_IRQHandler -FLEX_INT6_IRQHandler -FLEX_INT7_IRQHandler -GINT0_IRQHandler -GINT1_IRQHandler + +SLWU_INT0_IRQHandler +SLWU_INT1_IRQHandler +SLWU_INT2_IRQHandler +SLWU_INT3_IRQHandler +SLWU_INT4_IRQHandler +SLWU_INT5_IRQHandler +SLWU_INT6_IRQHandler +SLWU_INT7_IRQHandler +SLWU_INT8_IRQHandler +SLWU_INT9_IRQHandler +SLWU_INT10_IRQHandler +SLWU_INT11_IRQHandler +SLWU_INT12_IRQHandler +C_CAN_IRQHandler SSP1_IRQHandler I2C_IRQHandler TIMER16_0_IRQHandler @@ -270,13 +276,13 @@ TIMER32_0_IRQHandler TIMER32_1_IRQHandler SSP0_IRQHandler UART_IRQHandler -USB_IRQHandler -USB_FIQHandler ADC_IRQHandler WDT_IRQHandler BOD_IRQHandler -FMC_IRQHandler -USBWakeup_IRQHandler +PIO_3_IRQHandler +PIO_2_IRQHandler +PIO_1_IRQHandler +PIO_0_IRQHandler B . diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/PeripheralNames.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/PeripheralNames.h index e7eba416e58..724ab1ab282 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/PeripheralNames.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/PeripheralNames.h @@ -37,8 +37,7 @@ typedef enum { ADC0_3, ADC0_4, ADC0_5, - ADC0_6, - ADC0_7 + ADC0_6 } ADCName; typedef enum { @@ -51,13 +50,7 @@ typedef enum { PWM_2, PWM_3, PWM_4, - PWM_5, - PWM_6, - PWM_7, - PWM_8, - PWM_9, - PWM_10, - PWM_11 + PWM_5 } PWMName; #define STDIO_UART_TX USBTX diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/analogin_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/analogin_api.c index 2b0f0322b2a..49ad37453ef 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/analogin_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/analogin_api.c @@ -32,9 +32,9 @@ static const PinMap PinMap_ADC[] = { {P1_0 , ADC0_1, 2}, {P1_1 , ADC0_2, 2}, {P1_2 , ADC0_3, 2}, - {P1_4 , ADC0_5, 1}, - {P1_10, ADC0_6, 1}, - {P1_11, ADC0_7, 1}, + {P1_4 , ADC0_4, 1}, + {P1_10, ADC0_5, 1}, + {P1_11, ADC0_6, 1}, {NC , NC , 0} }; diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/pwmout_api.c b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/pwmout_api.c index 51be887745b..6fff9b67c1b 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/pwmout_api.c +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11XX/pwmout_api.c @@ -32,17 +32,11 @@ static const PinMap PinMap_PWM[] = { {P0_9 , PWM_2, 0x02}, /* MR1 */ /* CT16B1 */ - {P1_9 , PWM_4, 0x01}, /* MR0 */ - {P1_10, PWM_5, 0x02}, /* MR1 */ + {P1_9 , PWM_3, 0x01}, /* MR0 */ + {P1_10, PWM_4, 0x02}, /* MR1 */ /* CT32B0 */ - {P1_6 , PWM_6, 0x02}, /* MR0 */ - {P1_7 , PWM_7, 0x02}, /* MR1 */ - {P0_1 , PWM_8, 0x02}, /* MR2 */ - - /* CT32B1 */ - {P1_1 , PWM_9 ,0x03}, /* MR0 */ - {P1_2 , PWM_10,0x03}, /* MR1 */ + {P0_1 , PWM_5, 0x02}, /* MR2 */ {NC , NC ,0x00} }; @@ -52,28 +46,21 @@ typedef struct { uint8_t mr; } timer_mr; -static timer_mr pwm_timer_map[9] = { +static timer_mr pwm_timer_map[5] = { {0, 0}, /* CT16B0, MR0 */ {0, 1}, /* CT16B0, MR1 */ {1, 0}, /* CT16B1, MR0 */ {1, 1}, /* CT16B1, MR1 */ - {2, 0}, /* CT32B0, MR0 */ - {2, 1}, /* CT32B0, MR1 */ {2, 2}, /* CT32B0, MR2 */ - - {3, 0}, /* CT32B1, MR0 */ - {3, 1}, /* CT32B1, MR1 */ }; -static LPC_TMR_TypeDef *Timers[4] = { +static LPC_TMR_TypeDef *Timers[3] = { LPC_TMR16B0, LPC_TMR16B1, - LPC_TMR32B0, LPC_TMR32B1 + LPC_TMR32B0 }; -static unsigned int pwm_clock_mhz; - void pwmout_init(pwmout_t* obj, PinName pin) { // determine the channel PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM); @@ -98,8 +85,13 @@ void pwmout_init(pwmout_t* obj, PinName pin) { /* Reset Functionality on MR3 controlling the PWM period */ timer->MCR = 1 << 10; - pwm_clock_mhz = SystemCoreClock / 1000000; - + if (timer == LPC_TMR16B0 || timer == LPC_TMR16B1) { + /* Set 16-bit timer prescaler to avoid timer expire for default 20ms */ + /* This can be also modified by user application, but the prescaler value */ + /* might be trade-off to timer accuracy */ + timer->PR = 30; + } + // default to 20ms: standard for servos, and fine for e.g. brightness control pwmout_period_ms(obj, 20); pwmout_write (obj, 0); @@ -147,12 +139,13 @@ void pwmout_period_ms(pwmout_t* obj, int ms) { // Set the PWM period, keeping the duty cycle the same. void pwmout_period_us(pwmout_t* obj, int us) { int i = 0; - uint32_t period_ticks = pwm_clock_mhz * us; + uint32_t period_ticks; timer_mr tid = pwm_timer_map[obj->pwm]; LPC_TMR_TypeDef *timer = Timers[tid.timer]; uint32_t old_period_ticks = timer->MR3; - + period_ticks = (SystemCoreClock / 1000000 * us) / (timer->PR + 1); + timer->TCR = TCR_RESET; timer->MR3 = period_ticks; @@ -175,9 +168,9 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) { } void pwmout_pulsewidth_us(pwmout_t* obj, int us) { - uint32_t t_on = (uint32_t)(((uint64_t)SystemCoreClock * (uint64_t)us) / (uint64_t)1000000); timer_mr tid = pwm_timer_map[obj->pwm]; LPC_TMR_TypeDef *timer = Timers[tid.timer]; + uint32_t t_on = (uint32_t)((((uint64_t)SystemCoreClock * (uint64_t)us) / (uint64_t)1000000) / (timer->PR + 1)); timer->TCR = TCR_RESET; if (t_on > timer->MR3) { diff --git a/libraries/tests/benchmarks/all/main.cpp b/libraries/tests/benchmarks/all/main.cpp index cb7ba824ce0..4752c5e6cc1 100644 --- a/libraries/tests/benchmarks/all/main.cpp +++ b/libraries/tests/benchmarks/all/main.cpp @@ -1,7 +1,11 @@ #include "mbed.h" DigitalOut out(p5); +#if defined(TARGET_LPC1114) +AnalogIn in(p20); +#else AnalogIn in(p19); +#endif volatile float w, x, y, z; int main() { diff --git a/libraries/tests/benchmarks/mbed/main.cpp b/libraries/tests/benchmarks/mbed/main.cpp index a8a72fe9b06..aa99784a3b1 100644 --- a/libraries/tests/benchmarks/mbed/main.cpp +++ b/libraries/tests/benchmarks/mbed/main.cpp @@ -1,7 +1,11 @@ #include "mbed.h" DigitalOut out(p5); +#if defined(TARGET_LPC1114) +AnalogIn in(p20); +#else AnalogIn in(p19); +#endif int main() { while(1) { diff --git a/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp b/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp index 4406c73cb3c..65c3b6fdcf5 100644 --- a/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp +++ b/libraries/tests/mbed/interrupt_chaining/interruptin/main.cpp @@ -27,6 +27,10 @@ void in_handler() { #define PIN_IN (p11) #define PIN_OUT (p12) +#elif defined(TARGET_LPC1114) +#define PIN_IN (dp1) +#define PIN_OUT (dp2) + #else #define PIN_IN (p5) #define PIN_OUT (p25) diff --git a/libraries/tests/mbed/pwm/pwm.cpp b/libraries/tests/mbed/pwm/pwm.cpp index cb29e52ebca..76157ea9ff0 100644 --- a/libraries/tests/mbed/pwm/pwm.cpp +++ b/libraries/tests/mbed/pwm/pwm.cpp @@ -26,14 +26,14 @@ int main() { printf("Initialize PWM on pin 26 with duty cycle: %.2f\n", pwm_p26.read()); #elif defined(TARGET_LPC1114) - PwmOut pwm_p13(p13); // P1_1 - PwmOut pwm_p14(p14); // P1_2 + PwmOut pwm_dp24(dp24); // P0_1 + PwmOut pwm_dp18(dp18); // P1_9 - pwm_p13.write(0.75); - pwm_p14.write(0.50); + pwm_dp24.write(0.75); + pwm_dp18.write(0.50); - printf("Initialize PWM on pin 13 with duty cycle: %.2f\n", pwm_p13.read()); - printf("Initialize PWM on pin 14 with duty cycle: %.2f\n", pwm_p14.read()); + printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_dp24.read()); + printf("Initialize PWM on pin 18 with duty cycle: %.2f\n", pwm_dp18.read()); #elif defined(TARGET_KL25Z) PwmOut pwm_d2(D2);