vipcff 发表于 2010-9-3 19:42:48

CORTEX-M3在地址0xE000ED08处放的就是"中断向量表"的指针?

CORTEX-M3在地址0xE000ED08处放的就是"中断向量表"的指针?

我的问题是 stm32如何找到中断服务程序的地址?


谢谢正点原子的例程,这里使用了例程4,我上传了一个。

其中有这么一句程序:
SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器
这里的    SCB->VTOR 是这个东东:

Vector Table Offset Register
Use the Vector Table Offset Register to determine:
•if the vector table is in RAM or code memory
•the vector table offset.
The register address, access type, and Reset state are:
Address0xE000ED08
AccessRead/write
Reset state0x00000000
       简单的说,这条程序做了这个:SCB->VTOR =0x0800 0000
       这里是stm32的flash的起始地址。
       也就是说中断向量表放在了flash的起始地址。对吗?????

再看keil的仿真:

0x08000000 0208      LSLS   r0,r1,#8
0x08000002 2000      MOVS   r0,#0x00
0x08000004 0105      LSLS   r5,r0,#4
0x08000006 0800      LSRS   r0,r0,#0
0x08000008 0109      LSLS   r1,r1,#4
0x0800000A 0800      LSRS   r0,r0,#0
0x0800000C 010B      LSLS   r3,r1,#4
0x0800000E 0800      LSRS   r0,r0,#0
0x08000010 010D      LSLS   r5,r1,#4
0x08000012 0800      LSRS   r0,r0,#0
0x08000014 010F      LSLS   r7,r1,#4
0x08000016 0800      LSRS   r0,r0,#0
0x08000018 0111      LSLS   r1,r2,#4
0x0800001A 0800      LSRS   r0,r0,#0
0x0800001C 0000      MOVS   r0,r0
0x0800001E 0000      MOVS   r0,r0
0x08000020 0000      MOVS   r0,r0
0x08000022 0000      MOVS   r0,r0
0x08000024 0000      MOVS   r0,r0
0x08000026 0000      MOVS   r0,r0
0x08000028 0000      MOVS   r0,r0
0x0800002A 0000      MOVS   r0,r0
0x0800002C 0113      LSLS   r3,r2,#4
0x0800002E 0800      LSRS   r0,r0,#0
0x08000030 0115      LSLS   r5,r2,#4
0x08000032 0800      LSRS   r0,r0,#0
0x08000034 0000      MOVS   r0,r0
0x08000036 0000      MOVS   r0,r0
0x08000038 0117      LSLS   r7,r2,#4
0x0800003A 0800      LSRS   r0,r0,#0
0x0800003C 0119      LSLS   r1,r3,#4
0x0800003E 0800      LSRS   r0,r0,#0
0x08000040 011B      LSLS   r3,r3,#4
0x08000042 0800      LSRS   r0,r0,#0
0x08000044 011B      LSLS   r3,r3,#4
0x08000046 0800      LSRS   r0,r0,#0
0x08000048 011B      LSLS   r3,r3,#4
0x0800004A 0800      LSRS   r0,r0,#0
0x0800004C 011B      LSLS   r3,r3,#4
0x0800004E 0800      LSRS   r0,r0,#0
0x08000050 011B      LSLS   r3,r3,#4
0x08000052 0800      LSRS   r0,r0,#0
0x08000054 011B      LSLS   r3,r3,#4
0x08000056 0800      LSRS   r0,r0,#0
0x08000058 05F5      LSLS   r5,r6,#23
0x0800005A 0800      LSRS   r0,r0,#0
0x0800005C 011B      LSLS   r3,r3,#4
0x0800005E 0800      LSRS   r0,r0,#0
0x08000060 011B      LSLS   r3,r3,#4
0x08000062 0800      LSRS   r0,r0,#0
0x08000064 011B      LSLS   r3,r3,#4
0x08000066 0800      LSRS   r0,r0,#0
0x08000068 011B      LSLS   r3,r3,#4
0x0800006A 0800      LSRS   r0,r0,#0
0x0800006C 011B      LSLS   r3,r3,#4
0x0800006E 0800      LSRS   r0,r0,#0
0x08000070 011B      LSLS   r3,r3,#4
0x08000072 0800      LSRS   r0,r0,#0
0x08000074 011B      LSLS   r3,r3,#4
0x08000076 0800      LSRS   r0,r0,#0
0x08000078 011B      LSLS   r3,r3,#4
0x0800007A 0800      LSRS   r0,r0,#0
0x0800007C 011B      LSLS   r3,r3,#4
0x0800007E 0800      LSRS   r0,r0,#0
0x08000080 011B      LSLS   r3,r3,#4
0x08000082 0800      LSRS   r0,r0,#0
0x08000084 011B      LSLS   r3,r3,#4
0x08000086 0800      LSRS   r0,r0,#0
0x08000088 011B      LSLS   r3,r3,#4
0x0800008A 0800      LSRS   r0,r0,#0
0x0800008C 011B      LSLS   r3,r3,#4
0x0800008E 0800      LSRS   r0,r0,#0
0x08000090 011B      LSLS   r3,r3,#4
0x08000092 0800      LSRS   r0,r0,#0
0x08000094 011B      LSLS   r3,r3,#4
0x08000096 0800      LSRS   r0,r0,#0
0x08000098 011B      LSLS   r3,r3,#4
0x0800009A 0800      LSRS   r0,r0,#0
0x0800009C 011B      LSLS   r3,r3,#4
0x0800009E 0800      LSRS   r0,r0,#0
0x080000A0 011B      LSLS   r3,r3,#4
0x080000A2 0800      LSRS   r0,r0,#0
0x080000A4 011B      LSLS   r3,r3,#4
0x080000A6 0800      LSRS   r0,r0,#0
0x080000A8 011B      LSLS   r3,r3,#4
0x080000AA 0800      LSRS   r0,r0,#0
0x080000AC 011B      LSLS   r3,r3,#4
0x080000AE 0800      LSRS   r0,r0,#0
0x080000B0 011B      LSLS   r3,r3,#4
0x080000B2 0800      LSRS   r0,r0,#0
0x080000B4 011B      LSLS   r3,r3,#4
0x080000B6 0800      LSRS   r0,r0,#0
0x080000B8 011B      LSLS   r3,r3,#4
0x080000BA 0800      LSRS   r0,r0,#0
0x080000BC 011B      LSLS   r3,r3,#4
0x080000BE 0800      LSRS   r0,r0,#0
0x080000C0 011B      LSLS   r3,r3,#4
0x080000C2 0800      LSRS   r0,r0,#0
0x080000C4 011B      LSLS   r3,r3,#4
0x080000C6 0800      LSRS   r0,r0,#0
0x080000C8 011B      LSLS   r3,r3,#4
0x080000CA 0800      LSRS   r0,r0,#0
0x080000CC 011B      LSLS   r3,r3,#4
0x080000CE 0800      LSRS   r0,r0,#0
0x080000D0 011B      LSLS   r3,r3,#4
0x080000D2 0800      LSRS   r0,r0,#0
0x080000D4 011B      LSLS   r3,r3,#4
0x080000D6 0800      LSRS   r0,r0,#0
0x080000D8 011B      LSLS   r3,r3,#4
0x080000DA 0800      LSRS   r0,r0,#0
0x080000DC 011B      LSLS   r3,r3,#4
0x080000DE 0800      LSRS   r0,r0,#0
0x080000E0 0633      LSLS   r3,r6,#24
0x080000E2 0800      LSRS   r0,r0,#0
0x080000E4 011B      LSLS   r3,r3,#4
0x080000E6 0800      LSRS   r0,r0,#0
0x080000E8 011B      LSLS   r3,r3,#4
0x080000EA 0800      LSRS   r0,r0,#0
               _main_stk:
