中断向量表分析.docx

上传人:b****5 文档编号:14973782 上传时间:2023-06-28 格式:DOCX 页数:14 大小:20.13KB
下载 相关 举报
中断向量表分析.docx_第1页
第1页 / 共14页
中断向量表分析.docx_第2页
第2页 / 共14页
中断向量表分析.docx_第3页
第3页 / 共14页
中断向量表分析.docx_第4页
第4页 / 共14页
中断向量表分析.docx_第5页
第5页 / 共14页
中断向量表分析.docx_第6页
第6页 / 共14页
中断向量表分析.docx_第7页
第7页 / 共14页
中断向量表分析.docx_第8页
第8页 / 共14页
中断向量表分析.docx_第9页
第9页 / 共14页
中断向量表分析.docx_第10页
第10页 / 共14页
中断向量表分析.docx_第11页
第11页 / 共14页
中断向量表分析.docx_第12页
第12页 / 共14页
中断向量表分析.docx_第13页
第13页 / 共14页
中断向量表分析.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

中断向量表分析.docx

《中断向量表分析.docx》由会员分享,可在线阅读,更多相关《中断向量表分析.docx(14页珍藏版)》请在冰点文库上搜索。

中断向量表分析.docx

中断向量表分析

******************** (C) COPYRIGHT 2009 STMicroelectronics ********************

;* File Name          :

 startup_stm32f10x_cl.s

;* Author             :

 MCD Application Team

;* Version            :

 V3.1.0

;* Date               :

 06/19/2009

;* Description        :

 STM32F10x Connectivity line devices vector table for RVMDK 

;*                      toolchain. 

;*                      This module performs:

;*                      - Set the initial SP

;*                      - Set the initial PC == Reset_Handler

;*                      - Set the vector table entries with the exceptions ISR address

;*                      - Branches to __main in the C library (which eventually

;*                        calls main()).

;*                      After Reset the CortexM3 processor is in Thread mode,

;*                      priority is Privileged, and the Stack is set to Main.

;* <<< Use Configuration Wizard in Context Menu >>>   

;*******************************************************************************

; THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE 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 LIABLE 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 CODING

; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

;*******************************************************************************

; Amount of memory (in bytes) allocated for Stack

; Tailor this value to your application needs

 Stack Configuration

;    Stack Size (in Bytes) <0x0-0xFFFFFFFF:

8>

; 首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈

; 顶地址,第二个表项是复位中断服务入口地址。

然后在复位中断服务程序中跳转C/C++标

; 准实时库的__main函数。

假设STM32被设置为从内部FLASH启动中断向量表起始地位为0x8000000,

; 则栈顶地址存放于0x8000000处,而复位中断服务入口地址存放于0x8000004处。

当STM32遇

; 到复位信号后,则从0x80000004处取出复位中断服务入口地址继而执行复位中断服务程序,

; 然后跳转__main函数,最后来到C的世界。

 

; DCD指令:

作用是开辟一段空间,其意义等价于C语言中的地址符“&”。

开始建立的中断向量

; 表则类似于使用C语.其每一个成员都是一个函数指针,分别指向各个中断服务函数

;伪指令AREA,表示开辟一段大小为Stack_Size的内存空间作为栈,段名是STACK,可读可写。

;NOINIT:

指定此数据段仅仅保留了内存单元,而没有将各初始值写入内存单元,或者将各个内存单元值初始化为0

;常见的数据定义伪指令有如下几种:

;— DCB 用于分配一片连续的字节存储单元并用指定的数据初始化。

;— DCW (DCWU) 用于分配一片连续的半字存储单元并用指定的数据初始化。

;— DCD (DCDU) 用于分配一片连续的字存储单元并用指定的数据初始化。

;— DCFD (DCFDU)用于为双精度的浮点数分配一片连续的字存储单元并用指 定的数据初始化。

;— DCFS  DCFSU) 用于为单精度的浮点数分配一片连续的字存储单元并用指 定的数据初始化。

;— DCQ  DCQU) 用于分配一片以 8 字节为单位的连续的存储单元并用指定 的数据初始化。

;— SPACE 用于分配一片连续的存储单元

;— MAP 用于定义一个结构化的内存表首地址

;— FIELD 用于定义一个结构化的内存表的数据域

;EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。

EXPORT可用GLOBAL代替。

标号在程序中区分大小写,[WEAK]选项声明其他的同名标号优先于该标号被引用。

;;启动代码作用一般是:

;;1)堆和栈的初始化;

;2)向量表定义;

;;3)地址重映射及中断向量表的转移;

;;4)设置系统时钟频率;

;;5)中断寄存器的初始化;

;;6)进入C应用程序。

;1)堆和栈的初始化

Stack_Size      EQU     0x00000400;栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。

