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內核的指令
在這裏插入圖片描述

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