STM32F103启动过程详细点从加载文件开始
时间: 2024-04-10 11:30:51 浏览: 117
当STM32F103芯片上电或接收到外部复位信号时,它会按照以下步骤进行启动过程:
1. 复位向量表加载:在复位状态下,STM32F103会将复位向量表的地址加载到内部的向量表寄存器中。复位向量表包含了一系列中断服务函数的入口地址。
2. 时钟初始化:在复位状态下,默认时钟源为内部高速晶振(HSI)振荡器。启动时钟的配置可以通过寄存器进行设置,包括选择时钟源、配置时钟分频器等。可以根据具体需求进行相关配置。
3. 设置堆栈指针:STM32F103使用两个堆栈指针:主堆栈指针(MSP)和进程堆栈指针(PSP)。在启动过程中,首先要设置主堆栈指针,即将堆栈指针(SP)设置为系统的初始堆栈地址。
4. 初始化全局变量:在启动过程中,初始化代码会对全局变量进行初始化,将其赋予预定义的初值。这个过程通常由编译器生成的启动文件(如startup_stm32f103.s)负责执行。
5. 复制初始化数据段:启动代码会将存储在ROM中的初始化数据段(例如常量、静态变量等)复制到RAM中的相应位置。这样可以确保在程序执行过程中可以对这些数据进行读写操作。
6. 清零未初始化数据段:启动代码会将存储在RAM中的未初始化数据段(例如全局变量等)清零,以确保这些数据的初值为零。
7. 调用主函数:最后,启动代码会调用main函数作为程序的入口点,从而开始执行用户代码。在调用main函数之前,还可以进行一些硬件初始化、外设配置等操作。
需要注意的是,具体的启动过程可能会因为不同的开发环境、编译器和启动文件而有所不同。可以通过查阅STM32F103的参考手册、启动文件或相关文档来了解更详细的启动过程和配置方法。
阅读全文