找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3182|回复: 0
收起左侧

startup_stm32f10x_hd.s启动文件解析

[复制链接]
ID:80436 发表于 2015-5-19 02:03 | 显示全部楼层 |阅读模式
startup_stm32f10x_hd.s单片机启动文件解析:
  1. ;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************
  2. ;* File Name          : startup_stm32f10x_hd.s
  3. ;* Author             : MCD Application Team
  4. ;* Version            : V3.5.0
  5. ;* Date               : 11-March-2011
  6. ;* Description        : STM32F10x High Density Devices vector table for MDK-ARM
  7. ;*                      toolchain.
  8. ;*                      This module performs:
  9. ;*                      - Set the initial SP
  10. ;*                      - Set the initial PC == Reset_Handler
  11. ;*                      - Set the vector table entries with the exceptions ISR address
  12. ;*                      - Configure the clock system and also configure the external
  13. ;*                        SRAM mounted on STM3210E-EVAL board to be used as data
  14. ;*                        memory (optional, to be enabled by user)
  15. ;*                      - Branches to __main in the C library (which eventually
  16. ;*                        calls main()).
  17. ;*                      After Reset the CortexM3 processor is in Thread mode,
  18. ;*                      priority is Privileged, and the Stack is set to Main.
  19. ;* <<< Use Configuration Wizard in Context Menu >>>   
  20. ;*******************************************************************************
  21. ; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  22. ; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  23. ; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  24. ; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  25. ; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  26. ; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  27. ;*******************************************************************************

  28. ; Amount of memory (in bytes) allocated for Stack
  29. ; Tailor this value to your application needs
  30. ; <h> Stack Configuration
  31. ;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  32. ; </h>

  33. Stack_Size      EQU     0x00000400         ;栈
  34. ; AREA :伪指令,用于段定义。
  35. ; STACK :定义段名称
  36. ; NOINIT:指定本数据段仅仅保留内存单元,没有将各始值写入内存单元,也就是说将内存单元值初始化为0
  37. ; READWRITE :可读可写,数据段默认为READWRITE。READWRITE(读写)、READONLY(只读)
  38. ; ALIGN:指定对齐方式。ALIGN n 指令的对齐值有两种方案 即n 或2^n,这里采用第二种方案即指定后面的指令8字节对齐。
  39.                 AREA    STACK, NOINIT, READWRITE, ALIGN=3;定义STACK段         
  40. Stack_Mem       SPACE   Stack_Size          ;用于分配一块内存单元,并用0初始化
  41. __initial_sp
  42.                                                   
  43. ; <h> Heap Configuration
  44. ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  45. ; </h>

  46. Heap_Size       EQU     0x00000200        ;堆

  47.                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3   ;定义HEAP段
  48. __heap_base
  49. Heap_Mem        SPACE   Heap_Size
  50. __heap_limit

  51.                 PRESERVE8
  52.                 THUMB


  53. ; Vector Table Mapped to Address 0 at Reset
  54.                 AREA    RESET, DATA, READONLY
  55. ;EXPORT:伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用
  56. ;IMPORT:伪指令用于通知编译器要使用的标号在其他文件中,但要在当前源文件中引用,而且无论当前源文件
  57. ;是否引用该标号,该标号均会被加入到当前源文件的符号表中
  58.                 EXPORT  __Vectors
  59.                 EXPORT  __Vectors_End
  60.                 EXPORT  __Vectors_Size

  61. __Vectors       DCD     __initial_sp               ; Top of Stack        此处为栈顶指针
  62.                 DCD     Reset_Handler              ; Reset Handler
  63.                 DCD     NMI_Handler                ; NMI Handler
  64.                 DCD     HardFault_Handler          ; Hard Fault Handler
  65.                 DCD     MemManage_Handler          ; MPU Fault Handler
  66.                 DCD     BusFault_Handler           ; Bus Fault Handler
  67.                 DCD     UsageFault_Handler         ; Usage Fault Handler
  68.                 DCD     0                          ; Reserved
  69.                 DCD     0                          ; Reserved
  70.                 DCD     0                          ; Reserved
  71.                 DCD     0                          ; Reserved
  72.                 DCD     SVC_Handler                ; SVCall Handler
  73.                 DCD     DebugMon_Handler           ; Debug Monitor Handler
  74.                 DCD     0                          ; Reserved
  75.                 DCD     PendSV_Handler             ; PendSV Handler
  76.                 DCD     SysTick_Handler            ; SysTick Handler

  77.                 ; External Interrupts
  78.                 DCD     WWDG_IRQHandler            ; Window Watchdog
  79.                 DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
  80.                 DCD     TAMPER_IRQHandler          ; Tamper
  81.                 DCD     RTC_IRQHandler             ; RTC
  82.                 DCD     FLASH_IRQHandler           ; Flash
  83.                 DCD     RCC_IRQHandler             ; RCC
  84.                 DCD     EXTI0_IRQHandler           ; EXTI Line 0
  85.                 DCD     EXTI1_IRQHandler           ; EXTI Line 1
  86.                 DCD     EXTI2_IRQHandler           ; EXTI Line 2
  87.                 DCD     EXTI3_IRQHandler           ; EXTI Line 3
  88.                 DCD     EXTI4_IRQHandler           ; EXTI Line 4
  89.                 DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
  90.                 DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
  91.                 DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
  92.                 DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
  93.                 DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
  94.                 DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
  95.                 DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
  96.                 DCD     ADC1_2_IRQHandler          ; ADC1 & ADC2
  97.                 DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
  98.                 DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0
  99.                 DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
  100.                 DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
  101.                 DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
  102.                 DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
  103.                 DCD     TIM1_UP_IRQHandler         ; TIM1 Update
  104.                 DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
  105.                 DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
  106.                 DCD     TIM2_IRQHandler            ; TIM2
  107.                 DCD     TIM3_IRQHandler            ; TIM3
  108.                 DCD     TIM4_IRQHandler            ; TIM4
  109.                 DCD     I2C1_EV_IRQHandler         ; I2C1 Event
  110.                 DCD     I2C1_ER_IRQHandler         ; I2C1 Error
  111.                 DCD     I2C2_EV_IRQHandler         ; I2C2 Event
  112.                 DCD     I2C2_ER_IRQHandler         ; I2C2 Error
  113.                 DCD     SPI1_IRQHandler            ; SPI1
  114.                 DCD     SPI2_IRQHandler            ; SPI2
  115.                 DCD     USART1_IRQHandler          ; USART1
  116.                 DCD     USART2_IRQHandler          ; USART2
  117.                 DCD     USART3_IRQHandler          ; USART3
  118.                 DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
  119.                 DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
  120.                 DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
  121.                 DCD     TIM8_BRK_IRQHandler        ; TIM8 Break
  122.                 DCD     TIM8_UP_IRQHandler         ; TIM8 Update
  123.                 DCD     TIM8_TRG_COM_IRQHandler    ; TIM8 Trigger and Commutation
  124.                 DCD     TIM8_CC_IRQHandler         ; TIM8 Capture Compare
  125.                 DCD     ADC3_IRQHandler            ; ADC3
  126.                 DCD     FSMC_IRQHandler            ; FSMC
  127.                 DCD     SDIO_IRQHandler            ; SDIO
  128.                 DCD     TIM5_IRQHandler            ; TIM5
  129.                 DCD     SPI3_IRQHandler            ; SPI3
  130.                 DCD     UART4_IRQHandler           ; UART4
  131.                 DCD     UART5_IRQHandler           ; UART5
  132.                 DCD     TIM6_IRQHandler            ; TIM6
  133.                 DCD     TIM7_IRQHandler            ; TIM7
  134.                 DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1
  135.                 DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2
  136.                 DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3
  137.                 DCD     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5        异常处理函数
  138. __Vectors_End

  139. __Vectors_Size  EQU  __Vectors_End - __Vectors

  140.                 AREA    |.text|, CODE, READONLY
  141.                
  142. ; Reset handler
  143. Reset_Handler   PROC         ;PROC为子程序开始伪指令
  144.                 EXPORT  Reset_Handler             [WEAK]  ;系统复位中断服务函数
  145.                 IMPORT  __main
  146.                 IMPORT  SystemInit
  147.                 LDR     R0, =SystemInit
  148.                 BLX     R0               
  149.                 LDR     R0, =__main
  150.                 BX      R0         ;ENDP为子程序结束伪指令
  151.                 ENDP
  152.                
  153. ; Dummy Exception Handlers (infinite loops which can be modified)

  154. NMI_Handler     PROC
  155.                 EXPORT  NMI_Handler                [WEAK]
  156.                 B       .
  157.                 ENDP
  158. HardFault_Handler\
  159.                 PROC
  160.                 EXPORT  HardFault_Handler          [WEAK]
  161.                 B       .
  162.                 ENDP
  163. MemManage_Handler\
  164.                 PROC
  165.                 EXPORT  MemManage_Handler          [WEAK]
  166.                 B       .
  167.                 ENDP
  168. BusFault_Handler\
  169.                 PROC
  170.                 EXPORT  BusFault_Handler           [WEAK]
  171.                 B       .
  172.                 ENDP
  173. UsageFault_Handler\
  174.                 PROC
  175.                 EXPORT  UsageFault_Handler         [WEAK]
  176.                 B       .
  177.                 ENDP
  178. SVC_Handler     PROC
  179.                 EXPORT  SVC_Handler                [WEAK]
  180.                 B       .
  181.                 ENDP
  182. DebugMon_Handler\
  183.                 PROC
  184.                 EXPORT  DebugMon_Handler           [WEAK]
  185.                 B       .
  186.                 ENDP
  187. PendSV_Handler  PROC
  188.                 EXPORT  PendSV_Handler             [WEAK]
  189.                 B       .
  190.                 ENDP
  191. SysTick_Handler PROC
  192.                 EXPORT  SysTick_Handler            [WEAK]
  193.                 B       .
  194.                 ENDP

  195. Default_Handler PROC

  196.                 EXPORT  WWDG_IRQHandler            [WEAK]
  197.                 EXPORT  PVD_IRQHandler             [WEAK]
  198.                 EXPORT  TAMPER_IRQHandler          [WEAK]
  199.                 EXPORT  RTC_IRQHandler             [WEAK]
  200.                 EXPORT  FLASH_IRQHandler           [WEAK]
  201.                 EXPORT  RCC_IRQHandler             [WEAK]
  202.                 EXPORT  EXTI0_IRQHandler           [WEAK]
  203.                 EXPORT  EXTI1_IRQHandler           [WEAK]
  204.                 EXPORT  EXTI2_IRQHandler           [WEAK]
  205.                 EXPORT  EXTI3_IRQHandler           [WEAK]
  206.                 EXPORT  EXTI4_IRQHandler           [WEAK]
  207.                 EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
  208.                 EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
  209.                 EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
  210.                 EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
  211.                 EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
  212.                 EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
  213.                 EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
  214.                 EXPORT  ADC1_2_IRQHandler          [WEAK]
  215.                 EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
  216.                 EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
  217.                 EXPORT  CAN1_RX1_IRQHandler        [WEAK]
  218.                 EXPORT  CAN1_SCE_IRQHandler        [WEAK]
  219.                 EXPORT  EXTI9_5_IRQHandler         [WEAK]
  220.                 EXPORT  TIM1_BRK_IRQHandler        [WEAK]
  221.                 EXPORT  TIM1_UP_IRQHandler         [WEAK]
  222.                 EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
  223.                 EXPORT  TIM1_CC_IRQHandler         [WEAK]
  224.                 EXPORT  TIM2_IRQHandler            [WEAK]
  225.                 EXPORT  TIM3_IRQHandler            [WEAK]
  226.                 EXPORT  TIM4_IRQHandler            [WEAK]
  227.                 EXPORT  I2C1_EV_IRQHandler         [WEAK]
  228.                 EXPORT  I2C1_ER_IRQHandler         [WEAK]
  229.                 EXPORT  I2C2_EV_IRQHandler         [WEAK]
  230.                 EXPORT  I2C2_ER_IRQHandler         [WEAK]
  231.                 EXPORT  SPI1_IRQHandler            [WEAK]
  232.                 EXPORT  SPI2_IRQHandler            [WEAK]
  233.                 EXPORT  USART1_IRQHandler          [WEAK]
  234.                 EXPORT  USART2_IRQHandler          [WEAK]
  235.                 EXPORT  USART3_IRQHandler          [WEAK]
  236.                 EXPORT  EXTI15_10_IRQHandler       [WEAK]
  237.                 EXPORT  RTCAlarm_IRQHandler        [WEAK]
  238.                 EXPORT  USBWakeUp_IRQHandler       [WEAK]
  239.                 EXPORT  TIM8_BRK_IRQHandler        [WEAK]
  240.                 EXPORT  TIM8_UP_IRQHandler         [WEAK]
  241.                 EXPORT  TIM8_TRG_COM_IRQHandler    [WEAK]
  242.                 EXPORT  TIM8_CC_IRQHandler         [WEAK]
  243.                 EXPORT  ADC3_IRQHandler            [WEAK]
  244.                 EXPORT  FSMC_IRQHandler            [WEAK]
  245.                 EXPORT  SDIO_IRQHandler            [WEAK]
  246.                 EXPORT  TIM5_IRQHandler            [WEAK]
  247.                 EXPORT  SPI3_IRQHandler            [WEAK]
  248.                 EXPORT  UART4_IRQHandler           [WEAK]
  249.                 EXPORT  UART5_IRQHandler           [WEAK]
  250.                 EXPORT  TIM6_IRQHandler            [WEAK]
  251.                 EXPORT  TIM7_IRQHandler            [WEAK]
  252.                 EXPORT  DMA2_Channel1_IRQHandler   [WEAK]
  253.                 EXPORT  DMA2_Channel2_IRQHandler   [WEAK]
  254.                 EXPORT  DMA2_Channel3_IRQHandler   [WEAK]
  255.                 EXPORT  DMA2_Channel4_5_IRQHandler [WEAK]

  256. WWDG_IRQHandler
  257. PVD_IRQHandler
  258. TAMPER_IRQHandler
  259. RTC_IRQHandler
  260. FLASH_IRQHandler
  261. RCC_IRQHandler
  262. EXTI0_IRQHandler
  263. EXTI1_IRQHandler
  264. EXTI2_IRQHandler
  265. EXTI3_IRQHandler
  266. EXTI4_IRQHandler
  267. DMA1_Channel1_IRQHandler
  268. DMA1_Channel2_IRQHandler
  269. DMA1_Channel3_IRQHandler
  270. DMA1_Channel4_IRQHandler
  271. DMA1_Channel5_IRQHandler
  272. DMA1_Channel6_IRQHandler
  273. DMA1_Channel7_IRQHandler
  274. ADC1_2_IRQHandler
  275. USB_HP_CAN1_TX_IRQHandler
  276. USB_LP_CAN1_RX0_IRQHandler
  277. CAN1_RX1_IRQHandler
  278. CAN1_SCE_IRQHandler
  279. EXTI9_5_IRQHandler
  280. TIM1_BRK_IRQHandler
  281. TIM1_UP_IRQHandler
  282. TIM1_TRG_COM_IRQHandler
  283. TIM1_CC_IRQHandler
  284. TIM2_IRQHandler
  285. TIM3_IRQHandler
  286. TIM4_IRQHandler
  287. I2C1_EV_IRQHandler
  288. I2C1_ER_IRQHandler
  289. I2C2_EV_IRQHandler
  290. I2C2_ER_IRQHandler
  291. SPI1_IRQHandler
  292. SPI2_IRQHandler
  293. USART1_IRQHandler
  294. USART2_IRQHandler
  295. USART3_IRQHandler
  296. EXTI15_10_IRQHandler
  297. RTCAlarm_IRQHandler
  298. USBWakeUp_IRQHandler
  299. TIM8_BRK_IRQHandler
  300. TIM8_UP_IRQHandler
  301. TIM8_TRG_COM_IRQHandler
  302. TIM8_CC_IRQHandler
  303. ADC3_IRQHandler
  304. FSMC_IRQHandler
  305. SDIO_IRQHandler
  306. TIM5_IRQHandler
  307. SPI3_IRQHandler
  308. UART4_IRQHandler
  309. UART5_IRQHandler
  310. TIM6_IRQHandler
  311. TIM7_IRQHandler
  312. DMA2_Channel1_IRQHandler
  313. DMA2_Channel2_IRQHandler
  314. DMA2_Channel3_IRQHandler
  315. DMA2_Channel4_5_IRQHandler
  316.                 B       .

  317.                 ENDP

  318.                 ALIGN

  319. ;*******************************************************************************
  320. ; User Stack and Heap initialization
  321. ;*******************************************************************************
  322.                  IF      :DEF:__MICROLIB
  323.                
  324.                  EXPORT  __initial_sp
  325.                  EXPORT  __heap_base
  326.                  EXPORT  __heap_limit
  327.                
  328.                  ELSE
  329.                
  330.                  IMPORT  __use_two_region_memory
  331.                  EXPORT  __user_initial_stackheap
  332.                  
  333. __user_initial_stackheap

  334.                  LDR     R0, =  Heap_Mem
  335.                  LDR     R1, =(Stack_Mem + Stack_Size)
  336.                  LDR     R2, = (Heap_Mem +  Heap_Size)
  337.                  LDR     R3, = Stack_Mem
  338.                  BX      LR

  339.                  ALIGN

  340.                  ENDIF

  341.                  END

  342. ;******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE*****
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表