STM32F4的启动文件startup_stm32f4xx.s说明

本文档详细解析了STM32F4启动文件startup_stm32f4xx.s的六个部分,包括栈和堆的设置、中断向量表定义、中断事件处理等。通过学习,读者可以了解启动文件在STM32F4 Discovery开发中的作用,以及如何处理编译问题。
摘要由CSDN通过智能技术生成

由于我是初学,所有的都是网上学习和个人理解,错误在所难免,这个只是为我自己做的一个笔记(以后发现需要补充的,会不定期补充更新),如果你们看见有错误的地方,多多指教。

        软件平台:Keil MDK 4.6

        硬件平台:STM32F4 Discovery

        启动文件:startup_stm32f4xx.s,版本1.0.0,日期2011.9.30

        参考资料:UM1467 User manual。Getting started with software and firmware environments for the STM32F4DISCOVERY Kit

        首先,我们需要建立工程,在使用寄存器配置的方法时,需要向工程中添加启动文件和包含main函数的文件,即startup_stm32f4xx.s和main.c两个文件,其中启动文件在创建项目的时候已经自动添加进去了,而main文件需要咱们自己添加进去,保存。在main文件中添加如下程序即可编译。

        #include <stm32f4xx.h>

        int main(void)

        {

                while(1);

        }

        编译不通过?是不是缺少一个SystemInit函数,此时看启动文件,如果版本和我的一样,则看第172和173行,是不是先调用了SystemInit,然后调用了main。此时修改方法很多,我当时有两种办法,一种是向工程中添加了system_stm32f4xx.c文件,还有一种是在main文件中自己写SystemInit函数。这两种办法都成功通过了编译。官方提供的system_stm32f4xx.c文件中有现成的SystemInit函数,这个函数定义了一些系统时钟等这个文件在下一篇笔记中说一下。

        下面着重说启动文件startup_stm32f4xx.s。 

        第一部分:栈设置

Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp

        这段话共4行,

第一行的意思是,定义Stack_Size数值为16进制的400;

第二行的意思是,开辟一个堆栈段,段名为STACK

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值