STM32的启动模式和启动文件

STM32的启动模式和启动文件

        每个处理器在出厂是已经固化了其寄存器的默认值,这些值决定了处理器上电时刻的行为。 程序计数器的默认值决定了处理器从那个具体的地址过去第一条需要执行的指令。例如(华大460默认值0x0000 0000) ,则程序从(0x0000 0000)开始运行。至于是从哪个存储设备启动,需要硬件设计来决定,

三种启动模式(通过BOOT【1:0】引脚选择)

(1) BOOT0 = 0 : 主闪存启动(正常工作模式)

(2) BOOT1 = 0, BOOT0 = 1 : 系统存储器启动(启动程序由厂家决定)

(3) BOOT1 = 1, BOOT0 = 1 : 内置SRAM启动(调试时使用)(可解除FLASH的读写保护)

启动文件

Stack_Size      EQU     0x00000200
​
                AREA    STACK, NOINIT, READWRITE, ALIGN=3 
                ;//伪指令AREA,表示开辟Stack_Size大小的内存空间作为栈,段名是STACK
                ;//NOINIT:指此数据段仅保留内存单元,内存单元的值无初始化或初始化为0
Stack_Mem       SPACE   Stack_Size
                ;//分配连续的Stack_Size字节的存储单元,并初始化为0
__initial_sp    ;//栈顶
​

​
Heap_Size       EQU     0x00000000
​
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
                ;//ALIGN 8字节对其
__heap_base     ;//堆栈空间起始地址
Heap_Mem        SPACE   Heap_Size
__heap_limit    ;//堆栈空间结束地址
​
                IMPORT xPortPendSVHandler ;//IMPORT声明来自外部的文件
                IMPORT xPortSysTickHandler
                IMPORT vPortSVCHandler
​
​
                PRESERVE8 ;//当前文件8字节对其
                THUMB
​
​
; Vector Table Mapped to Address 0 at Reset
​
                AREA    RESET, DATA, READONLY ;//只读数据段,段名RESET
                EXPORT  __Vectors  ;//EXPORT为声明外部标号 可在其他文件引用
         
;// DCD指令:开辟一段空间,后面的__initial_sp,Reset_Handler等类似函数指针的作用,指向中断服务函数
__Vectors       DCD     __initial_sp              ; Top of Stack
                DCD     Reset_Handler             ; Reset Handler
                DCD     NMI_Handler               ; NMI Handler
​
                AREA    |.text|, CODE, READONLY  ;//可读代码段,段名.text
​
​
; Reset Handler
​
Reset_Handler   PROC        ;//PROC  ENDP  程序分段
                EXPORT  Reset_Handler             [WEAK];//类似弱定义
                IMPORT  __main              ;//IMPORT声明来自外部的文件
                LDR     R0, =__main     ;//__main完成堆栈初始化的工作,最后跳转到 C 程序中的 main 函数,有的文件在这之前会执行SystemInit(),配置时钟
                BX      R0
                ENDP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值