STM32F4: startup_stm32f40_41xxx.s仿写

内容极大部分参考了Huo的藏经阁的此链接的博客。
源码是 startup_stm32f40_41xxx.s

; SieYuan Copy!
;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
;* File Name          : startup_stm32f40_41xxx.s
;* Author             : MCD Application Team
;* @version           : V1.4.0
;* @date              : 04-August-2014
;* Description        : STM32F40xxx/41xxx devices vector table for MDK-ARM toolchain. 
;*                      This module performs:
;*                      - Set the initial SP
;*                      - Set the initial PC == Reset_Handler
;*                      - Set the vector table entries with the exceptions ISR address
;*                      - Configure the system clock and the external SRAM mounted on 
;*                        STM324xG-EVAL board to be used as data memory (optional, 
;*                        to be enabled by user)
;*                      - Branches to __main in the C library (which eventually
;*                        calls main()).
;*                      After Reset the CortexM4 processor is in Thread mode,
;*                      priority is Privileged, and the Stack is set to Main.
;* <<< Use Configuration Wizard in Context Menu >>>   
;*******************************************************************************
; 
; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
; You may not use this file except in compliance with the License.
; You may obtain a copy of the License at:
; 
;        http://www.st.com/software_license_agreement_liberty_v2
; 
; Unless required by applicable law or agreed to in writing, software 
; distributed under the License is distributed on an "AS IS" BASIS, 
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
; 
;*******************************************************************************
; 自编注释:
; 启动文件工作
; 1. 初始化堆栈空间
; 2. PC指针 Reset_Handler
; 3. 初始化中断向量表
; 4. 系统时钟
; 5. 堆栈初始化完成之后,进入main函数

; 1.(1) 初始化 栈 空间
; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
;	<o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Stack_Size		EQU		0x00000400				; EQU - equation 赋值伪指令, 0x00000400 - 1KB 栈空间

; AREA - 定义伪一个代码段或数据段,格式:AREA	sectionname {,arr} {,arr}
				AREA	STACK, NOINIT, READWRITE, ALIGN=3
; 定义数据段名为 STACK;NOINIT指定数据段仅保留内存单元;READWRITE表示为该数据段可写
; 可读;ALIGN表示字节对齐,2的3次方=8,8字节对齐
Stack_Mem		SPACE	Stack_Size
; Stack_Mem 栈空间的开辟
; SPACE - 申请一块内存单元,大小为 Stack_Size
__initial_sp
; 表示申请内存的结束地址,即栈顶位置。


; 1.(2) 初始化 堆 空间
; <h> Heap Configuration
;	<o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size		EQU		0x00000200

				AREA	HEAP, NOINIT, READWRITE, ALIGN=3
; 定义数据段名为 HEAP;NOINIT指定数据段仅保留内存单元;READWRITE表示为该数据段可写
; 可读;ALIGN表示字节对齐,2的3次方=8,8字节对齐
__heap_base
Heap_Mem		SPACE	Heap_Size
__heap_limit
; Heap_Mem 堆空间的开辟
; __heap_base 在 SPACE 之前,堆空间是向上增长的,__heap_base 指向堆的地址
; __heap_limit 为堆的结束地址

				PRESERVE8						; 当前代码中数据段是8字节对齐
				THUMB							; 兼容THUMB指令集,是堆ARM指令集的一个子集,指令长度为16位


; 3. 中断向量表初始化
; Vector Table Mapped to Address 0 at Reset
				AREA	RESET, DATA, READONLY
; 定义数据段名为 RESET,DATA=数据段,仅为可读
				EXPORT	__Vectors				; 中断向量表首地址
				EXPORT	__Vectors_End			; 中断向量表尾地址
				EXPORT  __Vectors_Size			; 中断向量表大小
; EXPORT - 声明一个标号,这个标号可以被外部的文件使用,使标号具有全局属性

