Keil 启动文件详解

本文详细介绍了Keil MDK中的启动文件,包括启动文件的主要任务,如初始化栈指针和PC指针,设置中断向量表,配置系统时钟,以及调用C库函数__main()进入C程序。文中还详细讲解了栈和堆的初始化,复位程序,以及中断服务程序的工作原理。通过对启动代码的解析,读者可以深入理解系统启动流程。
摘要由CSDN通过智能技术生成


1. 启动文件详解

1.1 启动文件的主要任务

    启动文件会完成以下五件事:

  • 初始化堆栈指针 SP=__initial_sp
  • 初始化PC指针 PC=Reset_Handler
  • 初始化中断向量表
  • 配置系统时钟
  • 调用C库函数__main()初始化用户堆栈,从而最终调用main函数去到C世界

1.2 启动文件中的汇编指令

    汇编指令可以通过keil->help->uVision Help->搜索中查找,启动文件中的汇编指令如下:

在这里插入图片描述

1.3 启动代码讲解

1.3.1 栈的初始化

在这里插入图片描述

    此处开辟栈的大小为0x00000400(1KB), 名字为STACK, NOINIT即不初始化,READWRITE表示可读可写,ALIGN=3,表示2^3=8字节对齐。栈的作用是用于局部变量,函数调用,函数形参等开销。栈是在SRAM中开辟的,因此栈的大小不能超过SRAM。如果局部变量很多,或者函数调用很深,可能需要增大栈的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值