中断向量表分析_第1页
中断向量表分析_第2页
中断向量表分析_第3页
中断向量表分析_第4页
中断向量表分析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、* (C) COPYRIGHT 2009 STMicroelectronics *;* File Name          : startup_stm32f10x_cl.s;* Author             : MCD Application

2、0;Team;* Version            : V3.1.0;* Date               : 06/19/2009;* Description        : S

3、TM32F10x Connectivity line devices vector table for RVMDK *                      toolchain. *        

4、0;             This module performs:;*                      - Set the initial SP;*  &

5、#160;                   - Set the initial PC = Reset_Handler;*                   

6、;   - Set the vector table entries with the exceptions ISR address;*                      - Branches to _main&

7、#160;in the C library (which eventually;*                        calls main().;*           

8、0;          After Reset the CortexM3 processor is in Thread mode,;*                      priority

9、60;is Privileged, and the Stack is set to Main.;* <<< Use Configuration Wizard in Context Menu >>>   *; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE 

10、ONLY AIMS AT PROVIDING CUSTOMERS; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIAB

11、LE FOR ANY DIRECT,; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE; CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE&#

12、160;CODING; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.;*; Amount of memory (in bytes) allocated for Stack; Tailor this value to your application needs; <h&g

13、t; Stack Configuration;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> </h> 首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈; 顶地址,第二个表项是复位中断服务入口地址。然后在复位中断服务程序中跳转C/C+标; 准实时库的_main函数。假设STM32被设置为从内部FLASH启动中断向量表起始地位为0x8000000

14、,; 则栈顶地址存放于0x8000000处,而复位中断服务入口地址存放于0x8000004处。当STM32遇; 到复位信号后,则从0x80000004处取出复位中断服务入口地址继而执行复位中断服务程序,; 然后跳转_main函数,最后来到C的世界。  DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”。开始建立的中断向量; 表则类似于使用C语.其每一个成员都是一个函数指针,分别指向各个中断服务函数;伪指令AREA,表示开辟一段大小为Stack_Size的内存空间作为栈,段名是STACK,可读可写。;NOINIT

15、:指定此数据段仅仅保留了内存单元,而没有将各初始值写入内存单元,或者将各个内存单元值初始化为0;常见的数据定义伪指令有如下几种:; DCB 用于分配一片连续的字节存储单元并用指定的数据初始化。; DCW (DCWU) 用于分配一片连续的半字存储单元并用指定的数据初始化。; DCD (DCDU) 用于分配一片连续的字存储单元并用指定的数据初始化。; DCFD (DCFDU)用于为双精度的浮点数分配一片连续的字存储单元并用指 定的数据初始化。; DCFS  D

16、CFSU) 用于为单精度的浮点数分配一片连续的字存储单元并用指 定的数据初始化。; DCQ  DCQU) 用于分配一片以 8 字节为单位的连续的存储单元并用指定 的数据初始化。; SPACE 用于分配一片连续的存储单元; MAP 用于定义一个结构化的内存表首地址; FIELD 用于定义一个结构化的内存表的数据域;EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。EXPORT可用GLOBAL代替。标号在程序中区分大小写,

17、WEAK选项声明其他的同名标号优先于该标号被引用。;启动代码作用一般是:;1)堆和栈的初始化;;2)向量表定义;;3)地址重映射及中断向量表的转移;;4)设置系统时钟频率;;5)中断寄存器的初始化;;6)进入C应用程序。;1)堆和栈的初始化Stack_Size      EQU     0x00000400 ;栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈  SPACE用来分配一片连续

18、的存储区域并初始化为0.                AREA    STACK, NOINIT, READWRITE, ALIGN=3     AREA 伪指令用于定义一个代码段或数据,;定义栈,可初始为0,8字节对齐2*2*2,2的3次方  NOINIT:指定此数据段仅仅保留了内存单