0x080000EC F8DFD00CLDR.W    sp,; @0x080000FC
               _main_scatterload:
0x080000F0 F000FC3CBL.W   __scatterload_rt2 (0x0800096C)
               _main_init:
0x080000F4 4800      LDR      r0,; @0x080000F8
0x080000F6 4700      BX       r0
0x080000F8 0121      LSLS   r1,r4,#4
0x080000FA 0800      LSRS   r0,r0,#0
0x080000FC 0208      LSLS   r0,r1,#8
0x080000FE 2000      MOVS   r0,#0x00


//******************************************************************************************************问题在这里:
怎么看我的 中断向量表 在 0x0800 0000 里是怎么被安排的啊?

中断服务程序在下面:
如何由0x0800 0000 附近的表格里的数据找到0x080005F4,0x08000632的中断服务程序的呢???
//******************************************************************************************************问题



    23:         GPIOD->ODR|=1

vipcff 发表于 2010-9-5 13:18:07

RE:CORTEX-M3在地址0xE000ED08处放的就是

up;P:P

发表于 2010-9-6 09:12:49

RE:CORTEX-M3在地址0xE000ED08处放的就是

你工程设置时,选择输出HEX文件,然后生成HEX文件以后,用记事本打开,里面你可以找到你设置的向量地址及中断跳转地址。
页: [1]
查看完整版本: CORTEX-M3在地址0xE000ED08处放的就是"中断向量表"的指针?