久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2249|回復: 0
收起左側

stm32F4啟動文件分析

[復制鏈接]
ID:506377 發表于 2019-4-7 22:36 | 顯示全部樓層 |閱讀模式
啟動代碼在芯片上還是很重要的一部分,我們以F4的啟動代碼為例

下面啟動代碼里的匯編的注釋已經去掉,添加的注釋用 // 表示

/****************************************************************************/


0.分號“;”后的內容相當于C程序中的注釋


1.標號的作用:標號必須頂格寫,讓匯編器計算程序轉移的地址


2.偽指令
   EQU      用于定義常數
   LDR      被匯編器轉換成一條“相對PC的加載指令”
   BLX       轉移到后面代表的地址
   BX         轉移到后面的地址
   PROC,ENDP  表示一段程序的開始和結束


/****************************************************************************/

Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3  //定義一段叫STACK的數據段,并初始化為0,可讀可寫,以8字節對齊
Stack_Mem       SPACE   Stack_Size                                    //開辟一個大小為1KB(0x0000400,以字節為單位)的內存空間命名為Stack_Mem
__initial_sp   //__initial_sp是一個標號,在這里相當于棧頂地址

Heap_Size       EQU     0x00000200

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3  //定義一段HEAP數據段,不初始化為0,可讀可寫,8字節對齊
__heap_base        //堆的基地址
Heap_Mem        SPACE   Heap_Size    //開辟一段0.5KB的空間,命名為Heap_Mem
__heap_limit        //堆的結束地址

                PRESERVE8    //表示當前文件中的堆棧空間以8字節對齊
                THUMB          //使用YHUMB指令


                AREA    RESET, DATA, READONLY   //開辟一段數據段,只讀,命名為RESET
                EXPORT  __Vectors                   //EXPORT表示可被外部調用
                EXPORT  __Vectors_End
                EXPORT  __Vectors_Size

__Vectors       DCD     __initial_sp               ; Top of Stack       //DCD表示分配一個四字節的空間
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                              .
                              .                  //中間部分省略,這一段定義的是中斷向量表

                              .                                   
                DCD     DCMI_IRQHandler                   ; DCMI                                            
                DCD     CRYP_IRQHandler                   ; CRYP crypto                                    
                DCD     HASH_RNG_IRQHandler               ; Hash and Rng
                DCD     FPU_IRQHandler                    ; FPU
                                         
__Vectors_End

__Vectors_Size  EQU  __Vectors_End - __Vectors              //向量表的大小為最后的地址減去開始的地址,為188字節

                AREA    |.text|, CODE, READONLY              //定義一段代碼段,只讀


Reset_Handler    PROC                                   //這一段定義復位中斷服務函數
                 EXPORT  Reset_Handler             [WEAK]      //[WEAK]為弱定義,表示如果在該文件外還有和這個相同的標號,則優先執行外部的,這樣我們的中斷服務函數就可以在文件中的任意位置放置
        IMPORT  SystemInit                                  //IMPORT表示從外部引用 SystemInit(在system_stm32f4文件內)         
        IMPORT  __main                                      //__main為C庫中的函數,會完成一系列的配置,最終調用用戶寫的main函數

                 LDR     R0, =SystemInit                   //將SystemInit地址加載到R0寄存器
                 BLX     R0                                      //相當于執行上面加載的函數
                 LDR     R0, =__main                //將__main地址加載到R0寄存器
                 BX      R0                                //執行上面加載的函數
                 ENDP

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

NMI_Handler     PROC                           //NMI_Handler為不可屏蔽中斷
                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

;*******************************************************************************
; 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                     //分別將分別將棧頂地址,棧底地址,堆頂地址及堆基地址存放在寄存器R1,R3,R0,R2中。
                 LDR     R1, =(Stack_Mem + Stack_Size)
                 LDR     R2, = (Heap_Mem +  Heap_Size)
                 LDR     R3, = Stack_Mem
                 BX      LR

                 ALIGN

                 ENDIF

                 END

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品色| 中文字幕 在线观看 | 久草在线 | 国产视频中文字幕 | 日韩男人天堂 | 久久久久亚洲av毛片大全 | 久久999| 黄色国产| 成人在线视频免费看 | 久久久综合久久 | 精品av| 久久男人 | 91精品导航| 成人国产综合 | 亚洲日韩欧美一区二区在线 | 精品日韩一区 | 自拍偷拍精品 | 欧美亚洲国产一区二区三区 | 精品久久久久久久久久久 | 99reav| 日日夜夜精品免费视频 | 日日骚视频 | 国产精品1区2区3区 欧美 中文字幕 | 国产午夜精品一区二区三区四区 | 91久久精品一区二区二区 | 91国自视频 | 日韩一级免费电影 | 99福利在线观看 | 亚洲草草视频 | 免费色网址 | 亚洲激情在线观看 | 色综合国产 | 精品久久久久一区二区国产 | 久久久亚洲成人 | 精品免费国产一区二区三区四区 | www.操.com | 可以免费观看的av | 日韩精品视频网 | 日本黄色激情视频 | 一本色道久久综合亚洲精品高清 | 欧美精品三区 |