19、元,  READWRITE属性:指定本段为可读可写,数据段的默认属性为READWRITE。  STACK 段名  ALIGN属性:使用方式为ALIGN 表达式。在默认时,ELF(可执行连接文件)的代码段和数据段是按字对齐的,表达式的取值范围为031,相应的对齐方式为2表达式次方。Stack_Mem       SPACE   Stack_Size    ;分配0x400个连续字节,并初始

20、化为0_initial_sp   标号_initial_sp,表示栈空间顶地址。   ;汇编代码地址标号; <h> Heap Configuration;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> </h>Heap_Size       EQU &#

21、160;   0x00000200 ;堆区(heap)  一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表                AREA    HEAP, NOINIT, READWRITE, ALIGN=3 

22、60;  ALIGN用来指定对齐方式, 8字节对齐_heap_base     表示堆空间起始地址Heap_Mem        SPACE   Heap_Size_heap_limit  表示堆空间结束地址                PRESE

23、RVE8 ;PRESERVE8 指令指定当前文件保持堆栈八字节对齐                THUMB ; 告诉汇编器下面是32位的Thumb指令,如果需要汇编器将插入位以保证对齐;2)中断向量表定义; Vector Table Mapped to Address 0 at Reset   实际上是在CODE区(

24、假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000)                AREA    RESET, DATA, READONLY ;定义一块数据段,只可读,段名字是RESET;DATA属性:用于定义数据段,默认为READWRITE。指定本段为可读可写       

25、60;        EXPORT  _Vectors     EXPORT:在程序中声明一个全局的标号_Vectors,该标号可在其他的文件中引用                EXPORT  _Vectors_End ;在程序中声明一个全局的标号_Vectors_End

26、60;               EXPORT  _Vectors_Size ;在程序中声明一个全局的标号_Vectors_Size_Vectors       DCD     _initial_sp         

27、      Top of Stack 第一个表项是栈顶地址;该处物理地址值即为 _Vetors 标号所表示的值,                                &#

28、160;       ;该地址中存储_initial_sp所表示的地址值,;大小为一个字(32bit)                DCD     Reset_Handler             

29、; Reset Handler  第二个表项是复位中断服务入口地址                DCD     NMI_Handler                NMI Ha

30、ndler 不可屏蔽中断?                DCD     HardFault_Handler          Hard Fault Handler 硬件错误处理       

31、;         DCD     MemManage_Handler          MPU Fault Handler 存储器错误处理                

32、;DCD     BusFault_Handler           Bus Fault Handler  总线错误处理                DCD     UsageFault

33、_Handler         Usage Fault Handler 用法错误处理                DCD     0            

34、              Reserved   这种形式就是保留地址,不给任何标号分配                DCD     0       

35、;                   Reserved                DCD     0        

36、;                  Reserved                DCD     0         

37、;                 Reserved                DCD     SVC_Handler        &

38、#160;       SVCall Handler 执行系统服务调用指令(SVC)引发的异常                DCD     DebugMon_Handler           De

