mirror of https://github.com/ARMmbed/mbed-os.git
Merge remote-tracking branch 'upstream/master' into lpc4088
commit
00cfdbad2a
|
@ -24,6 +24,7 @@ NXP:
|
||||||
* [LPC1768](http://mbed.org/handbook/mbed-NXP-LPC1768) (Cortex-M3)
|
* [LPC1768](http://mbed.org/handbook/mbed-NXP-LPC1768) (Cortex-M3)
|
||||||
* [LPC11U24](http://mbed.org/handbook/mbed-NXP-LPC11U24) (Cortex-M0)
|
* [LPC11U24](http://mbed.org/handbook/mbed-NXP-LPC11U24) (Cortex-M0)
|
||||||
* LPC2368 (ARM7TDMI-S)
|
* LPC2368 (ARM7TDMI-S)
|
||||||
|
* LPC810 (Cortex-M0+)
|
||||||
* LPC812 (Cortex-M0+)
|
* LPC812 (Cortex-M0+)
|
||||||
* LPC4088 (Cortex-M4)
|
* LPC4088 (Cortex-M4)
|
||||||
* LPC4330 (Cortex-M4 + Cortex-M0)
|
* LPC4330 (Cortex-M4 + Cortex-M0)
|
||||||
|
|
|
@ -39,7 +39,7 @@ typedef enum {
|
||||||
/* Include configuration for specific target */
|
/* Include configuration for specific target */
|
||||||
#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
|
#if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
|
||||||
#include "USBEndpoints_LPC17_LPC23.h"
|
#include "USBEndpoints_LPC17_LPC23.h"
|
||||||
#elif defined(TARGET_LPC11U24) || defined(TARGET_LPC1347)
|
#elif defined(TARGET_LPC11UXX) || defined(TARGET_LPC1347)
|
||||||
#include "USBEndpoints_LPC11U.h"
|
#include "USBEndpoints_LPC11U.h"
|
||||||
#elif defined(TARGET_KL25Z)
|
#elif defined(TARGET_KL25Z)
|
||||||
#include "USBEndpoints_KL25Z.h"
|
#include "USBEndpoints_KL25Z.h"
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
|
|
||||||
bool isFile(void);
|
bool isFile(void);
|
||||||
FileLike* file(void);
|
FileLike* file(void);
|
||||||
|
bool exists(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const char* file_name;
|
const char* file_name;
|
||||||
|
|
|
@ -36,9 +36,6 @@ FilePath::FilePath(const char* file_path) : file_name(NULL), fb(NULL) {
|
||||||
file_name++;
|
file_name++;
|
||||||
}
|
}
|
||||||
|
|
||||||
FileBase::lookup(file_system, len);
|
|
||||||
|
|
||||||
|
|
||||||
fb = FileBase::lookup(file_system, len);
|
fb = FileBase::lookup(file_system, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +44,8 @@ const char* FilePath::fileName(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FilePath::isFileSystem(void) {
|
bool FilePath::isFileSystem(void) {
|
||||||
|
if (NULL == fb)
|
||||||
|
return false;
|
||||||
return (fb->getPathType() == FileSystemPathType);
|
return (fb->getPathType() == FileSystemPathType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +57,8 @@ FileSystemLike* FilePath::fileSystem(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FilePath::isFile(void) {
|
bool FilePath::isFile(void) {
|
||||||
|
if (NULL == fb)
|
||||||
|
return false;
|
||||||
return (fb->getPathType() == FilePathType);
|
return (fb->getPathType() == FilePathType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,4 +69,8 @@ FileLike* FilePath::file(void) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FilePath::exists(void) {
|
||||||
|
return fb != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mbed
|
} // namespace mbed
|
||||||
|
|
|
@ -163,7 +163,9 @@ extern "C" FILEHANDLE PREFIX(_open)(const char* name, int openmode) {
|
||||||
} else {
|
} else {
|
||||||
FilePath path(name);
|
FilePath path(name);
|
||||||
|
|
||||||
if (path.isFile()) {
|
if (!path.exists())
|
||||||
|
return -1;
|
||||||
|
else if (path.isFile()) {
|
||||||
res = path.file();
|
res = path.file();
|
||||||
} else {
|
} else {
|
||||||
FileSystemLike *fs = path.fileSystem();
|
FileSystemLike *fs = path.fileSystem();
|
||||||
|
|
|
@ -0,0 +1,325 @@
|
||||||
|
;/*****************************************************************************
|
||||||
|
; * @file: startup_LPC11xx.s
|
||||||
|
; * @purpose: CMSIS Cortex-M0 Core Device Startup File
|
||||||
|
; * for the NXP LPC11xx Device Series
|
||||||
|
; * @version: V1.0
|
||||||
|
; * @date: 25. Nov. 2008
|
||||||
|
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
; *
|
||||||
|
; * Copyright (C) 2008 ARM Limited. All rights reserved.
|
||||||
|
; * ARM Limited (ARM) is supplying this software for use with Cortex-M0
|
||||||
|
; * processor based microcontrollers. This file can be freely distributed
|
||||||
|
; * within development tools that are supporting such ARM based processors.
|
||||||
|
; *
|
||||||
|
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
; *
|
||||||
|
; *****************************************************************************/
|
||||||
|
|
||||||
|
Stack_Size EQU 0x00000400
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __initial_sp
|
||||||
|
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp EQU 0x10001800 ; Top of RAM from LPC11U
|
||||||
|
|
||||||
|
|
||||||
|
Heap_Size EQU 0x00000000
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler ; SSP1
|
||||||
|
DCD I2C_IRQHandler ; I2C
|
||||||
|
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
|
||||||
|
DCD TIMER16_1_IRQHandler ; 16-bit Timer1
|
||||||
|
DCD TIMER32_0_IRQHandler ; 32-bit Timer0
|
||||||
|
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 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 USBWakeup_IRQHandler ; USB wake up
|
||||||
|
DCD Reserved_IRQHandler ; Reserved
|
||||||
|
|
||||||
|
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
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
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; 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]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
Reserved_IRQHandler PROC
|
||||||
|
EXPORT Reserved_IRQHandler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_0_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_1_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER32_0_IRQHandler [WEAK]
|
||||||
|
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]
|
||||||
|
|
||||||
|
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
|
||||||
|
SSP1_IRQHandler
|
||||||
|
I2C_IRQHandler
|
||||||
|
TIMER16_0_IRQHandler
|
||||||
|
TIMER16_1_IRQHandler
|
||||||
|
TIMER32_0_IRQHandler
|
||||||
|
TIMER32_1_IRQHandler
|
||||||
|
SSP0_IRQHandler
|
||||||
|
UART_IRQHandler
|
||||||
|
USB_IRQHandler
|
||||||
|
USB_FIQHandler
|
||||||
|
ADC_IRQHandler
|
||||||
|
WDT_IRQHandler
|
||||||
|
BOD_IRQHandler
|
||||||
|
FMC_IRQHandler
|
||||||
|
USBWakeup_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
END
|
|
@ -0,0 +1,325 @@
|
||||||
|
;/*****************************************************************************
|
||||||
|
; * @file: startup_LPC11xx.s
|
||||||
|
; * @purpose: CMSIS Cortex-M0 Core Device Startup File
|
||||||
|
; * for the NXP LPC11xx Device Series
|
||||||
|
; * @version: V1.0
|
||||||
|
; * @date: 25. Nov. 2008
|
||||||
|
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
; *
|
||||||
|
; * Copyright (C) 2008 ARM Limited. All rights reserved.
|
||||||
|
; * ARM Limited (ARM) is supplying this software for use with Cortex-M0
|
||||||
|
; * processor based microcontrollers. This file can be freely distributed
|
||||||
|
; * within development tools that are supporting such ARM based processors.
|
||||||
|
; *
|
||||||
|
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
; *
|
||||||
|
; *****************************************************************************/
|
||||||
|
|
||||||
|
Stack_Size EQU 0x00000400
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __initial_sp
|
||||||
|
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp EQU 0x10002000 ; Top of RAM from LPC11U
|
||||||
|
|
||||||
|
|
||||||
|
Heap_Size EQU 0x00000000
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler ; SSP1
|
||||||
|
DCD I2C_IRQHandler ; I2C
|
||||||
|
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
|
||||||
|
DCD TIMER16_1_IRQHandler ; 16-bit Timer1
|
||||||
|
DCD TIMER32_0_IRQHandler ; 32-bit Timer0
|
||||||
|
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 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 USBWakeup_IRQHandler ; USB wake up
|
||||||
|
DCD Reserved_IRQHandler ; Reserved
|
||||||
|
|
||||||
|
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
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
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; 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]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
Reserved_IRQHandler PROC
|
||||||
|
EXPORT Reserved_IRQHandler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_0_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_1_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER32_0_IRQHandler [WEAK]
|
||||||
|
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]
|
||||||
|
|
||||||
|
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
|
||||||
|
SSP1_IRQHandler
|
||||||
|
I2C_IRQHandler
|
||||||
|
TIMER16_0_IRQHandler
|
||||||
|
TIMER16_1_IRQHandler
|
||||||
|
TIMER32_0_IRQHandler
|
||||||
|
TIMER32_1_IRQHandler
|
||||||
|
SSP0_IRQHandler
|
||||||
|
UART_IRQHandler
|
||||||
|
USB_IRQHandler
|
||||||
|
USB_FIQHandler
|
||||||
|
ADC_IRQHandler
|
||||||
|
WDT_IRQHandler
|
||||||
|
BOD_IRQHandler
|
||||||
|
FMC_IRQHandler
|
||||||
|
USBWakeup_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
END
|
|
@ -0,0 +1,308 @@
|
||||||
|
;/*****************************************************************************
|
||||||
|
; * @file: startup_LPC11xx.s
|
||||||
|
; * @purpose: CMSIS Cortex-M0 Core Device Startup File
|
||||||
|
; * for the NXP LPC11xx Device Series
|
||||||
|
; * @version: V1.0
|
||||||
|
; * @date: 25. Nov. 2008
|
||||||
|
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
; *
|
||||||
|
; * Copyright (C) 2008 ARM Limited. All rights reserved.
|
||||||
|
; * ARM Limited (ARM) is supplying this software for use with Cortex-M0
|
||||||
|
; * processor based microcontrollers. This file can be freely distributed
|
||||||
|
; * within development tools that are supporting such ARM based processors.
|
||||||
|
; *
|
||||||
|
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
; *
|
||||||
|
; *****************************************************************************/
|
||||||
|
|
||||||
|
__initial_sp EQU 0x10001800 ; Top of RAM from LPC11U
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler ; SSP1
|
||||||
|
DCD I2C_IRQHandler ; I2C
|
||||||
|
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
|
||||||
|
DCD TIMER16_1_IRQHandler ; 16-bit Timer1
|
||||||
|
DCD TIMER32_0_IRQHandler ; 32-bit Timer0
|
||||||
|
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 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 USBWakeup_IRQHandler ; USB wake up
|
||||||
|
DCD Reserved_IRQHandler ; Reserved
|
||||||
|
|
||||||
|
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
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
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; 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]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
Reserved_IRQHandler PROC
|
||||||
|
EXPORT Reserved_IRQHandler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_0_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_1_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER32_0_IRQHandler [WEAK]
|
||||||
|
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]
|
||||||
|
|
||||||
|
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
|
||||||
|
SSP1_IRQHandler
|
||||||
|
I2C_IRQHandler
|
||||||
|
TIMER16_0_IRQHandler
|
||||||
|
TIMER16_1_IRQHandler
|
||||||
|
TIMER32_0_IRQHandler
|
||||||
|
TIMER32_1_IRQHandler
|
||||||
|
SSP0_IRQHandler
|
||||||
|
UART_IRQHandler
|
||||||
|
USB_IRQHandler
|
||||||
|
USB_FIQHandler
|
||||||
|
ADC_IRQHandler
|
||||||
|
WDT_IRQHandler
|
||||||
|
BOD_IRQHandler
|
||||||
|
FMC_IRQHandler
|
||||||
|
USBWakeup_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
END
|
|
@ -0,0 +1,308 @@
|
||||||
|
;/*****************************************************************************
|
||||||
|
; * @file: startup_LPC11xx.s
|
||||||
|
; * @purpose: CMSIS Cortex-M0 Core Device Startup File
|
||||||
|
; * for the NXP LPC11xx Device Series
|
||||||
|
; * @version: V1.0
|
||||||
|
; * @date: 25. Nov. 2008
|
||||||
|
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
; *
|
||||||
|
; * Copyright (C) 2008 ARM Limited. All rights reserved.
|
||||||
|
; * ARM Limited (ARM) is supplying this software for use with Cortex-M0
|
||||||
|
; * processor based microcontrollers. This file can be freely distributed
|
||||||
|
; * within development tools that are supporting such ARM based processors.
|
||||||
|
; *
|
||||||
|
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
; *
|
||||||
|
; *****************************************************************************/
|
||||||
|
|
||||||
|
__initial_sp EQU 0x10002000 ; Top of RAM from LPC11U
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler ; SSP1
|
||||||
|
DCD I2C_IRQHandler ; I2C
|
||||||
|
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
|
||||||
|
DCD TIMER16_1_IRQHandler ; 16-bit Timer1
|
||||||
|
DCD TIMER32_0_IRQHandler ; 32-bit Timer0
|
||||||
|
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 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 USBWakeup_IRQHandler ; USB wake up
|
||||||
|
DCD Reserved_IRQHandler ; Reserved
|
||||||
|
|
||||||
|
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
DCD 0xFFFFFFFF ; Datafill
|
||||||
|
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
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; 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]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
Reserved_IRQHandler PROC
|
||||||
|
EXPORT Reserved_IRQHandler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
; for LPC11Uxx (With USB)
|
||||||
|
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 SSP1_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_0_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER16_1_IRQHandler [WEAK]
|
||||||
|
EXPORT TIMER32_0_IRQHandler [WEAK]
|
||||||
|
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]
|
||||||
|
|
||||||
|
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
|
||||||
|
SSP1_IRQHandler
|
||||||
|
I2C_IRQHandler
|
||||||
|
TIMER16_0_IRQHandler
|
||||||
|
TIMER16_1_IRQHandler
|
||||||
|
TIMER32_0_IRQHandler
|
||||||
|
TIMER32_1_IRQHandler
|
||||||
|
SSP0_IRQHandler
|
||||||
|
UART_IRQHandler
|
||||||
|
USB_IRQHandler
|
||||||
|
USB_FIQHandler
|
||||||
|
ADC_IRQHandler
|
||||||
|
WDT_IRQHandler
|
||||||
|
BOD_IRQHandler
|
||||||
|
FMC_IRQHandler
|
||||||
|
USBWakeup_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
END
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
LR_IROM1 0x00000000 0x1000 { ; load region size_region (4k)
|
||||||
|
ER_IROM1 0x00000000 0x1000 { ; load address = execution address
|
||||||
|
*.o (RESET, +First)
|
||||||
|
*(InRoot$$Sections)
|
||||||
|
.ANY (+RO)
|
||||||
|
}
|
||||||
|
; 8_byte_aligned(48 vect * 4 bytes) = 0xC0
|
||||||
|
; 1KB(0x0400) - 0xC0 = 0x340
|
||||||
|
RW_IRAM1 (0x10000000+0xC0) (0x400-0xC0) {
|
||||||
|
.ANY (+RW +ZI)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,211 @@
|
||||||
|
;/*****************************************************************************
|
||||||
|
; * @file: startup_LPC8xx.s
|
||||||
|
; * @purpose: CMSIS Cortex-M0+ Core Device Startup File
|
||||||
|
; * for the NXP LPC8xx Device Series
|
||||||
|
; * @version: V1.0
|
||||||
|
; * @date: 16. Aug. 2012
|
||||||
|
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
; *
|
||||||
|
; * Copyright (C) 2012 ARM Limited. All rights reserved.
|
||||||
|
; * ARM Limited (ARM) is supplying this software for use with Cortex-M0+
|
||||||
|
; * processor based microcontrollers. This file can be freely distributed
|
||||||
|
; * within development tools that are supporting such ARM based processors.
|
||||||
|
; *
|
||||||
|
; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
; *
|
||||||
|
; *****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
; <h> Stack Configuration
|
||||||
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Stack_Size EQU 0x00000200
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __initial_sp
|
||||||
|
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp EQU 0x10000400
|
||||||
|
|
||||||
|
|
||||||
|
; <h> Heap Configuration
|
||||||
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Heap_Size EQU 0x00000000
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
DCD SPI0_IRQHandler ; SPI0 controller
|
||||||
|
DCD SPI1_IRQHandler ; SPI1 controller
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD UART0_IRQHandler ; UART0
|
||||||
|
DCD UART1_IRQHandler ; UART1
|
||||||
|
DCD UART2_IRQHandler ; UART2
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD I2C_IRQHandler ; I2C controller
|
||||||
|
DCD SCT_IRQHandler ; Smart Counter Timer
|
||||||
|
DCD MRT_IRQHandler ; Multi-Rate Timer
|
||||||
|
DCD CMP_IRQHandler ; Comparator
|
||||||
|
DCD WDT_IRQHandler ; PIO1 (0:11)
|
||||||
|
DCD BOD_IRQHandler ; Brown Out Detect
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD WKT_IRQHandler ; Wakeup timer
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PININT0_IRQHandler ; PIO INT0
|
||||||
|
DCD PININT1_IRQHandler ; PIO INT1
|
||||||
|
DCD PININT2_IRQHandler ; PIO INT2
|
||||||
|
DCD PININT3_IRQHandler ; PIO INT3
|
||||||
|
DCD PININT4_IRQHandler ; PIO INT4
|
||||||
|
DCD PININT5_IRQHandler ; PIO INT5
|
||||||
|
DCD PININT6_IRQHandler ; PIO INT6
|
||||||
|
DCD PININT7_IRQHandler ; PIO INT7
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
|
||||||
|
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||||
|
; now, under COMMON lpc8xx_nmi.c and lpc8xx_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]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
|
||||||
|
EXPORT NMI_Handler [WEAK]
|
||||||
|
EXPORT SPI0_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI1_IRQHandler [WEAK]
|
||||||
|
EXPORT UART0_IRQHandler [WEAK]
|
||||||
|
EXPORT UART1_IRQHandler [WEAK]
|
||||||
|
EXPORT UART2_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C_IRQHandler [WEAK]
|
||||||
|
EXPORT SCT_IRQHandler [WEAK]
|
||||||
|
EXPORT MRT_IRQHandler [WEAK]
|
||||||
|
EXPORT CMP_IRQHandler [WEAK]
|
||||||
|
EXPORT WDT_IRQHandler [WEAK]
|
||||||
|
EXPORT BOD_IRQHandler [WEAK]
|
||||||
|
|
||||||
|
EXPORT WKT_IRQHandler [WEAK]
|
||||||
|
|
||||||
|
EXPORT PININT0_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT1_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT2_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT3_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT4_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT5_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT6_IRQHandler [WEAK]
|
||||||
|
EXPORT PININT7_IRQHandler [WEAK]
|
||||||
|
|
||||||
|
NMI_Handler
|
||||||
|
SPI0_IRQHandler
|
||||||
|
SPI1_IRQHandler
|
||||||
|
UART0_IRQHandler
|
||||||
|
UART1_IRQHandler
|
||||||
|
UART2_IRQHandler
|
||||||
|
I2C_IRQHandler
|
||||||
|
SCT_IRQHandler
|
||||||
|
MRT_IRQHandler
|
||||||
|
CMP_IRQHandler
|
||||||
|
WDT_IRQHandler
|
||||||
|
BOD_IRQHandler
|
||||||
|
WKT_IRQHandler
|
||||||
|
PININT0_IRQHandler
|
||||||
|
PININT1_IRQHandler
|
||||||
|
PININT2_IRQHandler
|
||||||
|
PININT3_IRQHandler
|
||||||
|
PININT4_IRQHandler
|
||||||
|
PININT5_IRQHandler
|
||||||
|
PININT6_IRQHandler
|
||||||
|
PININT7_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
END
|
|
@ -0,0 +1,367 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* @file: system_LPC8xx.c
|
||||||
|
* @purpose: CMSIS Cortex-M0+ Device Peripheral Access Layer Source File
|
||||||
|
* for the NXP LPC8xx Device Series
|
||||||
|
* @version: V1.0
|
||||||
|
* @date: 16. Aug. 2012
|
||||||
|
*----------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 ARM Limited. All rights reserved.
|
||||||
|
*
|
||||||
|
* ARM Limited (ARM) is supplying this software for use with Cortex-M0+
|
||||||
|
* processor based microcontrollers. This file can be freely distributed
|
||||||
|
* within development tools that are supporting such ARM based processors.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
||||||
|
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
||||||
|
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "LPC8xx.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*--------------------- Clock Configuration ----------------------------------
|
||||||
|
//
|
||||||
|
// <e> Clock Configuration
|
||||||
|
// <h> System Oscillator Control Register (SYSOSCCTRL)
|
||||||
|
// <o1.0> BYPASS: System Oscillator Bypass Enable
|
||||||
|
// <i> If enabled then PLL input (sys_osc_clk) is fed
|
||||||
|
// <i> directly from XTALIN and XTALOUT pins.
|
||||||
|
// <o1.9> FREQRANGE: System Oscillator Frequency Range
|
||||||
|
// <i> Determines frequency range for Low-power oscillator.
|
||||||
|
// <0=> 1 - 20 MHz
|
||||||
|
// <1=> 15 - 25 MHz
|
||||||
|
// </h>
|
||||||
|
//
|
||||||
|
// <h> Watchdog Oscillator Control Register (WDTOSCCTRL)
|
||||||
|
// <o2.0..4> DIVSEL: Select Divider for Fclkana
|
||||||
|
// <i> wdt_osc_clk = Fclkana/ (2 * (1 + DIVSEL))
|
||||||
|
// <0-31>
|
||||||
|
// <o2.5..8> FREQSEL: Select Watchdog Oscillator Analog Output Frequency (Fclkana)
|
||||||
|
// <0=> Undefined
|
||||||
|
// <1=> 0.5 MHz
|
||||||
|
// <2=> 0.8 MHz
|
||||||
|
// <3=> 1.1 MHz
|
||||||
|
// <4=> 1.4 MHz
|
||||||
|
// <5=> 1.6 MHz
|
||||||
|
// <6=> 1.8 MHz
|
||||||
|
// <7=> 2.0 MHz
|
||||||
|
// <8=> 2.2 MHz
|
||||||
|
// <9=> 2.4 MHz
|
||||||
|
// <10=> 2.6 MHz
|
||||||
|
// <11=> 2.7 MHz
|
||||||
|
// <12=> 2.9 MHz
|
||||||
|
// <13=> 3.1 MHz
|
||||||
|
// <14=> 3.2 MHz
|
||||||
|
// <15=> 3.4 MHz
|
||||||
|
// </h>
|
||||||
|
//
|
||||||
|
// <h> System PLL Control Register (SYSPLLCTRL)
|
||||||
|
// <i> F_clkout = M * F_clkin = F_CCO / (2 * P)
|
||||||
|
// <i> F_clkin must be in the range of 10 MHz to 25 MHz
|
||||||
|
// <i> F_CCO must be in the range of 156 MHz to 320 MHz
|
||||||
|
// <o3.0..4> MSEL: Feedback Divider Selection
|
||||||
|
// <i> M = MSEL + 1
|
||||||
|
// <0-31>
|
||||||
|
// <o3.5..6> PSEL: Post Divider Selection
|
||||||
|
// <0=> P = 1
|
||||||
|
// <1=> P = 2
|
||||||
|
// <2=> P = 4
|
||||||
|
// <3=> P = 8
|
||||||
|
// </h>
|
||||||
|
//
|
||||||
|
// <h> System PLL Clock Source Select Register (SYSPLLCLKSEL)
|
||||||
|
// <o4.0..1> SEL: System PLL Clock Source
|
||||||
|
// <0=> IRC Oscillator
|
||||||
|
// <1=> System Oscillator
|
||||||
|
// <2=> Reserved
|
||||||
|
// <3=> CLKIN pin
|
||||||
|
// </h>
|
||||||
|
//
|
||||||
|
// <h> Main Clock Source Select Register (MAINCLKSEL)
|
||||||
|
// <o5.0..1> SEL: Clock Source for Main Clock
|
||||||
|
// <0=> IRC Oscillator
|
||||||
|
// <1=> Input Clock to System PLL
|
||||||
|
// <2=> WDT Oscillator
|
||||||
|
// <3=> System PLL Clock Out
|
||||||
|
// </h>
|
||||||
|
//
|
||||||
|
// <h> System AHB Clock Divider Register (SYSAHBCLKDIV)
|
||||||
|
// <o6.0..7> DIV: System AHB Clock Divider
|
||||||
|
// <i> Divides main clock to provide system clock to core, memories, and peripherals.
|
||||||
|
// <i> 0 = is disabled
|
||||||
|
// <0-255>
|
||||||
|
// </h>
|
||||||
|
// </e>
|
||||||
|
*/
|
||||||
|
#define CLOCK_SETUP 1
|
||||||
|
#define SYSOSCCTRL_Val 0x00000000 // Reset: 0x000
|
||||||
|
#define WDTOSCCTRL_Val 0x00000000 // Reset: 0x000
|
||||||
|
#define SYSPLLCTRL_Val 0x00000041 // Reset: 0x000
|
||||||
|
#define SYSPLLCLKSEL_Val 0x00000000 // Reset: 0x000
|
||||||
|
#define MAINCLKSEL_Val 0x00000003 // Reset: 0x000
|
||||||
|
#define SYSAHBCLKDIV_Val 0x00000001 // Reset: 0x001
|
||||||
|
|
||||||
|
/*
|
||||||
|
//-------- <<< end of configuration section >>> ------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Check the register settings
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define CHECK_RANGE(val, min, max) ((val < min) || (val > max))
|
||||||
|
#define CHECK_RSVD(val, mask) (val & mask)
|
||||||
|
|
||||||
|
/* Clock Configuration -------------------------------------------------------*/
|
||||||
|
#if (CHECK_RSVD((SYSOSCCTRL_Val), ~0x00000003))
|
||||||
|
#error "SYSOSCCTRL: Invalid values of reserved bits!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CHECK_RSVD((WDTOSCCTRL_Val), ~0x000001FF))
|
||||||
|
#error "WDTOSCCTRL: Invalid values of reserved bits!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CHECK_RANGE((SYSPLLCLKSEL_Val), 0, 3))
|
||||||
|
#error "SYSPLLCLKSEL: Value out of range!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CHECK_RSVD((SYSPLLCTRL_Val), ~0x000001FF))
|
||||||
|
#error "SYSPLLCTRL: Invalid values of reserved bits!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CHECK_RSVD((MAINCLKSEL_Val), ~0x00000003))
|
||||||
|
#error "MAINCLKSEL: Invalid values of reserved bits!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (CHECK_RANGE((SYSAHBCLKDIV_Val), 0, 255))
|
||||||
|
#error "SYSAHBCLKDIV: Value out of range!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
DEFINES
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Define clocks
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define __XTAL (12000000UL) /* Oscillator frequency */
|
||||||
|
#define __SYS_OSC_CLK ( __XTAL) /* Main oscillator frequency */
|
||||||
|
#define __IRC_OSC_CLK (12000000UL) /* Internal RC oscillator frequency */
|
||||||
|
#define __CLKIN_CLK (12000000UL) /* CLKIN pin frequency */
|
||||||
|
|
||||||
|
|
||||||
|
#define __FREQSEL ((WDTOSCCTRL_Val >> 5) & 0x0F)
|
||||||
|
#define __DIVSEL (((WDTOSCCTRL_Val & 0x1F) << 1) + 2)
|
||||||
|
|
||||||
|
#if (CLOCK_SETUP) /* Clock Setup */
|
||||||
|
#if (__FREQSEL == 0)
|
||||||
|
#define __WDT_OSC_CLK ( 0) /* undefined */
|
||||||
|
#elif (__FREQSEL == 1)
|
||||||
|
#define __WDT_OSC_CLK ( 500000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 2)
|
||||||
|
#define __WDT_OSC_CLK ( 800000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 3)
|
||||||
|
#define __WDT_OSC_CLK (1100000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 4)
|
||||||
|
#define __WDT_OSC_CLK (1400000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 5)
|
||||||
|
#define __WDT_OSC_CLK (1600000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 6)
|
||||||
|
#define __WDT_OSC_CLK (1800000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 7)
|
||||||
|
#define __WDT_OSC_CLK (2000000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 8)
|
||||||
|
#define __WDT_OSC_CLK (2200000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 9)
|
||||||
|
#define __WDT_OSC_CLK (2400000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 10)
|
||||||
|
#define __WDT_OSC_CLK (2600000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 11)
|
||||||
|
#define __WDT_OSC_CLK (2700000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 12)
|
||||||
|
#define __WDT_OSC_CLK (2900000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 13)
|
||||||
|
#define __WDT_OSC_CLK (3100000 / __DIVSEL)
|
||||||
|
#elif (__FREQSEL == 14)
|
||||||
|
#define __WDT_OSC_CLK (3200000 / __DIVSEL)
|
||||||
|
#else
|
||||||
|
#define __WDT_OSC_CLK (3400000 / __DIVSEL)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* sys_pllclkin calculation */
|
||||||
|
#if ((SYSPLLCLKSEL_Val & 0x03) == 0)
|
||||||
|
#define __SYS_PLLCLKIN (__IRC_OSC_CLK)
|
||||||
|
#elif ((SYSPLLCLKSEL_Val & 0x03) == 1)
|
||||||
|
#define __SYS_PLLCLKIN (__SYS_OSC_CLK)
|
||||||
|
#elif ((SYSPLLCLKSEL_Val & 0x03) == 3)
|
||||||
|
#define __SYS_PLLCLKIN (__CLKIN_CLK)
|
||||||
|
#else
|
||||||
|
#define __SYS_PLLCLKIN (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __SYS_PLLCLKOUT (__SYS_PLLCLKIN * ((SYSPLLCTRL_Val & 0x01F) + 1))
|
||||||
|
|
||||||
|
/* main clock calculation */
|
||||||
|
#if ((MAINCLKSEL_Val & 0x03) == 0)
|
||||||
|
#define __MAIN_CLOCK (__IRC_OSC_CLK)
|
||||||
|
#elif ((MAINCLKSEL_Val & 0x03) == 1)
|
||||||
|
#define __MAIN_CLOCK (__SYS_PLLCLKIN)
|
||||||
|
#elif ((MAINCLKSEL_Val & 0x03) == 2)
|
||||||
|
#if (__FREQSEL == 0)
|
||||||
|
#error "MAINCLKSEL: WDT Oscillator selected but FREQSEL is undefined!"
|
||||||
|
#else
|
||||||
|
#define __MAIN_CLOCK (__WDT_OSC_CLK)
|
||||||
|
#endif
|
||||||
|
#elif ((MAINCLKSEL_Val & 0x03) == 3)
|
||||||
|
#define __MAIN_CLOCK (__SYS_PLLCLKOUT)
|
||||||
|
#else
|
||||||
|
#define __MAIN_CLOCK (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __SYSTEM_CLOCK (__MAIN_CLOCK / SYSAHBCLKDIV_Val)
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define __SYSTEM_CLOCK (__IRC_OSC_CLK)
|
||||||
|
#endif // CLOCK_SETUP
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Clock Variable definitions
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Clock functions
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
|
||||||
|
{
|
||||||
|
uint32_t wdt_osc = 0;
|
||||||
|
|
||||||
|
/* Determine clock frequency according to clock register values */
|
||||||
|
switch ((LPC_SYSCON->WDTOSCCTRL >> 5) & 0x0F) {
|
||||||
|
case 0: wdt_osc = 0; break;
|
||||||
|
case 1: wdt_osc = 500000; break;
|
||||||
|
case 2: wdt_osc = 800000; break;
|
||||||
|
case 3: wdt_osc = 1100000; break;
|
||||||
|
case 4: wdt_osc = 1400000; break;
|
||||||
|
case 5: wdt_osc = 1600000; break;
|
||||||
|
case 6: wdt_osc = 1800000; break;
|
||||||
|
case 7: wdt_osc = 2000000; break;
|
||||||
|
case 8: wdt_osc = 2200000; break;
|
||||||
|
case 9: wdt_osc = 2400000; break;
|
||||||
|
case 10: wdt_osc = 2600000; break;
|
||||||
|
case 11: wdt_osc = 2700000; break;
|
||||||
|
case 12: wdt_osc = 2900000; break;
|
||||||
|
case 13: wdt_osc = 3100000; break;
|
||||||
|
case 14: wdt_osc = 3200000; break;
|
||||||
|
case 15: wdt_osc = 3400000; break;
|
||||||
|
}
|
||||||
|
wdt_osc /= ((LPC_SYSCON->WDTOSCCTRL & 0x1F) << 1) + 2;
|
||||||
|
|
||||||
|
switch (LPC_SYSCON->MAINCLKSEL & 0x03) {
|
||||||
|
case 0: /* Internal RC oscillator */
|
||||||
|
SystemCoreClock = __IRC_OSC_CLK;
|
||||||
|
break;
|
||||||
|
case 1: /* Input Clock to System PLL */
|
||||||
|
switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
|
||||||
|
case 0: /* Internal RC oscillator */
|
||||||
|
SystemCoreClock = __IRC_OSC_CLK;
|
||||||
|
break;
|
||||||
|
case 1: /* System oscillator */
|
||||||
|
SystemCoreClock = __SYS_OSC_CLK;
|
||||||
|
break;
|
||||||
|
case 2: /* Reserved */
|
||||||
|
SystemCoreClock = 0;
|
||||||
|
break;
|
||||||
|
case 3: /* CLKIN pin */
|
||||||
|
SystemCoreClock = __CLKIN_CLK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: /* WDT Oscillator */
|
||||||
|
SystemCoreClock = wdt_osc;
|
||||||
|
break;
|
||||||
|
case 3: /* System PLL Clock Out */
|
||||||
|
switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
|
||||||
|
case 0: /* Internal RC oscillator */
|
||||||
|
SystemCoreClock = __IRC_OSC_CLK * ((LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1);
|
||||||
|
break;
|
||||||
|
case 1: /* System oscillator */
|
||||||
|
SystemCoreClock = __SYS_OSC_CLK * ((LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1);
|
||||||
|
break;
|
||||||
|
case 2: /* Reserved */
|
||||||
|
SystemCoreClock = 0;
|
||||||
|
break;
|
||||||
|
case 3: /* CLKIN pin */
|
||||||
|
SystemCoreClock = __CLKIN_CLK * ((LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SystemCoreClock /= LPC_SYSCON->SYSAHBCLKDIV;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the system
|
||||||
|
*
|
||||||
|
* @param none
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @brief Setup the microcontroller system.
|
||||||
|
* Initialize the System.
|
||||||
|
*/
|
||||||
|
void SystemInit (void) {
|
||||||
|
volatile uint32_t i;
|
||||||
|
|
||||||
|
/* System clock to the IOCON & the SWM need to be enabled or
|
||||||
|
most of the I/O related peripherals won't work. */
|
||||||
|
LPC_SYSCON->SYSAHBCLKCTRL |= ( (0x1 << 7) | (0x1 << 18) );
|
||||||
|
|
||||||
|
#if (CLOCK_SETUP) /* Clock Setup */
|
||||||
|
|
||||||
|
#if ((SYSPLLCLKSEL_Val & 0x03) == 1)
|
||||||
|
LPC_IOCON->PIO0_8 &= ~(0x3 << 3);
|
||||||
|
LPC_IOCON->PIO0_9 &= ~(0x3 << 3);
|
||||||
|
LPC_SWM->PINENABLE0 &= ~(0x3 << 4);
|
||||||
|
LPC_SYSCON->PDRUNCFG &= ~(0x1 << 5); /* Power-up System Osc */
|
||||||
|
LPC_SYSCON->SYSOSCCTRL = SYSOSCCTRL_Val;
|
||||||
|
for (i = 0; i < 200; i++) __NOP();
|
||||||
|
#endif
|
||||||
|
#if ((SYSPLLCLKSEL_Val & 0x03) == 3)
|
||||||
|
LPC_IOCON->PIO0_1 &= ~(0x3 << 3);
|
||||||
|
LPC_SWM->PINENABLE0 &= ~(0x1 << 7);
|
||||||
|
for (i = 0; i < 200; i++) __NOP();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LPC_SYSCON->SYSPLLCLKSEL = SYSPLLCLKSEL_Val; /* Select PLL Input */
|
||||||
|
LPC_SYSCON->SYSPLLCLKUEN = 0x01; /* Update Clock Source */
|
||||||
|
while (!(LPC_SYSCON->SYSPLLCLKUEN & 0x01)); /* Wait Until Updated */
|
||||||
|
#if ((MAINCLKSEL_Val & 0x03) == 3) /* Main Clock is PLL Out */
|
||||||
|
LPC_SYSCON->SYSPLLCTRL = SYSPLLCTRL_Val;
|
||||||
|
LPC_SYSCON->PDRUNCFG &= ~(0x1 << 7); /* Power-up SYSPLL */
|
||||||
|
while (!(LPC_SYSCON->SYSPLLSTAT & 0x01)); /* Wait Until PLL Locked */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (((MAINCLKSEL_Val & 0x03) == 2) )
|
||||||
|
LPC_SYSCON->WDTOSCCTRL = WDTOSCCTRL_Val;
|
||||||
|
LPC_SYSCON->PDRUNCFG &= ~(0x1 << 6); /* Power-up WDT Clock */
|
||||||
|
for (i = 0; i < 200; i++) __NOP();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LPC_SYSCON->MAINCLKSEL = MAINCLKSEL_Val; /* Select PLL Clock Output */
|
||||||
|
LPC_SYSCON->MAINCLKUEN = 0x01; /* Update MCLK Clock Source */
|
||||||
|
while (!(LPC_SYSCON->MAINCLKUEN & 0x01)); /* Wait Until Updated */
|
||||||
|
|
||||||
|
LPC_SYSCON->SYSAHBCLKDIV = SYSAHBCLKDIV_Val;
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -39,7 +39,28 @@ static const PinMap PinMap_PWM[] = {
|
||||||
{D10, PWM_1 , 4}, // PTD0 , TPM0 CH0
|
{D10, PWM_1 , 4}, // PTD0 , TPM0 CH0
|
||||||
{D11, PWM_3 , 4}, // PTD2 , TPM0 CH2
|
{D11, PWM_3 , 4}, // PTD2 , TPM0 CH2
|
||||||
{D12, PWM_4 , 4}, // PTD3 , TPM0 CH3
|
{D12, PWM_4 , 4}, // PTD3 , TPM0 CH3
|
||||||
{D13, PWM_2 , 4}, // PTD1 , TPM0 CH1
|
{D13, PWM_2 , 4}, // PTD1 , TPM0 CH1,
|
||||||
|
|
||||||
|
{PTA0, PWM_6, 3},
|
||||||
|
{PTA3, PWM_1, 3},
|
||||||
|
{PTB0, PWM_7, 3},
|
||||||
|
{PTB1, PWM_8, 3},
|
||||||
|
{PTB2, PWM_9, 3},
|
||||||
|
{PTB3, PWM_10, 3},
|
||||||
|
{PTC1, PWM_1, 4},
|
||||||
|
{PTC2, PWM_2, 4},
|
||||||
|
{PTC3, PWM_3, 4},
|
||||||
|
{PTC4, PWM_4, 4},
|
||||||
|
{PTE20, PWM_7, 3},
|
||||||
|
{PTE21, PWM_8, 3},
|
||||||
|
{PTE22, PWM_9, 3},
|
||||||
|
{PTE23, PWM_10, 3},
|
||||||
|
{PTE24, PWM_1, 3},
|
||||||
|
{PTE25, PWM_2, 3},
|
||||||
|
{PTE29, PWM_3, 3},
|
||||||
|
{PTE30, PWM_4, 3},
|
||||||
|
{PTE31, PWM_5, 3},
|
||||||
|
|
||||||
{NC , NC , 0}
|
{NC , NC , 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ uint32_t gpio_set(PinName pin) {
|
||||||
(1) : (0);
|
(1) : (0);
|
||||||
|
|
||||||
pin_function(pin, f);
|
pin_function(pin, f);
|
||||||
return ((pin & 0x0F00) >> 8);
|
return ((pin & 0x0F00) >> PIN_SHIFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gpio_init(gpio_t *obj, PinName pin, PinDirection direction) {
|
void gpio_init(gpio_t *obj, PinName pin, PinDirection direction) {
|
||||||
|
@ -37,7 +37,7 @@ void gpio_init(gpio_t *obj, PinName pin, PinDirection direction) {
|
||||||
obj->pin = pin;
|
obj->pin = pin;
|
||||||
LPC_GPIO_TypeDef *port_reg = ((LPC_GPIO_TypeDef *) (LPC_GPIO0_BASE + (((pin & 0xF000) >> PORT_SHIFT) * 0x10000)));
|
LPC_GPIO_TypeDef *port_reg = ((LPC_GPIO_TypeDef *) (LPC_GPIO0_BASE + (((pin & 0xF000) >> PORT_SHIFT) * 0x10000)));
|
||||||
|
|
||||||
obj->reg_mask_read = &port_reg->MASKED_ACCESS[gpio_set(pin) + 1];
|
obj->reg_mask_read = &port_reg->MASKED_ACCESS[1 << gpio_set(pin)];
|
||||||
obj->reg_dir = &port_reg->DIR;
|
obj->reg_dir = &port_reg->DIR;
|
||||||
obj->reg_write = &port_reg->DATA;
|
obj->reg_write = &port_reg->DATA;
|
||||||
|
|
||||||
|
|
|
@ -249,12 +249,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
#warning TODO(@toyowata): need to fix a full-duplex bug? https://mbed.org/forum/bugs-suggestions/topic/4473/
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -247,11 +247,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -247,11 +247,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -283,11 +283,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
@ -299,7 +294,8 @@ int serial_writable(serial_t *obj) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void serial_clear(serial_t *obj) {
|
void serial_clear(serial_t *obj) {
|
||||||
obj->uart->FCR = 1 << 1 // rx FIFO reset
|
obj->uart->FCR = 1 << 0 // FIFO Enable - 0 = Disables, 1 = Enabled
|
||||||
|
| 1 << 1 // rx FIFO reset
|
||||||
| 1 << 2 // tx FIFO reset
|
| 1 << 2 // tx FIFO reset
|
||||||
| 0 << 6; // interrupt depth
|
| 0 << 6; // interrupt depth
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,11 +283,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -276,11 +276,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -257,11 +257,6 @@ int serial_getc(serial_t *obj) {
|
||||||
void serial_putc(serial_t *obj, int c) {
|
void serial_putc(serial_t *obj, int c) {
|
||||||
while (!serial_writable(obj));
|
while (!serial_writable(obj));
|
||||||
obj->uart->THR = c;
|
obj->uart->THR = c;
|
||||||
|
|
||||||
uint32_t lsr = obj->uart->LSR;
|
|
||||||
lsr = lsr;
|
|
||||||
uint32_t thr = obj->uart->THR;
|
|
||||||
thr = thr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int serial_readable(serial_t *obj) {
|
int serial_readable(serial_t *obj) {
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
/* mbed Microcontroller Library
|
||||||
|
* Copyright (c) 2006-2013 ARM Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#ifndef MBED_PINNAMES_H
|
||||||
|
#define MBED_PINNAMES_H
|
||||||
|
|
||||||
|
#include "cmsis.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PIN_INPUT,
|
||||||
|
PIN_OUTPUT
|
||||||
|
} PinDirection;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
P0_0 = 0,
|
||||||
|
P0_1 = 1,
|
||||||
|
P0_2 = 2,
|
||||||
|
P0_3 = 3,
|
||||||
|
P0_4 = 4,
|
||||||
|
P0_5 = 5,
|
||||||
|
|
||||||
|
dp1 = P0_5,
|
||||||
|
dp2 = P0_4,
|
||||||
|
dp3 = P0_3,
|
||||||
|
dp4 = P0_2,
|
||||||
|
dp5 = P0_1,
|
||||||
|
dp8 = P0_0,
|
||||||
|
|
||||||
|
// mbed original LED naming
|
||||||
|
LED1 = P0_2,
|
||||||
|
LED2 = P0_2,
|
||||||
|
LED3 = P0_2,
|
||||||
|
LED4 = P0_2,
|
||||||
|
LED_RED = P0_2,
|
||||||
|
|
||||||
|
// Serial to USB pins
|
||||||
|
USBTX = P0_4,
|
||||||
|
USBRX = P0_0,
|
||||||
|
|
||||||
|
// Not connected
|
||||||
|
NC = (int)0xFFFFFFFF,
|
||||||
|
} PinName;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PullUp = 2,
|
||||||
|
PullDown = 1,
|
||||||
|
PullNone = 0,
|
||||||
|
Repeater = 3,
|
||||||
|
OpenDrain = 4
|
||||||
|
} PinMode;
|
||||||
|
|
||||||
|
#define STDIO_UART_TX USBTX
|
||||||
|
#define STDIO_UART_RX USBRX
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char n;
|
||||||
|
unsigned char offset;
|
||||||
|
} SWM_Map;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -21,7 +21,7 @@
|
||||||
</DaveTm>
|
</DaveTm>
|
||||||
|
|
||||||
<Target>
|
<Target>
|
||||||
<TargetName>mbed NXP LPC1768</TargetName>
|
<TargetName>mbed NXP LPC1114</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
<AfterMake>
|
<AfterMake>
|
||||||
<RunUserProg1>0</RunUserProg1>
|
<RunUserProg1>0</RunUserProg1>
|
||||||
<RunUserProg2>0</RunUserProg2>
|
<RunUserProg2>0</RunUserProg2>
|
||||||
<UserProg1Name>fromelf --bin -o build\{{name}}_LPC1768.bin build\{{name}}.axf</UserProg1Name>
|
<UserProg1Name>fromelf --bin -o build\{{name}}_LPC1114.bin build\{{name}}.axf</UserProg1Name>
|
||||||
<UserProg2Name></UserProg2Name>
|
<UserProg2Name></UserProg2Name>
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
<Capability>0</Capability>
|
<Capability>0</Capability>
|
||||||
<DriverSelection>-1</DriverSelection>
|
<DriverSelection>-1</DriverSelection>
|
||||||
</Flash1>
|
</Flash1>
|
||||||
<bUseTDR>0</bUseTDR>
|
<bUseTDR>1</bUseTDR>
|
||||||
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
||||||
<Flash3></Flash3>
|
<Flash3></Flash3>
|
||||||
<Flash4></Flash4>
|
<Flash4></Flash4>
|
||||||
|
@ -201,7 +201,7 @@
|
||||||
<GenPPlst>0</GenPPlst>
|
<GenPPlst>0</GenPPlst>
|
||||||
<AdsCpuType>"Cortex-M0"</AdsCpuType>
|
<AdsCpuType>"Cortex-M0"</AdsCpuType>
|
||||||
<RvctDeviceName></RvctDeviceName>
|
<RvctDeviceName></RvctDeviceName>
|
||||||
<mOS>0</mOS>
|
<mOS>1</mOS>
|
||||||
<uocRom>0</uocRom>
|
<uocRom>0</uocRom>
|
||||||
<uocRam>0</uocRam>
|
<uocRam>0</uocRam>
|
||||||
<hadIROM>1</hadIROM>
|
<hadIROM>1</hadIROM>
|
||||||
|
@ -212,7 +212,7 @@
|
||||||
<hadIRAM2>0</hadIRAM2>
|
<hadIRAM2>0</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
<useUlib>0</useUlib>
|
<useUlib>1</useUlib>
|
||||||
<EndSel>0</EndSel>
|
<EndSel>0</EndSel>
|
||||||
<uLtcg>0</uLtcg>
|
<uLtcg>0</uLtcg>
|
||||||
<RoSelD>3</RoSelD>
|
<RoSelD>3</RoSelD>
|
||||||
|
|
|
@ -127,7 +127,20 @@ class LPC812(Target):
|
||||||
|
|
||||||
self.core = "Cortex-M0+"
|
self.core = "Cortex-M0+"
|
||||||
|
|
||||||
self.extra_labels = ['NXP', 'LPC81X']
|
self.extra_labels = ['NXP', 'LPC81X', 'LPC81X_COMMON']
|
||||||
|
|
||||||
|
self.supported_toolchains = ["uARM"]
|
||||||
|
|
||||||
|
self.is_disk_virtual = True
|
||||||
|
|
||||||
|
|
||||||
|
class LPC810(Target):
|
||||||
|
def __init__(self):
|
||||||
|
Target.__init__(self)
|
||||||
|
|
||||||
|
self.core = "Cortex-M0+"
|
||||||
|
|
||||||
|
self.extra_labels = ['NXP', 'LPC81X', 'LPC81X_COMMON']
|
||||||
|
|
||||||
self.supported_toolchains = ["uARM"]
|
self.supported_toolchains = ["uARM"]
|
||||||
|
|
||||||
|
@ -287,6 +300,7 @@ TARGETS = [
|
||||||
KL05Z(),
|
KL05Z(),
|
||||||
KL25Z(),
|
KL25Z(),
|
||||||
LPC812(),
|
LPC812(),
|
||||||
|
LPC810(),
|
||||||
LPC4088(),
|
LPC4088(),
|
||||||
LPC4330_M4(),
|
LPC4330_M4(),
|
||||||
STM32F407(),
|
STM32F407(),
|
||||||
|
|
|
@ -79,7 +79,18 @@ class GCC(mbedToolchain):
|
||||||
for line in open(dep_path).readlines()[1:]:
|
for line in open(dep_path).readlines()[1:]:
|
||||||
file = line.replace('\\\n', '').strip()
|
file = line.replace('\\\n', '').strip()
|
||||||
if file:
|
if file:
|
||||||
dependencies.append(file)
|
# GCC might list more than one dependency on a single line, in this case
|
||||||
|
# the dependencies are separated by a space. However, a space might also
|
||||||
|
# indicate an actual space character in a dependency path, but in this case
|
||||||
|
# the space character is prefixed by a backslash.
|
||||||
|
# Temporary replace all '\ ' with a special char that is not used (\a in this
|
||||||
|
# case) to keep them from being interpreted by 'split' (they will be converted
|
||||||
|
# back later to a space char)
|
||||||
|
file = file.replace('\\ ', '\a')
|
||||||
|
if file.find(" ") == -1:
|
||||||
|
dependencies.append(file.replace('\a', ' '))
|
||||||
|
else:
|
||||||
|
dependencies = dependencies + [f.replace('\a', ' ') for f in file.split(" ")]
|
||||||
return dependencies
|
return dependencies
|
||||||
|
|
||||||
def parse_output(self, output):
|
def parse_output(self, output):
|
||||||
|
|
Loading…
Reference in New Issue