__Vectors		DCD		__initial_sp			; Top of Stack
; DCD - 分配一个或多个以字为单位的内存,以4字节对齐,并要求初始化这些内存
				DCD		Reset_Handler			; Reset Handler
				DCD		NMI_Handler				; NMI Handler, Non-maskable interrupt - 不可屏蔽中断
				DCD		HardFault_Handler		; Hard Fault Handler, 内存溢出、访问越界、堆栈溢出
				DCD		MemMange_Handler		; MPU Fault Handler, 访问了内存管理单元定义的不合法的内存区域,如向只读区域写入数据
				DCD		BusFault_Handler		; Bus Fault Handler
				DCD		UsageFault_Handler		; Usage Fault Handler, 检测到未定义指令或存取内存时有未对齐,还可检测到除数为0和未对齐内存访问
				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 throught EXTI Line detection, PVD - Programmable Votage Detector 可编程电压监测器,用于监视供电电压
				DCD		TAMP_STAMP_IRQHandler			; Tamper and TimeStamps through the EXTI Line
				DCD		RTC_WKUP_IRQHandler				; RTC Wakeup through the EXTI Line
				DCD		FLASH_IRQHandler				; FLASH
				DCD		RCC_IRQHandler					; RCC
				DCD		EXTI0_IRQHandler				; EXTI Line0
				DCD		EXTI1_IRQHandler				; EXTI Line1
				DCD		EXTI2_IRQHandler				; EXTI Line2
				DCD		EXTI3_IRQHandler				; EXTI Line3
				DCD		EXTI4_IRQHandler				; EXTI Line4
				DCD		DMA1_Stream0_IRQHandler			; DMA1 Stream 0
				DCD		DMA1_Stream1_IRQHandler			; DMA1 Stream 1
				DCD		DMA1_Stream2_IRQHandler			; DMA1 Stream 2
				DCD		DMA1_Stream3_IRQHandler			; DMA1 Stream 3
				DCD		DMA1_Stream4_IRQHandler			; DMA1 Stream 4
				DCD		DMA1_Stream5_IRQHandler			; DMA1 Stream 5
				DCD		DMA1_Stream6_IRQHandler			; DMA1 Stream 6
				DCD		ADC_IRQHandler					; ADC1, ADC2 and ADC3
				DCD		CAN1_TX_IRQHandler				; CAN1 - TX
				DCD		CAN1_RX0_IRQHandler				; CAN1 - RX0
				DCD		CAN1_RX1_IRQHandler				; CAN1 - RX1
				DCD		CAN1_SCE_IRQHandler				; CAN1 - SCE
				DCD		EXTI9_5_IRQHadnler				; External Line[9:5]
				DCD		TIM1_BRK_TIM9_IRQHandler		; TIM1 Break and TIM9
				DCD		TIM1_UP_TIM10_IRQHandler		; TIM1 Update and TIM10
				DCD		TIM1_TRG_COM_TIM11_IRQHandler	; TIM1 Trigger and Commutation and TIM11
				DCD		TIM1_CC_IRQHandler				; TIM1 Capture Compare
				DCD		TIM2_IRQHandler					; TIM2
				DCD		TIM3_IRQHandler					; TIM3
				DCD		TIM4_IRQHandler					; TIM4
				DCD		I2C1_EV_IRQHandler				; I2C1 Event
				DCD		I2C1_ER_IRQHandler				; I2C1 Error
				DCD		I2C2_EV_IRQHandler				; I2C2 Event
				DCD		I2C2_ER_IRQHandler				; I2C2 Error
				DCD		SPI1_IRQHandler					; SPI1
				DCD		SPI2_IRQHandler					; SPI2
				DCD		USART1_IRQHandler				; USART1
				DCD		USART2_IRQHandler				; USART2
				DCD		USART3_IRQHandler				; USART3
				DCD		EXTI15_10_IRQHandler			; External Line[15:10]
				DCD		RTC_Alarm_IRQHandler			; RTC Alarm (A and B) through EXTI Line
				DCD		OTG_FS_WKUP_IRQHandler			; USB OTG FS Wakeup through EXTI Line
				DCD		TIM8_BRK_TIM12_IRQHandler		; TIM8 Break and TIM12
				DCD		TIM8_UP_TIM13_IRQHandler		; TIM8 Update and TIM13
				DCD		TIM8_TRG_COM_TIM14_IRQHandler	; TIM8 Trigger and Commutation and TIM14
				DCD		TIM8_CC_IRQHandler				; TIM8 Capture Compare
				DCD		DMA1_Stream7_IRQHandler			; DMA1 Stream 7
				DCD		FSMC_IRQHandler					; FSMC
				DCD		SDIO_IRQHandler					; SDIO
				DCD		TIM5_IRQHandler					; TIM5
				DCD		SPI3_IRQHandler					; SPI3
				DCD		UART4_IRQHandler				; UART4
				DCD		UART5_IRQHandler				; UART5
				DCD 	TIM6_DAC_IRQHandler				; TIM6 and DAC1&2 underrun errors
				DCD		TIM7_IRQHandler					; TIM7
				DCD		DMA2_Stream0_IRQHandler			; DMA2 Stream 0
				DCD		DMA2_Stream1_IRQHandler			; DMA2 Stream 1
				DCD		DMA2_Stream2_IRQHandler			; DMA2 Stream 2
				DCD		DMA2_Stream3_IRQHandler			; DMA2 Stream 3
				DCD		DMA2_Stream4_IRQHandler			; DMA2 Stream 4
				DCD		ETH_IRQHandler					; Ethernet
				DCD		ETH_WKUP_IRQHandler				; Ethernet Wakeup through EXTI Line
				DCD		CAN2_TX_IRQHandler				; CAN2 - TX
				DCD		CAN2_RX0_IRQHandler				; CAN2 - RX0
				DCD		CAN2_RX1_IRQHandler				; CAN2 - RX1
				DCD		CAN2_SCE_IRQHandler				; CAN2 - SCE
				DCD		OTG_FS_IRQHandler				; USB OTG FS
				DCD		DMA2_Stream5_IRQHandler			; DMA2 Stream 5
				DCD		DMA2_Stream6_IRQHandler			; DMA2 Stream 6
				DCD		DMA2_Stream7_IRQHandler			; DMA2 Stream 7
				DCD		USART6_IRQHandler				; USART6
				DCD		I2C3_EV_IRQHandler				; I2C3 Event
				DCD		I2C3_ER_IRQHandler				; I2C3 Error
				DCD		OTG_HS_EP1_OUT_IRQHandler		; USB OTG HS End Point 1 Out
				DCD		OTG_HS_EP1_IN_IRQHandler		; USB OTG HS End Point 1 In
				DCD		OTG_HS_WKUP_IRQHandler			; USB OTG HS Wakeup through EXTI
				DCD		OTG_HS_IRQHandler				; USB OTG HS
				DCD		DCMI_IRQHandler					; DCMI
				DCD		CRYP_IRQHandler					; CRYP crypto
				DCD		HASH_RNG_IRQHandler				; Hash and Rng
				DCD		FPU_IRQHandler					; FPU - Floating Point Unit