39、bug Monitor Handler 调试监视器(断点,数据观察点,或者是外部调试请求                 DCD     0                 

40、60;        Reserved                DCD     PendSV_Handler             PendSV Handler

41、为系统设备而设的“可悬挂请求” (pendable request)                DCD     SysTick_Handler            SysTick Handler  系统滴答定时器 

42、                External Interrupts 外设中断                DCD     WWDG_IRQHandler     &

43、#160;       Window Watchdog   窗口看门狗                DCD     PVD_IRQHandler            

44、  PVD through EXTI Line detect 电源电压检测(PVD)中断                 DCD     TAMPER_IRQHandler           Tamper&#

45、160;               DCD     RTC_IRQHandler              RTC            

46、    DCD     FLASH_IRQHandler            Flash                DCD     RCC_IRQHandler &

47、#160;            RCC                DCD     EXTI0_IRQHandler            EXT

48、I Line 0                DCD     EXTI1_IRQHandler            EXTI Line 1       &#

49、160;        DCD     EXTI2_IRQHandler            EXTI Line 2                DCD &

50、#160;   EXTI3_IRQHandler            EXTI Line 3                DCD     EXTI4_IRQHandler    

51、;        EXTI Line 4                DCD     DMA1_Channel1_IRQHandler    DMA1 Channel 1     

52、;           DCD     DMA1_Channel2_IRQHandler    DMA1 Channel 2                DCD     

53、;DMA1_Channel3_IRQHandler    DMA1 Channel 3                DCD     DMA1_Channel4_IRQHandler    DMA1 Channel 4    &#

54、160;           DCD     DMA1_Channel5_IRQHandler    DMA1 Channel 5                DCD    &#

55、160;DMA1_Channel6_IRQHandler    DMA1 Channel 6                DCD     DMA1_Channel7_IRQHandler    DMA1 Channel 7    

56、;            DCD     ADC1_2_IRQHandler           ADC1 and ADC2              

57、0; DCD     CAN1_TX_IRQHandler          CAN1 TX                DCD     CAN1_RX0_IRQHandler   

58、60;     CAN1 RX0                DCD     CAN1_RX1_IRQHandler         CAN1 RX1      

59、60;         DCD     CAN1_SCE_IRQHandler         CAN1 SCE                DCD    &

60、#160;EXTI9_5_IRQHandler          EXTI Line 9.5                DCD     TIM1_BRK_IRQHandler       

61、0; TIM1 Break                DCD     TIM1_UP_IRQHandler          TIM1 Update         

62、       DCD     TIM1_TRG_COM_IRQHandler     TIM1 Trigger and Commutation                DCD     

63、TIM1_CC_IRQHandler          TIM1 Capture Compare                DCD     TIM2_IRQHandler        

64、     TIM2                DCD     TIM3_IRQHandler             TIM3      

65、0;         DCD     TIM4_IRQHandler             TIM4                DCD  

66、60;  I2C1_EV_IRQHandler          I2C1 Event                DCD     I2C1_ER_IRQHandler       

67、60;  I2C1 Error                DCD     I2C2_EV_IRQHandler          I2C2 Event        

68、        DCD     I2C2_ER_IRQHandler          I2C1 Error                DCD    

69、60;SPI1_IRQHandler             SPI1                DCD     SPI2_IRQHandler         &#

70、160;   SPI2                DCD     USART1_IRQHandler           USART1         &#

71、160;      DCD     USART2_IRQHandler           USART2                DCD     USART3_IR

72、QHandler           USART3                DCD     EXTI15_10_IRQHandler        EXTI Line 15.

73、10                DCD     RTCAlarm_IRQHandler         RTC alarm through EXTI line        &

74、#160;       DCD     OTG_FS_WKUP_IRQHandler      USB OTG FS Wakeup through EXTI line                D

75、CD     0                           Reserved                D

76、CD     0                           Reserved                D

77、CD     0                           Reserved                D

78、CD     0                           Reserved                D

79、CD     0                           Reserved                D

80、CD     0                           Reserved                D

81、CD     0                           Reserved                D

82、CD     TIM5_IRQHandler             TIM5                DCD     SPI3_IRQHandler    

83、60;        SPI3                DCD     UART4_IRQHandler            UART4    

84、;            DCD     UART5_IRQHandler            UART5                DCD&#

85、160;    TIM6_IRQHandler             TIM6                DCD     TIM7_IRQHandler     &

86、#160;       TIM7                DCD     DMA2_Channel1_IRQHandler    DMA2 Channel1         

87、       DCD     DMA2_Channel2_IRQHandler    DMA2 Channel2                DCD     DMA2_Channel3_IRQHandler 

88、   DMA2 Channel3                DCD     DMA2_Channel4_IRQHandler    DMA2 Channel4           

89、60;    DCD     DMA2_Channel5_IRQHandler    DMA2 Channel5                DCD     ETH_IRQHandler     &

90、#160;        Ethernet                DCD     ETH_WKUP_IRQHandler         Ethernet Wakeup through

91、0;EXTI line                DCD     CAN2_TX_IRQHandler          CAN2 TX           

92、;     DCD     CAN2_RX0_IRQHandler         CAN2 RX0                DCD     CAN2_RX1_IRQHandler&#

93、160;        CAN2 RX1                DCD     CAN2_SCE_IRQHandler         CAN2 SCE   &#

94、160;            DCD     OTG_FS_IRQHandler           USB OTG FS_Vectors_End    结束_Vectors_Size  EQU  _Vectors_End

95、60;- _Vectors  得到向量表的大小,304个字节也就是0x130个字节;3)地址重映射及中断向量表的转移;                AREA    |.text|, CODE, READONLY   定义一个代码段,可读,段名字是.text  段名若以数字开头,则该段名需用"|&q

96、uot;括起来,如|1_test|。;定义只读数据段,实际上是在CODE区,如果在FLASH区起动,则 中断向量起始地址为0X8000000;;CODE属性:用于定义代码段,默认为READONLY; Reset handler routineReset_Handler    PROC ;;标记一个函数的开始;利用PROC、ENDP这一对伪指令把程序段分为若干个过程,使程序的结构加清晰           &

97、#160;     EXPORT  Reset_Handler             WEAK  在外部没有定义该符号时导出该符号Reset_Handler   EXPORT伪指令用于在程序中声明一个全局的标号          IMPORT &#

98、160;_main   IMPORT:伪指令用于通知编译器要使用的标号在其他的源文件中定义                 LDR     R0, =_main ;_main为运行时库提供的函数;完成堆栈,堆的初始化等工作,会调用下面定义的_user_initial_stackheap    

99、60;            BX      R0   跳到_main,进入C的世界                    ENDP; Dummy Exception H

100、andlers (infinite loops which can be modified);虚拟异常处理器(无限循环可以修改了)NMI_Handler     PROC ;PROC表示汇编函数的开始                EXPORT  NMI_Handler   &#

101、160;            WEAK   WEAK声明其他的同名标号优先于该标号被引用,就是说如果外面声明了的话,                B       .  会调用外面的  &

102、#160;             ENDPHardFault_Handler                PROC  PROC表示汇编函数的开始            

103、0;   EXPORT  HardFault_Handler          WEAK  换行的意思                B       .    

104、            ENDPMemManage_Handler                PROC ;PROC表示汇编函数的开始               &#

105、160;EXPORT  MemManage_Handler          WEAK                B       .         

106、60;      ENDPBusFault_Handler                PROC   PROC表示汇编函数的开始                EXPORT  B

107、usFault_Handler           WEAK                B       .            

108、60;   ENDPUsageFault_Handler                PROC                EXPORT  UsageFault_Handler    &

109、#160;    WEAK                B       .                ENDPSVC_Handler  

110、0;  PROC    PROC表示汇编函数的开始                EXPORT  SVC_Handler                WEAK    &

111、#160;           B       .                ENDPDebugMon_Handler           

112、60;    PROC ;PROC表示汇编函数的开始                EXPORT  DebugMon_Handler           WEAK         

113、       B       .                ENDPPendSV_Handler  PROC              

114、  EXPORT  PendSV_Handler             WEAK                B       .     

115、0;          ENDPSysTick_Handler PROC   PROC表示汇编函数的开始                EXPORT  SysTick_Handler         

116、   WEAK                B       .                ENDPDefault_Handler PROC  &

117、#160;             EXPORT  WWDG_IRQHandler            WEAK                EXPORT 

118、 PVD_IRQHandler             WEAK                EXPORT  TAMPER_IRQHandler          WEAK

119、60;               EXPORT  RTC_IRQHandler             WEAK               