其操作方式类似于数据结构中的栈

  ;SPACE用来分配一片连续的存储区域并初始化为0.

                AREA    STACK, NOINIT, READWRITE, ALIGN=3     ;AREA 伪指令用于定义一个代码段或数据,;定义栈,可初始为0,8字节对齐2*2*2,2的3次方

  ;NOINIT:

指定此数据段仅仅保留了内存单元,

  ;READWRITE属性:

指定本段为可读可写,数据段的默认属性为READWRITE。

  ;STACK 段名

  ;ALIGN属性:

使用方式为ALIGN 表达式。

在默认时,ELF(可执行连接文件)的代码段和数据段是按字对齐的,表达式的取值范围为0~31,相应的对齐方式为2表达式次方。

Stack_Mem       SPACE   Stack_Size   ;;分配0x400个连续字节,并初始化为0

__initial_sp  ;标号__initial_sp,表示栈空间顶地址。

  ;汇编代码地址标号

 Heap Configuration

;     Heap Size (in Bytes) <0x0-0xFFFFFFFF:

8>

Heap_Size       EQU     0x00000200;堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。

注意它与数据结构中的堆是两回事,分配方式倒是类似于链表

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3   ;ALIGN用来指定对齐方式, 8字节对齐

__heap_base    ;表示堆空间起始地址

Heap_Mem        SPACE   Heap_Size

__heap_limit ;表示堆空间结束地址

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

                THUMB; 告诉汇编器下面是32位的Thumb指令,如果需要汇编器将插入位以保证对齐

;2)中断向量表定义

; Vector Table Mapped to Address 0 at Reset  ;实际上是在CODE区(假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000)

                AREA    RESET, DATA, READONLY;定义一块数据段,只可读,段名字是RESET

;DATA属性:

用于定义数据段,默认为READWRITE。

指定本段为可读可写

                EXPORT  __Vectors    ;EXPORT:

在程序中声明一个全局的标号__Vectors,该标号可在其他的文件中引用

                EXPORT  __Vectors_End;在程序中声明一个全局的标号__Vectors_End

                EXPORT  __Vectors_Size;在程序中声明一个全局的标号__Vectors_Size

__Vectors       DCD     __initial_sp              ; Top of Stack第一个表项是栈顶地址

;该处物理地址值即为 __Vetors 标号所表示的值,

                                       ;该地址中存储__initial_sp所表示的地址值,

;大小为一个字(32bit)

                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执行系统服务调用指令(SVC)引发的异常

                DCD     DebugMon_Handler          ; Debug Monitor Handler 调试监视器(断点,数据观察点,或者是外部调试请求 

                DCD     0                         ; Reserved

                DCD     PendSV_Handler            ; PendSV Handler为系统设备而设的“可悬挂请求” (pendable request)

                DCD     SysTick_Handler           ; SysTick Handler 系统滴答定时器

                ; External Interrupts外设中断

                DCD     WWDG_IRQHandler            ; Window Watchdog  窗口看门狗

                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect电源电压检测(PVD)中断 

                DCD     TAMPER_IRQHandler          ; Tamper

                DCD     RTC_IRQHandler             ; RTC

                DCD     FLASH_IRQHandler           ; Flash

                DCD     RCC_IRQHandler             ; RCC

                DCD     EXTI0_IRQHandler           ; EXTI Line 0

                DCD     EXTI1_IRQHandler           ; EXTI Line 1

                DCD     EXTI2_IRQHandler           ; EXTI Line 2

                DCD     EXTI3_IRQHandler           ; EXTI Line 3

                DCD     EXTI4_IRQHandler           ; EXTI Line 4

                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1

                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2

                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3

                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4

                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5

                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6

                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7

                DCD     ADC1_2_IRQHandler          ; ADC1 and ADC2

                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         ; EXTI Line 9..5

                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break

                DCD     TIM1_UP_IRQHandler         ; TIM1 Update

                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation

                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         ; I2C1 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       ; EXTI Line 15..10

                DCD     RTCAlarm_IRQHandler        ; RTC alarm through EXTI line

                DCD     OTG_FS_WKUP_IRQHandler     ; USB OTG FS Wakeup through EXTI line

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     TIM5_IRQHandler            ; TIM5

                DCD     SPI3_IRQHandler            ; SPI3

                DCD     UART4_IRQHandler           ; UART4

                DCD     UART5_IRQHandler           ; UART5

                DCD     TIM6_IRQHandler            ; TIM6

                DCD     TIM7_IRQHandler            ; TIM7

                DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1

                DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2

                DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3

                DCD     DMA2_Channel4_IRQHandler   ; DMA2 Channel4

                DCD     DMA2_Channel5_IRQHandler   ; DMA2 Channel5

                DCD     ETH_IRQHandler             ; Ethernet

                DCD     ETH_WKUP_IRQHandler        ; Ethernet Wakeup through EXTI line

                DCD     CAN2_TX_IRQHandler         ; CAN2 TX

                DCD     CAN2_RX0_IRQHandl

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2