__Vectors_End

__Vectors_Size	EQU		__Vector_End - __Vectors


				AREA	|.text|, CODE, READONLY
; 定义数据段名为 |.text|,CODE=代码段,仅为可读
; Reset Handler
Reset_Handler	PROC			; PROC - 定义子程序开始处,与ENDP成对出现
				EXPORT	Reset_Handler			[WEAK]
; [WEAK] 表示弱定义,如果编译器发现在别处定义了同名的函数,则在链接时用别处的地址进行链接,
; 如果其它地方没有定义,编译器也不报错,以此处地址进行链接。

        IMPORT  SystemInit		; system_stm32f4xx.c -> SystemInit() - 系统时钟初始化
        IMPORT  __main			; __main 是 main()入口
; IMPORT - 调用外部文件定义的函数
				
				LDR		R0, =SystemInit
; LDR{条件}	目的寄存器, 存储器 - 从存储器中的数据送到寄存器,属于ARM指令集
; 即将SystemInit()函数地址加载在R0中
				BLX		R0
; BLX{条件} 目标地址 - 跳转指令,跳转到目标地址,始终切换处理器工作状态
; 同时将PC当前内容保存到寄存器R14中,返回时将R14值复制给PC。
; 这里就是为了执行 SystemInit()函数,完成系统时钟初始化
; ARM状态:32位,执行字对齐的32位指令
; Thumb状态:16位,执行半字对齐的16位指令
				LDR		R0, =__main
				BX		R0
; BX{条件} 目标地址 - 跳转到目标地址,可以切换处理器工作状态
; 依据Rm的位[0],为1:更改/保持 Thumb 状态;为0,更改/保持 ARM状态
				ENDP			; ENDP - 子程序结束