120、60;EXPORT  FLASH_IRQHandler           WEAK                EXPORT  RCC_IRQHandler           

121、;  WEAK                EXPORT  EXTI0_IRQHandler           WEAK              

122、;  EXPORT  EXTI1_IRQHandler           WEAK                EXPORT  EXTI2_IRQHandler         

123、;  WEAK                EXPORT  EXTI3_IRQHandler           WEAK              

124、;  EXPORT  EXTI4_IRQHandler           WEAK                EXPORT  DMA1_Channel1_IRQHandler   WEAK    

125、;            EXPORT  DMA1_Channel2_IRQHandler   WEAK                EXPORT  DMA1_Channel3_IRQHandler   WEAK

126、60;               EXPORT  DMA1_Channel4_IRQHandler   WEAK                EXPORT  DMA1_Channel5_IRQHandler 

127、;  WEAK                EXPORT  DMA1_Channel6_IRQHandler   WEAK                EXPORT  DMA1_Chan

128、nel7_IRQHandler   WEAK                EXPORT  ADC1_2_IRQHandler          WEAK           &#

129、160;    EXPORT  CAN1_TX_IRQHandler         WEAK                EXPORT  CAN1_RX0_IRQHandler       

130、60;WEAK                EXPORT  CAN1_RX1_IRQHandler        WEAK                EXPORT 

131、 CAN1_SCE_IRQHandler        WEAK                EXPORT  EXTI9_5_IRQHandler         WEAK     

132、60;          EXPORT  TIM1_BRK_IRQHandler        WEAK                EXPORT  TIM1_UP_IRQHandler  

133、0;      WEAK                EXPORT  TIM1_TRG_COM_IRQHandler    WEAK               

134、60;EXPORT  TIM1_CC_IRQHandler         WEAK                EXPORT  TIM2_IRQHandler            WE

135、AK                EXPORT  TIM3_IRQHandler            WEAK               

136、60;EXPORT  TIM4_IRQHandler            WEAK                EXPORT  I2C1_EV_IRQHandler         WE

137、AK                EXPORT  I2C1_ER_IRQHandler         WEAK                EXPORT 

138、 I2C2_EV_IRQHandler         WEAK                EXPORT  I2C2_ER_IRQHandler         WEAK    

139、0;           EXPORT  SPI1_IRQHandler            WEAK                EXPORT  SPI2_IRQH

140、andler            WEAK                EXPORT  USART1_IRQHandler          WEAK    

141、;            EXPORT  USART2_IRQHandler          WEAK                EXPORT  USART3_IRQHand

142、ler          WEAK                EXPORT  EXTI15_10_IRQHandler       WEAK         

143、;       EXPORT  RTCAlarm_IRQHandler        WEAK                EXPORT  OTG_FS_WKUP_IRQHandler     WE

144、AK                EXPORT  TIM5_IRQHandler            WEAK               

145、60;EXPORT  SPI3_IRQHandler            WEAK                EXPORT  UART4_IRQHandler         

146、0; WEAK                EXPORT  UART5_IRQHandler           WEAK              

147、0; EXPORT  TIM6_IRQHandler            WEAK                EXPORT  TIM7_IRQHandler         

148、   WEAK                EXPORT  DMA2_Channel1_IRQHandler   WEAK                EXPORT  DMA2

149、_Channel2_IRQHandler   WEAK                EXPORT  DMA2_Channel3_IRQHandler   WEAK                EX

150、PORT  DMA2_Channel4_IRQHandler   WEAK                EXPORT  DMA2_Channel5_IRQHandler   WEAK             

151、   EXPORT  ETH_IRQHandler             WEAK                EXPORT  ETH_WKUP_IRQHandler      

152、;  WEAK                EXPORT  CAN2_TX_IRQHandler         WEAK                EXPORT  CAN2_RX0_IRQHandler        WEAK               &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论