STM32启动代码详解

网上找了很多,也发现比较详细的,自己通过
摘要由CSDN通过智能技术生成

网上找了很多,也发现比较详细的,通过网上文章 注解每一行的详细含义


Stack_Size      EQU     0x00000400 // EQU 常量定义,定义栈大小为0x400,即1KB(实际上ARM为32位,实际只能保存256个32bit 数据)

        AREA    STACK, NOINIT, READWRITE, ALIGN=3   

// AREA 表示命令指示汇编程序汇编一个新的代码段或数据段。段是独立的、指定的、不可见的代码或数据块,它们由链接程序处理

// STACK 表示为栈空间

// NOINIT 表示 数据段是未初始化的或者初始化为0

// READWRITE 表示可读写

 // ALIGN = 3, 表示2的3次方字节 即8字节对齐

Stack_Mem       SPACE   Stack_Size              // 初始化栈空间
__initial_sp  // 由于STM32 入栈的时候是从高到低,所以这里给出栈顶地址,如果入栈是从低到高,则需要在初始化堆栈前 设置标号,即栈指针指向栈底
                                                  
; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>


Heap_Size       EQU     0x00000200  // EQU 常量定义,定义堆大小为0x200,即512B(实际上ARM为32位,实际只能保存128个32bit 数据)


            AREA    HEAP, NOINIT, READWRITE, ALIGN=3  // HEAP  表示为堆
__heap_base        // 堆分配从低到高,此时给出堆底地址
Heap_Mem        SPACE   Heap_Size
__heap_limit


                PRESERVE8    // 保持8字节对齐
                THUMB




; Vector Table Mapped to Address 0 at Reset
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors    // 中断向量表开始
                EXPORT  __Vectors_End    // 中断向量结束
                EXPORT  __Vectors_Size  // 中断向量表大小


__Vectors       DCD     __initial_sp               ; Top of Stack      // 首先从这儿跳到 “__initial_sp ”,初始化栈大小
                DCD     Reset_Handler              ; Reset Handler     // 接着跳到“Reset_Handler ” 执行
                DCD     NMI_Handler                ; NMI Handler          //  通俗的讲定义NMI_Handle 中断函数名称,专业的讲就是指定该中断地址
                DCD     HardFault_Handler          ; Hard Fault Handler //  通俗的讲定义HardFault_Handler中断函数名称,专业的讲就是指定该中断地址
                DCD     MemManage_Handler          ; MPU Fault Handler  //  通俗的讲定义MemManage_Handler中断函数名称,专业的讲就是指定该中断地址
                DCD     BusFault_Handler           ; Bus Fault Handler      //  通俗的讲定义 BusFault_Handler 中断函数名称,专业的讲就是指定该中断地址
                DCD     UsageFault_Handler         ; Usage Fault Handler   //  通俗的讲定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值