STM32 启动文件

先来看看启动代码中的伪操作和伪指令

EQU
用于定义常量,相当于C中的宏定义
如Stack_Size EQU 0x00000400 ——— #define Stack_Size 0x00000400

ALIGN
字节对齐方式
ALIGN = 3

EXPORT
相当于声明了一个全局变量
EXPORT __Vectors //中断向量的起始地址
EXPORT __Vectors_End //中断向量的结束地址
EXPORT __Vectors_Size //中断向量的空间大小

IMPORT
相当C语言的extern
IMPORT __main ————— extern __main

DCD
{label} DCD expr
分配一段连续的内存单元,并且用expr初始化
__Vectors DCD __initial_sp ;Top of Statck———–__Vectors = __initial_sp
DCD Reset_Handler ;Reset Handler

SPACE
{label} SPACE expr
SPACE用于分配一块大小为expr的连续内存,并且初始化为0

AREA sectionname{,attr} {,attr}….
AREA常用来定义一个段,段名为sectionname,attr位段的属性
CODE 代码段属性,默认属性位READONLY
DATA 数据段,默认属性为READWRITE
READONLY
READWRITE
ALIGN
NOINT 表示数据段初始化为0

栈定义
Stack_Size EQU 0x00000400
AREA STACK,NOINT,READWRITE,ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
段名:STACK
段大小:Stack_Size=0x00000400
段属性:READWRITE
段的对齐方式:ALIGN=3
上面的意思是从Stack_Mem初始化Stack_Size大小的内存,定义栈底为__initial_sp

堆的定义
Heap_Size EQU 0x00000200
AREA HEAP,NOINT,READWRITE,ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
段名:HEAP
段大小:Heap_Size =0x00000200
段属性:READWRITE
段的对齐方式:ALIGN=3

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查看文章 STM32 keil mdk启动代码发分析_转2010年01月29日 星期五 13:50 ;// Stack Configuration ;// Stack Size (in Bytes) ;// Stack_Size EQU 0x00000200 ;//定义堆栈大小 AREA STACK, NOINIT, READWRITE, ALIGN=3 ;//定义一个数据段 按8字节对齐 ;AREA 伪指令用于定义一个代码段或数据段 NOINIT:指定此数据段仅仅保留了内存单元,而没有将各初始值写入内存单元,或者将各个内存单元值初始化为0 Stack_Mem SPACE Stack_Size ;//保留Stack_Size大小的堆栈空间 分 配连续 Stack_Size 字节的存储单元并初始化为 0 __initial_sp ;//标号,代表堆栈顶部地址,后面有用 ;// Heap Configuration ;// Heap Size (in Bytes) ;// Heap_Size EQU 0x00000020 ;//定义堆空间大小 AREA HEAP, NOINIT, READWRITE, ALIGN=3 ;//定义一个数据段,8字节对齐 __heap_base Heap_Mem SPACE Heap_Size ;//保留Heap_Size的堆空间 __heap_limit ;//标号,代表堆末尾地址,后面有用 PRESERVE8 ;//指示编译器8字节对齐 THUMB ;//指示编译器为THUMB指令 ; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY ;//定义只读数据段,其实放在CODE区,位于0地址 EXTERN NMIException EXTERN HardFaultException EXTERN MemManageException EXTERN BusFaultException EXTERN UsageFaultException EXTERN SVCHandler EXTERN DebugMonitor EXTERN PendSVC EXTERN SysTickHandler ;//声明这些符号在外部定义,同C ;//在××it.c中实现这些函数 ,中断就能自动调用了 EXPORT __Vectors EXPORT __initial_sp ;EXPORT:在程序中声明一个全局的标号__Vectors,该标号可在其他的文件中引用;I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值