STM32 Startup**.s文件中使用的 __main C函数入口

 

代码:

; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

  

此处可见,汇编代码跳转至__main函数执行 
作用: __main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境(如"段拷贝"程序,即从加载域到执行域转化程序),最后自动跳转到main()。

函数__main()main()区别详见: https://blog.csdn.net/eleven_yy/article/details/7751995

转载于:https://www.cnblogs.com/NickQ/p/10479713.html

### 回答1: startup_stm32f10x_ld.s是一个汇编语言文件,用于启动STMicroelectronics的STM32F10x微控制器系列的LD型号。它是一个片上系统(SoC)启动文件,具有以下几个主要功能: 1. 初始化向量表:在启动过程,处理器将从向量表获取初始断服务程序的地址。startup_stm32f10x_ld.s文件包含了该向量表的初始化,通过设置每个断向量的地址,确保正确的断服务程序能够在断发生时执行。 2. 复位处理:当微控制器上电或复位时,startup_stm32f10x_ld.s文件执行一些必要的初始化操作。这包括将堆栈指针设置为正确的值,初始化BSS段的全局变量为零,以及调用C库的初始化函数。 3. 跳转到主程序:在完成所有必要的初始化后,startup_stm32f10x_ld.s文件跳转到主程序入口点。主程序可以是C代码,也可以是汇编语言代码。 此外,startup_stm32f10x_ld.s文件还包含其他一些处理器和外设的特定配置设置,比如时钟设置和断优先级设置。这些设置将确保在启动和运行期间系统正常工作。 总之,startup_stm32f10x_ld.s文件STM32F10x微控制器LD型号启动过程的关键文件,它负责初始化向量表、处理复位和跳转到主程序。 ### 回答2: startup_stm32f10x_ld.s是一个汇编语言文件,用于启动STM32F10x系列微控制器。在嵌入式开发,启动文件是一个必要的组件,它包含了一些特定的指令和配置,用于初始化微控制器的各个部分。 startup_stm32f10x_ld.s文件首先定义了一些符号常量,如堆栈大小、向量表起始地址等。然后,它定义了一个叫reset的函数,这个函数是微控制器上电复位后第一个执行的代码。 在reset函数startup_stm32f10x_ld.s文件会执行一系列的初始化操作。首先,它会将寄存器设置为默认值,例如将控制寄存器设置为默认状态、禁用断等。接着,它会初始化断向量表,将内核断向量和外设断向量连接到相应的断服务函数。 之后,startup_stm32f10x_ld.s文件会初始化存储器。它会将存储器保护设置为默认状态、配置堆栈指针、初始化静态存储器和堆栈。接着,它会执行一段汇编指令,用于调用主函数startup_stm32f10x_ld.s文件的最后一部分是一些断处理函数断处理函数用于处理微控制器发生的各种断,如时钟断、串口断等。这些函数会在相应的断发生时被自动调用,执行相应的断处理代码。 总之,startup_stm32f10x_ld.s文件是一个重要的启动文件,它通过初始化和配置微控制器的各个部分,为程序的正常运行提供了基础。 ### 回答3: startup_stm32f10x_ld.s文件STM32F10x系列芯片的启动文件,它在系统上电或复位后被系统加载执行,用于初始化硬件、配置断向量表和启动主函数。 该文件的主要功能包括以下几个方面: 1. 系统初始化:定义了一些默认的寄存器值,例如将堆栈指针(SP)指向指定的栈顶,并设置处理器工作模式为特权模式。此外,还会调用SystemInit函数,用于初始化系统时钟。 2. 断向量表配置:定义了所有可能的断向量,包括硬件断和软件断。对于每个断向量,都指定了相应的断处理函数的地址,并在启动文件进行了配置。 3. 异常处理程序:定义了一些异常处理程序,如复位异常、NMI非屏蔽断异常、硬件错误异常、硬件断异常等。这些异常处理程序用于异常情况下的处理,例如重启系统、处理硬件错误等。 4. 主函数入口:定义了Reset_Handler函数作为主函数入口点。当系统上电或复位后,将首先执行Reset_Handler函数。在该函数,会进行一些必要的初始化操作,然后调用main函数启动用户应用程序的执行。 总的来说,startup_stm32f10x_ld.s文件STM32F10x系列芯片的启动文件,负责初始化系统硬件和断向量表配置,并提供主函数入口点。它为系统启动提供了必要的支持和准备工作。用户可以根据自己的需求对该文件进行定制和修改,以满足特定应用的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值