; 我理解的是,最后使用BX就是为了执行时适应不同的系统,这部分不太清楚

; Dummy Exception Handlers (infinite loops which can be modified)

NMI_Handler		PROC
				EXPORT	NMI_Handler				[WEAK]
				B		.
; B	. 表示一直在当前指令原地跳转,死循环
				ENDP
HardFault_Handler\
				PROC
				EXPORT	HardFault_Handler		[WEAK]
				B		.
				ENDP
MemManage_Handler\
				PROC
				EXPORT	MemManage_Handler		[WEAK]
				B		.
				ENDP
BusFault_Handler\
				PROC
				EXPORT	BusFault_Handler		[WEAK]
				B		.
				ENDP
UsageFault_Handler\
                PROC
                EXPORT  UsageFault_Handler      [WEAK]
                B       .
                ENDP
SVC_Handler     PROC
                EXPORT  SVC_Handler             [WEAK]
                B       .
                ENDP
DebugMon_Handler\
                PROC
                EXPORT  DebugMon_Handler        [WEAK]
                B       .
                ENDP
PendSV_Handler  PROC
                EXPORT  PendSV_Handler          [WEAK]
                B       .
                ENDP
SysTick_Handler PROC
                EXPORT  SysTick_Handler         [WEAK]
                B       .
                ENDP

