;/******************************************************************************
; * @file startup_Nano100Series.s
; * @version V1.00
; * $Revision: 3 $
; * $Date: 14/01/14 4:17p $
; * @brief CMSIS ARM Cortex-M0 Core Device Startup File
; *
; * @note
; * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
;*****************************************************************************/
;首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,
;其第一个表项是栈顶地址,第二个表项是复位中断服务入口地址。
;然后在复位中断服务程序中跳转C/C++标准实时库的__main函数。
;复位中断服务入口地址存放于0x0000_0000处。当M0遇到复位信号后,
;则从0x0000000处取出复位中断服务入口地址继而执行复位中断服务程序
;然后跳转__main函数,最后来到C的世界。
; <h> Stack Configuration栈配置,为后期跳转到C语言代码存放参数,地址做准备
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
;EQU相当于C语言的define
Stack_Size EQU 0x00000500;,共1280个字节
;定义一片区域名为STACK,未初始化段,可读可写,8字节对齐
AREA STACK, NOINIT, READWRITE, ALIGN=3
;此指令用于分配一片连续的存储区域并初始化为0。表达式为要分配的字节数。
;SPACE可用“%”来代替
Stack_Mem SPACE Stack_Size
;__initial_sp表示一个标示,编译器计算这个标示的地址.
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000500
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
;中断向量表映射到0x00,
AREA RESET, DATA, READONLY
;使编译器指定一段只读的数据段,段名为reset
;EXPORT __Vectors
;EXPORT相当于GLOBLE关键字,声明一个全局变量__vector,
;DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”
;异常向量表从0x0000_0000开始,初始位置为Stack_Point所在地,
;自动取传入的地址存入SP寄存器中,其他中断存放中断程序地址,
;跳转到ISR中执行程序,具体查看datasheet page 111中描述
__Vecto
; * @file startup_Nano100Series.s
; * @version V1.00
; * $Revision: 3 $
; * $Date: 14/01/14 4:17p $
; * @brief CMSIS ARM Cortex-M0 Core Device Startup File
; *
; * @note
; * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
;*****************************************************************************/
;首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,
;其第一个表项是栈顶地址,第二个表项是复位中断服务入口地址。
;然后在复位中断服务程序中跳转C/C++标准实时库的__main函数。
;复位中断服务入口地址存放于0x0000_0000处。当M0遇到复位信号后,
;则从0x0000000处取出复位中断服务入口地址继而执行复位中断服务程序
;然后跳转__main函数,最后来到C的世界。
; <h> Stack Configuration栈配置,为后期跳转到C语言代码存放参数,地址做准备
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
;EQU相当于C语言的define
Stack_Size EQU 0x00000500;,共1280个字节
;定义一片区域名为STACK,未初始化段,可读可写,8字节对齐
AREA STACK, NOINIT, READWRITE, ALIGN=3
;此指令用于分配一片连续的存储区域并初始化为0。表达式为要分配的字节数。
;SPACE可用“%”来代替
Stack_Mem SPACE Stack_Size
;__initial_sp表示一个标示,编译器计算这个标示的地址.
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000500
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
;中断向量表映射到0x00,
AREA RESET, DATA, READONLY
;使编译器指定一段只读的数据段,段名为reset
;EXPORT __Vectors
;EXPORT相当于GLOBLE关键字,声明一个全局变量__vector,
;DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”
;异常向量表从0x0000_0000开始,初始位置为Stack_Point所在地,
;自动取传入的地址存入SP寄存器中,其他中断存放中断程序地址,
;跳转到ISR中执行程序,具体查看datasheet page 111中描述
__Vecto