STM32F429--启动文件简单分析

下面的内容是stm32f429的启动文件拷贝过来的,并对其部分进行了说明

;******************** © COPYRIGHT 2016 STMicroelectronics ********************
;* File Name : startup_stm32f429_439xx.s
;* Author : MCD Application Team
;* @version : V1.8.0
;* @date : 09-November-2016
;* Description : STM32F429xx/439xx 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/SDRAM mounted
;* on STM324x9I-EVAL boards 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.
上述讲的就是启动文件的作用
1- 初始化堆栈指针SP
2- 初始化PC指针,指向复位程序
3- 初始化中断向量表
4- 配置系统时钟
5- 调用C库函数_main,最终进入C世界

;* <<< 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.
;
;*******************************************************************************

; 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
说明:
1KB的栈(Stack)空间大小 0x00000400 = 41616 = 1024 =1 KB
栈:用于局部变量、函数调用、函数形参的开销
EQU:宏定义的伪指令,相当于等于的意思,类似于C中的define
AREA:告诉汇编器汇编一个新的代码段或者数据段
SPACE:用于分配一定大小的内存空间,单位为字节
__initial_sp 紧挨着SPACE语句放置,表示栈的结束地址,即栈顶地址
栈是由高向低生长的。

要怎么找到指令说明呢?
打开我们的Keil–>Help–>uVision Help -->搜索–>输入搜索关键词word
–>Assembler User Guide:word
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
说明:
先开辟一段栈空间,大小为1KB,不初始化它,可读可写,按2的3次方8字节对齐。
__initial_sp 表示栈的结束地址

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

Heap_Size EQU 0x00000200

            AREA    HEAP, NOINIT, READWRITE, ALIGN=3

__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit

            PRESERVE8
            THUMB

说明:
HEAP–堆
用于动态内存的分配,malloc函数
用的比较少
PRESERVE8:指定当前文件的堆栈按照8字节对齐
THUMB:表示后面指令为THUMB指令。THUMB是ARM以前的指令集,16bit,
现在的Cortex-M系列的都使用THUMB-2指令集,THUMB-2是32位的,兼容
16位和32位的指令,是THUMB的超集。

EXPORT:声明一个标号具有全局属性,【可被外部的文件使用】。
如果是IAR编译器,则使用的是GLOBAL这个指令。

DCD:分配一个或者多个以字为单位的内存,以四字节对齐,
并要求初始化这些内存。在向量表中,DCD分配了一堆内存,
并且以ESR的入口地址初始化它们。

; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size

下面用__Vectors关键字分配了一连串的内存。
向量表:
1-向量表实际上是一个32位的整型数组,一个元素对应一个异常(ESR),
数组元素存的就是ESR的入口地址。异常==中断
2- 向量表在复位后从FLASH的0地址开始,具体的初始化值查询参考手册的中断章节。
从代码上看,向量表中存放的都是中断服务函数的【函数名】,我们知道C语言中的
函数名就是一个地址。后续写中断函数,名称要参考下面的XXX_Handler

__Vectors DCD __initial_sp ; Top of Stack
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
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 detection                        
            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 ADC3s                            
            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_IRQHandler                ; External Line[9:5]s                                    
            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]s                                  
            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 Stream7                                           
            DCD     FMC_IRQHandler                    ; FMC                                             
            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
            DCD     UART7_IRQHandler                  ; UART7
            DCD     UART8_IRQHandler                  ; UART8
            DCD     SPI4_IRQHandler                   ; SPI4
            DCD     SPI5_IRQHandler                   ; SPI5
            DCD     SPI6_IRQHandler                   ; SPI6
            DCD     SAI1_IRQHandler                   ; SAI1
            DCD     LTDC_IRQHandler                   ; LTDC
            DCD     LTDC_ER_IRQHandler                ; LTDC error
            DCD     DMA2D_IRQHandler                  ; DMA2D

__Vectors_End

__Vectors_Size EQU __Vectors_End - __Vectors

            AREA    |.text|, CODE, READONLY

复位程序:
1- 复位程序是上电后单片机执行的第一个程序
2- 调用SystemInit函数配置系统时钟;调用C库函数_main,
并最终进入C的世界
WEAK: 表示弱定义,如果外部文件优先定义了该标号则首先引用该标号,如果外部文件
没有声明也不会出错。这里表示复位子程序可以由用户在其他文件重新实现,这里并不是
唯一的。
IMPORT: 表示该标号是来自外部文件,跟C语言中的EXTERN关键字类似。
这里表示SystemInit和__main这两个函数均来自外部的文件。

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

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

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

NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
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  FMC_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]
            EXPORT  UART7_IRQHandler                  [WEAK]
            EXPORT  UART8_IRQHandler                  [WEAK]
            EXPORT  SPI4_IRQHandler                   [WEAK]
            EXPORT  SPI5_IRQHandler                   [WEAK]
            EXPORT  SPI6_IRQHandler                   [WEAK]
            EXPORT  SAI1_IRQHandler                   [WEAK]
            EXPORT  LTDC_IRQHandler                   [WEAK]
            EXPORT  LTDC_ER_IRQHandler                [WEAK]
            EXPORT  DMA2D_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
FMC_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
UART7_IRQHandler
UART8_IRQHandler
SPI4_IRQHandler
SPI5_IRQHandler
SPI6_IRQHandler
SAI1_IRQHandler
LTDC_IRQHandler
LTDC_ER_IRQHandler
DMA2D_IRQHandler
B .

            ENDP





            ALIGN

;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
IF :DEF:__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

             ALIGN

             ENDIF

             END

;************************ © COPYRIGHT STMicroelectronics END OF FILE

总结:初始化复位的时候,汇编这边分配空间给程序,然后打开系统的时钟配置为180MHZ,最后进入C语言的世界

启动文件里面涉及到的ARM指令
在这里插入图片描述
Cortex内核的指令
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章