Default_Handler	PROC
				
				EXPORT	WWDG_IRQHandler					  [WEAK]
                EXPORT  PVD_IRQHandler                    [WEAK]                      
                EXPORT  TAMP_STAMP_IRQHandler             [WEAK]         
                EXPORT  RTC_WKUP_IRQHandler               [WEAK]                     
                EXPORT  FLASH_IRQHandler                  [WEAK]                                         
                EXPORT  RCC_IRQHandler                    [WEAK]                                            
                EXPORT  EXTI0_IRQHandler                  [WEAK]                                            
                EXPORT  EXTI1_IRQHandler                  [WEAK]                                             
                EXPORT  EXTI2_IRQHandler                  [WEAK]                                            
                EXPORT  EXTI3_IRQHandler                  [WEAK]                                           
                EXPORT  EXTI4_IRQHandler                  [WEAK]                                            
                EXPORT  DMA1_Stream0_IRQHandler           [WEAK]                                
                EXPORT  DMA1_Stream1_IRQHandler           [WEAK]                                   
                EXPORT  DMA1_Stream2_IRQHandler           [WEAK]                                   
                EXPORT  DMA1_Stream3_IRQHandler           [WEAK]                                   
                EXPORT  DMA1_Stream4_IRQHandler           [WEAK]                                   
                EXPORT  DMA1_Stream5_IRQHandler           [WEAK]                                   
                EXPORT  DMA1_Stream6_IRQHandler           [WEAK]                                   
                EXPORT  ADC_IRQHandler                    [WEAK]                         
                EXPORT  CAN1_TX_IRQHandler                [WEAK]                                                
                EXPORT  CAN1_RX0_IRQHandler               [WEAK]                                               
                EXPORT  CAN1_RX1_IRQHandler               [WEAK]                                                
                EXPORT  CAN1_SCE_IRQHandler               [WEAK]                                                
                EXPORT  EXTI9_5_IRQHandler                [WEAK]                                    
                EXPORT  TIM1_BRK_TIM9_IRQHandler          [WEAK]                  
                EXPORT  TIM1_UP_TIM10_IRQHandler          [WEAK]                
                EXPORT  TIM1_TRG_COM_TIM11_IRQHandler     [WEAK] 
                EXPORT  TIM1_CC_IRQHandler                [WEAK]                                   
                EXPORT  TIM2_IRQHandler                   [WEAK]                                            
                EXPORT  TIM3_IRQHandler                   [WEAK]                                            
                EXPORT  TIM4_IRQHandler                   [WEAK]                                            
                EXPORT  I2C1_EV_IRQHandler                [WEAK]                                             
                EXPORT  I2C1_ER_IRQHandler                [WEAK]                                             
                EXPORT  I2C2_EV_IRQHandler                [WEAK]                                            
                EXPORT  I2C2_ER_IRQHandler                [WEAK]                                               
                EXPORT  SPI1_IRQHandler                   [WEAK]                                           
                EXPORT  SPI2_IRQHandler                   [WEAK]                                            
                EXPORT  USART1_IRQHandler                 [WEAK]                                          
                EXPORT  USART2_IRQHandler                 [WEAK]                                          
                EXPORT  USART3_IRQHandler                 [WEAK]                                         
                EXPORT  EXTI15_10_IRQHandler              [WEAK]                                  
                EXPORT  RTC_Alarm_IRQHandler              [WEAK]                  
                EXPORT  OTG_FS_WKUP_IRQHandler            [WEAK]                        
                EXPORT  TIM8_BRK_TIM12_IRQHandler         [WEAK]                 
                EXPORT  TIM8_UP_TIM13_IRQHandler          [WEAK]                 
                EXPORT  TIM8_TRG_COM_TIM14_IRQHandler     [WEAK] 
                EXPORT  TIM8_CC_IRQHandler                [WEAK]                                   
                EXPORT  DMA1_Stream7_IRQHandler           [WEAK]                                          
                EXPORT  FSMC_IRQHandler                   [WEAK]                                             
                EXPORT  SDIO_IRQHandler                   [WEAK]                                             
                EXPORT  TIM5_IRQHandler                   [WEAK]                                             
                EXPORT  SPI3_IRQHandler                   [WEAK]                                             
                EXPORT  UART4_IRQHandler                  [WEAK]                                            
                EXPORT  UART5_IRQHandler                  [WEAK]                                            
                EXPORT  TIM6_DAC_IRQHandler               [WEAK]                   
                EXPORT  TIM7_IRQHandler                   [WEAK]                    
                EXPORT  DMA2_Stream0_IRQHandler           [WEAK]                                  
                EXPORT  DMA2_Stream1_IRQHandler           [WEAK]                                   
                EXPORT  DMA2_Stream2_IRQHandler           [WEAK]                                    
                EXPORT  DMA2_Stream3_IRQHandler           [WEAK]                                    
                EXPORT  DMA2_Stream4_IRQHandler           [WEAK]                                 
                EXPORT  ETH_IRQHandler                    [WEAK]                                         
                EXPORT  ETH_WKUP_IRQHandler               [WEAK]                     
                EXPORT  CAN2_TX_IRQHandler                [WEAK]                                               
                EXPORT  CAN2_RX0_IRQHandler               [WEAK]                                               
                EXPORT  CAN2_RX1_IRQHandler               [WEAK]                                               
                EXPORT  CAN2_SCE_IRQHandler               [WEAK]                                               
                EXPORT  OTG_FS_IRQHandler                 [WEAK]                                       
                EXPORT  DMA2_Stream5_IRQHandler           [WEAK]                                   
                EXPORT  DMA2_Stream6_IRQHandler           [WEAK]                                   
                EXPORT  DMA2_Stream7_IRQHandler           [WEAK]                                   
                EXPORT  USART6_IRQHandler                 [WEAK]                                           
                EXPORT  I2C3_EV_IRQHandler                [WEAK]                                              
                EXPORT  I2C3_ER_IRQHandler                [WEAK]                                              
                EXPORT  OTG_HS_EP1_OUT_IRQHandler         [WEAK]                      
                EXPORT  OTG_HS_EP1_IN_IRQHandler          [WEAK]                      
                EXPORT  OTG_HS_WKUP_IRQHandler            [WEAK]                        
                EXPORT  OTG_HS_IRQHandler                 [WEAK]                                      
                EXPORT  DCMI_IRQHandler                   [WEAK]                                             
                EXPORT  CRYP_IRQHandler                   [WEAK]                                     
                EXPORT  HASH_RNG_IRQHandler               [WEAK]
                EXPORT  FPU_IRQHandler                    [WEAK]					

WWDG_IRQHandler                                                       
PVD_IRQHandler                                      
TAMP_STAMP_IRQHandler                  
RTC_WKUP_IRQHandler                                
FLASH_IRQHandler                                                       
RCC_IRQHandler                                                            
EXTI0_IRQHandler                                                          
EXTI1_IRQHandler                                                           
EXTI2_IRQHandler                                                          
EXTI3_IRQHandler                                                         
EXTI4_IRQHandler                                                          
DMA1_Stream0_IRQHandler                                       
DMA1_Stream1_IRQHandler                                          
DMA1_Stream2_IRQHandler                                          
DMA1_Stream3_IRQHandler                                          
DMA1_Stream4_IRQHandler                                          
DMA1_Stream5_IRQHandler                                          
DMA1_Stream6_IRQHandler                                          
ADC_IRQHandler                                         
CAN1_TX_IRQHandler                                                            
CAN1_RX0_IRQHandler                                                          
CAN1_RX1_IRQHandler                                                           
CAN1_SCE_IRQHandler                                                           
EXTI9_5_IRQHandler                                                
TIM1_BRK_TIM9_IRQHandler                        
TIM1_UP_TIM10_IRQHandler                      
TIM1_TRG_COM_TIM11_IRQHandler  
TIM1_CC_IRQHandler                                               
TIM2_IRQHandler                                                           
TIM3_IRQHandler                                                           
TIM4_IRQHandler                                                           
I2C1_EV_IRQHandler                                                         
I2C1_ER_IRQHandler                                                         
I2C2_EV_IRQHandler                                                        
I2C2_ER_IRQHandler                                                           
SPI1_IRQHandler                                                          
SPI2_IRQHandler                                                           
USART1_IRQHandler                                                       
USART2_IRQHandler                                                       
USART3_IRQHandler                                                      
EXTI15_10_IRQHandler                                            
RTC_Alarm_IRQHandler                            
OTG_FS_WKUP_IRQHandler                                
TIM8_BRK_TIM12_IRQHandler                      
TIM8_UP_TIM13_IRQHandler                       
TIM8_TRG_COM_TIM14_IRQHandler  
TIM8_CC_IRQHandler                                               
DMA1_Stream7_IRQHandler                                                 
FSMC_IRQHandler                                                            
SDIO_IRQHandler                                                            
TIM5_IRQHandler                                                            
SPI3_IRQHandler                                                            
UART4_IRQHandler                                                          
UART5_IRQHandler                                                          
TIM6_DAC_IRQHandler                            
TIM7_IRQHandler                              
DMA2_Stream0_IRQHandler                                         
DMA2_Stream1_IRQHandler                                          
DMA2_Stream2_IRQHandler                                           
DMA2_Stream3_IRQHandler                                           
DMA2_Stream4_IRQHandler                                        
ETH_IRQHandler                                                         
ETH_WKUP_IRQHandler                                
CAN2_TX_IRQHandler                                                           
CAN2_RX0_IRQHandler                                                          
CAN2_RX1_IRQHandler                                                          
CAN2_SCE_IRQHandler                                                          
OTG_FS_IRQHandler                                                    
DMA2_Stream5_IRQHandler                                          
DMA2_Stream6_IRQHandler                                          
DMA2_Stream7_IRQHandler                                          
USART6_IRQHandler                                                        
I2C3_EV_IRQHandler                                                          
I2C3_ER_IRQHandler                                                          
OTG_HS_EP1_OUT_IRQHandler                           
OTG_HS_EP1_IN_IRQHandler                            
OTG_HS_WKUP_IRQHandler                                
OTG_HS_IRQHandler                                                   
DCMI_IRQHandler                                                            
CRYP_IRQHandler                                                    
HASH_RNG_IRQHandler
FPU_IRQHandler

				B		.
				
				ENDP
				
				ALIGN

;5. 堆栈初始化
;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
				IF		:DEF:__MICROLIB				
; 是否有 __MICROLIB 宏定义,即设置中的 Use MicroLIB 的勾选项
				EXPORT	__initial_sp
				EXPORT	__heap_base
				EXPORT	__heap_limit
					
				ELSE
				
				IMPORT	__use_two_region_memory
				EXPORT	__user_initial_stackheap

__user_initial_stackheap
				
				LDR		R0, = Heap_Mem
				LDR		R1, = (Stack_Mem + Stack_Size)
				LDR		R2, = (Heap_Mem + Heap_Size)
				LDR		R3, = Stack_Mem
				BX		LR
; LR - Link Register, 链接寄存器; 用来保存子程序返回地址,异常发生时可返回异常发生前的位置继续执行
; BX	LR, 用于子程序的返回				
				ALIGN
				
				ENDIF
				
				END

;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值