历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2021年10月19日 | stm32专题四:启动文件分析

发布者:等放假的zr0 来源: eefocus关键字:STM32  启动文件 手机看文章 扫描二维码
随时随地手机看文章

stm32的启动文件startup_stm32f10x_hd.s主要包含以下6个部分:


分配栈,包括大小和栈顶地址(不初始化);

分配堆,包括大小和堆起始地址(不初始化);

初始化中断向量表,将栈顶地址初始化为FLASH的0地址,复位程序为0X04地址,并将程序计数器指针PC指向复位程序0X04;

复位程序;

中断服务程序;

初始化1和2分配的堆栈;

以下是启动文件:


;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************

;* File Name          : startup_stm32f10x_hd.s

;* Author             : MCD Application Team

;* Version            : V3.5.0

;* Date               : 11-March-2011

;* Description        : STM32F10x High Density Devices vector table for MDK-ARM 

;*                      toolchain. 

;*                      This module performs:

 

;*                      - Set the initial SP

;*                      - 初始化堆栈指针SP

 

;*                      - Set the initial PC == Reset_Handler

;*                      - 初始化PC指针 == Reset_Handler复位程序,上电复位后的第一个程序

 

;*                      - Set the vector table entries with the exceptions ISR address

;*                      - 以规定的ISR(中断服务请求)地址来设置中断向量表

 

;*                      - Configure the clock system and also configure the external 

;*                        SRAM mounted on STM3210E-EVAL board to be used as data 

;*                        memory (optional, to be enabled by user)

;*                      - 配置系统时钟,配置挂载到stm32板上的外部SRAM(可选项)

 

;*                      - Branches to __main in the C library (which eventually

;*                        calls main()).

;*                      - 调用Ck库函数 __main,去到C的世界

 

;*                      After Reset the CortexM3 processor is in Thread mode,

;*                      priority is Privileged, and the Stack is set to Main.

;* <<< Use Configuration Wizard in Context Menu >>>   

;*******************************************************************************

; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.

; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,

; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE

; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING

; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

;*******************************************************************************

 

 

; 1-栈

; Amount of memory (in bytes) allocated for Stack

; 为堆栈分配内存,以字节为单位

 

; Tailor this value to your application needs

; 可以根据需要修改栈的大小

 

; Stack Configuration

; 配置栈(栈就是一块内存):变量(局部/全局),函数调用

 

;    Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>

;

 

Stack_Size      EQU     0x00000400

; 定义栈大小 1024字节(1KB)

 

                AREA    STACK, NOINIT, READWRITE, ALIGN=3

;               告诉编译器汇编一个数据段,段名为STACK,不初始化,可读可写,8字节对齐

 

Stack_Mem       SPACE   Stack_Size

;               分配内存空间,单位字节,大小为Stack_Size

__initial_sp

; 栈顶地址

 

 

; 2-堆

; Heap Configuration

; 配置堆,主要用于动态内存分配,malloc()

 

;     Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>

;

 

Heap_Size       EQU     0x00000200

; 512字节

 

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base

Heap_Mem        SPACE   Heap_Size

__heap_limit

; 堆起始地址

 

                PRESERVE8   ; 当前堆栈以8字节对齐

                THUMB       ; 兼容THUMB指令集,THUMB是16位指令集,现在使用的THUMB-2是32位指令

 

 

; 3-中断向量表

; Vector Table Mapped to Address 0 at Reset

; 初始化中断向量表,向量表在复位时映射到地址0

 

                AREA    RESET, DATA, READONLY

;               汇编一个数据段,属性只读

 

                EXPORT  __Vectors       

;               向量表起始地址

 

                EXPORT  __Vectors_End

;               向量表结束地址

 

                EXPORT  __Vectors_Size

 

__Vectors       DCD     __initial_sp               ; Top of Stack

;               把栈顶地址初始化成向量表的起始地址,解释如下:

;               向量表从FLASH的0地址开始放置,以4个字节为一个单位,地址0存放的是栈

;               顶地址,0X04存放的是复位程序的地址,以此类推。从代码上看,向量表中存放

;               的都是中断服务函数的函数名,可我们知道C语言中的函数名就是一个地址。      

 

                DCD     Reset_Handler              ; Reset Handler

;               初始化复位程序地址,地址0X04

 

                DCD     NMI_Handler                ; NMI Handler

                DCD     HardFault_Handler          ; Hard Fault Handler

                DCD     MemManage_Handler          ; MPU Fault Handler

                DCD     BusFault_Handler           ; Bus Fault Handler

                DCD     UsageFault_Handler         ; Usage Fault Handler

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     SVC_Handler                ; SVCall Handler

                DCD     DebugMon_Handler           ; Debug Monitor Handler

                DCD     0                          ; Reserved

                DCD     PendSV_Handler             ; PendSV Handler

                DCD     SysTick_Handler            ; SysTick Handler

 

                ; External Interrupts

                DCD     WWDG_IRQHandler            ; Window Watchdog

                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect

                DCD     TAMPER_IRQHandler          ; Tamper

                DCD     RTC_IRQHandler             ; RTC

                DCD     FLASH_IRQHandler           ; Flash

                DCD     RCC_IRQHandler             ; RCC

                DCD     EXTI0_IRQHandler           ; EXTI Line 0

                DCD     EXTI1_IRQHandler           ; EXTI Line 1

                DCD     EXTI2_IRQHandler           ; EXTI Line 2

                DCD     EXTI3_IRQHandler           ; EXTI Line 3

[1] [2] [3] [4]
关键字:STM32  启动文件 引用地址:stm32专题四:启动文件分析

上一篇:stm32专题三:位带操作—GPIO输出和输入
下一篇:stm32专题五:时钟树(一)寄存器

推荐阅读

今天,我们将进一步详细谈谈什么是噪声,它是如何分类的,并介绍安森美半导体提供的超低噪声LDO。噪声分为两类:内部噪声和外部噪声。内部噪声是不可避免的,每个电子设备都会产生内部噪声。LDO由理想的源供电,这意味着它不受外界影响,因此在输入端没有外部噪声(虽然LDO在输出端确实有内部噪声)。外部噪声是由外界影响(输入处的纹波——实际源)产生的各...
串行LCD12864引脚接法:180144_s4QJ_1413857.jpg实现代码(MSP430):/* * 12864.c * Created on: 2014-7-15 * Author: bazingagain */#include <msp430.h>#include "12864.h" /** * 函数名:delay * 功能:延时函数,延时时间为100us * x * 参数:x * 返回值:无 */void delay(uint x){ uint i,j; for(j=0;j<x;j++) for(i=0;i<...
泄密者 Sleepy Kuma 援引韩国网站 Clien 的消息称,LG 可能不会在 2021 年上半年发布搭载骁龙 875 的旗舰机。  骁龙 875 是高通的首款 5nm 芯片,可能会在 12 月亮相。虽然不知道 LG 为什么决定不在明年上半年发布搭载该芯片的旗舰智能手机,但这背后可能有两个原因。 高通一直在稳步提高其旗舰芯片的价格,预计今...
随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信方式有并行通信和串行通信两种。并行通信通常是将数据字节的各位用多条数据线同时进行传送 。图一:并行通信串行通信是将数据字节分成一位一位的形式在。图二:串行同行串行通信的传输方向单工是指...

史海拾趣

问答坊 | AI 解惑

非接触式IC卡读写模块的应用开发

本文介绍了PHILIPS公司的MF1ICS50非接触式IC卡的内部结构、工作原理及基于基站芯片MFRC500的嵌入式读写模块的软硬件设计。…

查看全部问答∨

常用电子技术名词解释

1、电阻率---又叫电阻系数或叫比电阻。是衡量物质导电性能好坏的一个物理量,以字母ρ表示,单位为欧姆*毫米平方/米。在数值 上等于用那种物质做的长1米截面积为1平方毫米的导线,在温度20C时的电阻值,电阻率越大,导电性能越低。则物质的电阻率随 ...…

查看全部问答∨

电子元器件之电感基础知识 图文介绍

1.1 电感的定义: 电感是导线内通过交流电流时,在导线的内部及其周围产生交变磁通,导线的磁通量与生产此磁通的电流之比。 当电感中通过直流电流时,其周围只呈现固定的磁力线,不随时间而变化;可是当在线圈中通过交流电流时,其周围将呈现出随 ...…

查看全部问答∨

大虾,救我呀!

指教啊 Error: Top-level design entity "lianxi" is undefined Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 0 warnings         Error: Peak virtual memory: 179 megabytes &nb ...…

查看全部问答∨

一篇最新的电流模式BUCK小信号数学模型的论文_提出修正的斜率补偿参数

一篇最新的电流模式BUCK小信号数学模型的论文_提出修正的斜率补偿参数…

查看全部问答∨

USB 设备插入电脑显示无法识别的设备,加上上拉后问题解决,WHY?

各位高手,最近小弟在升级软件的时候发现,有的设备可以通过USB端口与电脑连接升级,而有些缺找不到口,或者升到一半中断。后来我们尝试在外部D+上接了上拉电阻,发现此问题消失,但是我们芯片内部已经有了这个上来,为什么还要外接,另外,接了上 ...…

查看全部问答∨

zlg7290如何实现按键弹起检测?

系统为2440+wince。 功能要求为:按键的按下和弹起都能检测到。 刚到始使用的键盘芯片为zlg7290,做完硬件,调试时才发现按键的弹起检测不到。 仔细看资料才发现,zlg7290按键的弹起不会产生中断。 请各位高手指教,如何通过其它的辅助的方法, ...…

查看全部问答∨

USB HID 设备获取字符串描述符失败,着急!

前提条件:设备句柄hid_dev_ok 用CreateFile()建立是好的。 硬件上写的firmware我也确认是好的,用bushound,来读取我长达200个char长度的字符串描述符没有问题。 但用VC2005编译环境(包含DDK的库调用),弄出来的程序获取设备字符串描述符就出问 ...…

查看全部问答∨

高手的挑战,wince实现一键关闭当前应用程序,相当于alt+f4

如题,设备上有一个键,无论我当前运行什么程序,按一下就退出了。相当于 windows 的ALT+F4, 请高手给出思路,或其它,感激不尽。 PS:不是在应用程序里写代码…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved