STM32单片机启动文件startup_stm32f10x_hd.s详解

最新更新时间:2022-01-28来源: eefocus关键字:STM32  单片机  启动文件  startup_stm32f10x_hd 手机看文章 扫描二维码
随时随地手机看文章

启动文件源码如下:


; 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    ;EQU定义栈空间的大小 1024字节,栈空间由编译器自动分配变量所占内存,该汇编语句等效于#define Stack_Size 0x00000400

 

                AREA    STACK, NOINIT, READWRITE, ALIGN=3 ;定义一个名为STACK的内存单元,它是可读写的,对齐方式为2^3=8字节对齐

Stack_Mem       SPACE   Stack_Size    ;SPACE分配连续的栈存储空间,大小为0x00000400(1K),把首地址赋给Stack_Mem

__initial_sp      ;初始化堆栈指针,指向堆栈顶。

                                                  

; Heap Configuration

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

;

 

;堆初始化

Heap_Size       EQU     0x00000200    ;EQU定义堆空间的大小,堆空间由人为手动分配变量所占内存,该汇编语句等效于#define Heap_Size 0x00000200

 

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3  ;定义一个名为HEAP的内存单元,它是可读写的,对齐方式为2^3=8字节对齐

__heap_base ;堆起始地址 

Heap_Mem        SPACE   Heap_Size ;SPACE分配连续的堆存储空间,大小为0x00000200(512Bytes),把首地址赋给Heap_Mem

__heap_limit   ;堆终止地址,与__heap_base配合限制堆的大小 

 

                PRESERVE8     ;告诉编译器以8字节对齐,命令指定当前文件保持栈的八字节对齐

                THUMB   ;告诉编译器使用THUMB指令集,THUMB 必须位于使用新语法的任何Thumb代码之前;定义复位段(中断向量表),并初始化

 

;中断向量表定义

; Vector Table Mapped to Address 0 at Reset ;中断向量表默认从地址0开始,如果使用了向量表重定位,则从重定位地址开始。假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000。

                AREA    RESET, DATA, READONLY ;定义一个名为RESET的数据段,它是只读类型的。

                EXPORT  __Vectors ;声明全局变量_Vectors,该标号可在其他文件中使用,表示中断向量表入口地址

                EXPORT  __Vectors_End ;向量表终止地址

                EXPORT  __Vectors_Size ;向量表空间大小

 

 

__Vectors       DCD     __initial_sp               ; Top of Stack  Top of Stack 第一个表项是栈顶地址;该处物理地址值即为 __Vetors 标号所表示的值;该地址中存储__initial_sp所表示的地址值,

;大小为一个字(32bit) 

                DCD     Reset_Handler              ; Reset Handler      复位异常,装载完栈顶后,第一个执行的,并且不返回。

                DCD     NMI_Handler                ; NMI Handler 不可屏蔽中断

                DCD     HardFault_Handler          ; Hard Fault Handler  硬件错误中断

                DCD     MemManage_Handler          ; MPU Fault Handler  内存管理错误中断

                DCD     BusFault_Handler           ; Bus Fault Handler  总线错误中断,一般发生在数据访问异常,比如fsmc访问不当

                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  挂起异常,此处可以用作RTOS的上下文切换异常,这是被推荐使用的,因为Cortex-M4会在异常发生时自动保存R0-R3,R12,R13(堆栈指针SP),R14(链接地址,也叫返回地址LR,在异常返回时使用),R15(程序计数器PC,为当前应用程序+4)和中断完成时自动恢复,我们只需保存R4-R11,大大减少了中断响应和上下文切换的时间。

                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

                DCD     EXTI4_IRQHandler           ; EXTI Line 4

                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1

                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2

                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3

                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4

                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5

                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6

                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7

                DCD     ADC1_2_IRQHandler          ; ADC1 & ADC2

                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX

                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0

                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1

                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE

                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5

                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break

                DCD     TIM1_UP_IRQHandler         ; TIM1 Update

                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation

                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare

                DCD     TIM2_IRQHandler            ; TIM2

                DCD     TIM3_IRQHandler            ; TIM3

                DCD     TIM4_IRQHandler            ; TIM4

[1] [2] [3] [4]
关键字:STM32  单片机  启动文件  startup_stm32f10x_hd 编辑:什么鱼 引用地址:STM32单片机启动文件startup_stm32f10x_hd.s详解

上一篇:STM32系列单片机在进入main函数前都在干些什么?
下一篇:关于STM32系列单片机中断触发时间问题

推荐阅读

主被动安全双双领先:新款Model S摘得Euro NCAP测试最高分
2012年,Model S(参数|询价)一上市,就向全世界证明了电动汽车可以比燃油车更安全。2014年,欧洲新车安全评估协会(Euro NCAP)和美国国家公路交通安全管理局(NHTSA)这两个权威机构都对Model S给予了五星安全肯定,成为当时世界上唯一的“双五星”车型。如今,在安全标准更加严格的前提下,新款Model S再次获得了欧洲NCAP的“五星”认可,这也是对特斯拉在安全能力方面不断提升的高度认可。继Model Y和Model 3被全球主流评级机构授予“五星安全大满贯”后,新款Model S在11月16日的欧洲NCAP安全测试中再次获得“五星安全”评级。值得注意的是,Model S已成为迄今为止评估车辆中总分最高的车辆,
发表于 2022-11-18
主被动安全双双领先:新款Model <font color='red'>S</font>摘得Euro NCAP测试最高分
U-Boot-1.1.6移植到MINI2440开发板(2) —— S3C2440相关修改
前面已经大致了解了U-Boot的编译流程,下面开始移植。(没有找到知乎的代码高亮功能。。。)开始移植:首先修改顶层Makefile:添加u-boot.dis的支持,有助于后续的分析(添加$(obj)u-boot.dis):------- Makefile-------239 ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(obj)u-boot.dis $(U_BOOT_NAND)添加mini2440_config:------- Makefile-------1882 mini2440_config : unconfig1883 @$(MKCONFIG)
发表于 2022-11-18
STM32入门系列-开发工具keil5安装
主要介绍如下三部分内容:keil5软件获取keil5安装安装STM32芯片包软件获取可以通过搜索引擎搜索关键字“KEIL5下载”,找到其官方网站http://www.keil.com。我们这里使用MDK5.14版本,如果后面出了更高的版本选择性升级即可,不过也没有必要什么都追求最新的,这一个软件用着习惯就行。登录armkeil官方网站,网站首页有软件下载连接,在这里我们选择MDK-Arm。会让你先注册,注册完成之后就可以开始下载了。软件安装安装此软件时一定要注意以下几点:安装路径不能带中文,必须是英文路径。安装目录不能跟51的KEIL或者KEIL4冲突,三者目录必须分开。KEIL5的安装比起KEIL4多了一个步骤,必须添加芯片包,不
发表于 2022-11-18
<font color='red'>STM32</font>入门系列-开发工具keil5安装
STM32入门系列-存储器与寄存器介绍
介绍两部分内容:什么是存储器映射什么是寄存器及寄存器映射为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础。等明白了如何使用 C 语言封装底层寄存器,也就为后面学习库函数的开发做好了铺垫。什么是存储器映射程序存储器、数据存储器、寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,而编程时就是操作这一块地方。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。 STM32F103ZET6 数据手册中存储器映射图如下所示。从上图中可以看到 ARM 把这 4GB 的存储
发表于 2022-11-18
STM32入门系列-GPIO概念介绍
GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。不过 GPIO 最简单的应用还属点亮 LED 灯了,只需通过软件控制 GPIO 输出高低电平即可。当然 GPIO 还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。其中STM32F103xC、STM32F103xD和STM32F103xE有144个引脚的芯片如下图所示。那么是不是所有引脚都是 GPIO 呢?当然不是,STM32 引脚可以分为这么几大类:电源引脚:引脚图中的 VDD、V
发表于 2022-11-18
STM32入门系列-GPIO结构
已经了解了STM32 GPIO的基本概念及引脚分类。现在来看下STM32 GPIO内部的结构是怎样的。IO端口位的基本结构如下图所示。从图中可以看出GPIO内部结构还是比较复杂的,只要将这张GPIO结构图理解好,那么关于GPIO的各种应用模式将非常清楚。图中最右端I/O端口就是STM32芯片的引脚,其它部分都在STM32芯片内部。上图中我们将每部分都用红色数字标号了,按照顺序我们逐一讲解。保护二极管引脚内部加上这两个保护二级管可以防止引脚外部过高或过低的电压输入,当引脚电压高于VDD_FT或VDD时,上方的二极管导通吸收这个高电压,当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。尽管STM32芯片内部有
发表于 2022-11-18
<font color='red'>STM32</font>入门系列-GPIO结构

推荐帖子

EEWORLD大学堂----什么是有源RFID
什么是有源RFID:http://training.eeworld.com.cn/course/400EEWORLD大学堂----什么是有源RFID
chenyy RF/无线
f28335数据转换问题
如何实现把result=2.28变成16进制数据进行显示?比如wacthwindow那种。通过什么函数来实现呢? f28335数据转换问题
powered 微控制器 MCU
单片机串行通信的结构组成及工作原理解析
串行通信方式是数据传输的一种方式。这种方式操作简单,连接少,传输距离远,因而在信息传送,尤其是在远距离的传送中得到了广泛的应用。目前常用的串行通信方式有RS-232C,RS-422A,RS-423A及RS-485A等。RS-232C是通用串行接口,以电平形式传输信号,只需3根线就可在两个设备之间交换信息,最高传输速率为20Kb/s,此时允许设备之间的最远距离为15m。为了改进RS-232C传输速率低,传输距离短的不足,EIA又推出了RS-422A,R
Jacktang 微控制器 MCU
在c#中如何显示大与1.5兆的图片
我用c#做了一个wince下的看图程序,每当打开一个大于1.5mb的图片时就出错,提示outofmemoryexception错误,而有些文章上介绍用SHloadImagefile但是为什么c#api中没有呢,大家有没有好的解决方法,如果c#中有那么他在那个动态库下呀,谢谢各位大哥了,急 在c#中如何显示大与1.5兆的图片
gues123 嵌入式系统
某宝上某号称节能器是真的吗?
插上去就能节电?这么个东西还有接近700的交易。。。好评如潮。。。 某宝上某号称节能器是真的吗?
freebsder 综合技术交流
测评汇总:中科亿海微EQ6HL45 1V0开发板
活动详情:【中科亿海微EQ6HL451V0开发板】更新至2022-11-14测评报告汇总:@卿小小【中科亿海微EQ6HL45开发平台测评体验】+06.扩展接口-DAC测试(zmj)【中科亿海微EQ6HL45开发平台测评体验】+05.扩展接口-LCD测试(zmj)【中科亿海微EQ6HL45开发平台测评体验】+04.RTC上板测试与Debug(zmj)【中科亿海微EQ6HL45开发平台测评体验】+03.流水灯仿真和上板测试(zmj)【中科亿海微EQ6HL45开发平台测评体验】+02.eLinx
EEWORLD社区 测评中心专版
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved