第一章:startup_stm32f40_41xxx.s启动代码的理解

Stack_Size      EQU     0x00000800                         ;定义堆栈的大小


AREA    STACK, NOINIT, READWRITE, ALIGN=3     ;堆栈段,未初始化,允许读写,8字节边界对齐

Stack_Mem       SPACE   Stack_Size             ;分配堆栈空间,把首地址赋给Stack_Mem,即分配0x400个连续字节,并初始化为0


__initial_sp                                                            ;初始化堆栈指针,指向堆栈顶,汇编代码地址标号 

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

Heap_Size       EQU     0x00000800        ;初始化堆栈指针,指向堆栈顶

 AREA    HEAP, NOINIT, READWRITE, ALIGN=3        ;堆段,未初始化,允许读写,堆数据段8字节边界对齐
__heap_base                                                            ;堆空间起始地址 
Heap_Mem        SPACE   Heap_Size                         ;分配堆空间
__heap_limit                                                            ;与__heap_base配合限制堆的大小

 

PRESERVE8                                                             ;命令指定当前文件保持栈的八字节对齐

THUMB                                                                  ;指令集,THUMB 必须位于使用新语法的任何Thumb代码之前

; Vector Table Mapped to Address 0 at Reset

; EXPORT 命令声明一个符号,可由链接器用于解释各个目标和库文件中的符号引用,相当于声明了一个全局变量。 GLOBAL 于 EXPORT相同。


                AREA    RESET, DATA, READONLY            ;复位段,只包含数据,只读
                EXPORT  __Vectors                                  ;标号输出,中断向量表开始
                EXPORT  __Vectors_End                           ;中断向量表结束 
                EXPORT  __Vectors_Size                           ;中断向量表大小 


; DCD 命令分配一个或多个字的存储器,在四个字节的边界上对齐,并定义存储器的运行时初值。


__Vectors       DCD     __initial_sp                  ; Top of Stack         栈顶指针,被放在向量表的开始,FLASH的0地址,复位后首先装载栈顶指针 
                DCD     Reset_Handler                   ; Reset Handler        复位异常,装载完栈顶后,第一个执行的,并且不返回。
                DCD     NMI_Handler                    ; NMI Handler          不可屏蔽中断
                DCD     HardFault_Handler            ; Hard Fault Handler   硬件错误中断
                DCD     MemManage_Handler      ; MPU Fault Handler    内存管理错误中断
                DCD    BusFault_Handler              ; Bus Fault Handler    总线错误中断,一般发生在数据访问异常,比如fsmc访问不当
                DCD     UsageFault_Handler         ; Usage Fault Handler  用法错误中断,一般是预取值,或者位置指令,数据处理等错误
                DCD     0                                          ; Reserved             这种形式就是保留地址,不给任何标号分配 
                DCD     0                                          ; Reserved
                DCD     0                                          ; Reserved
                DCD     0                                          ; Reserved
                DCD     SVC_Handler                        ; SVCall Handler       系统调用异常,主要是为了调用操作系统内核服务
                DCD     DebugMon_Handler             ; Debug Monitor Handler调试监视异常
                DCD     0                                          ; Reserved
                DCD     PendSV_Handler                   ; PendSV Handler       挂起异常
                DCD     SysTick_Handler                    ; SysTick Handler      滴答定时器,为操作系统内核时钟


                ; External Interrupts                           以下为外部中断向量表
                DCD     WWDG_IRQHandler               ; Window WatchDog                             窗口看门狗                                       
                DCD     PVD_IRQHandler                   ; PVD through EXTI Line detection             电源电压检测(PVD)中断          
                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                 
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值