打印

向量表由引脚?寄存器决定?

[复制链接]
3115|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lord_fan|  楼主 | 2011-10-3 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
引脚不是可以设置哪里启动,向量表位置吗?
寄存器不是可以设置向量表位置?

有疑惑这到底是什么关系?区别。50分求解惑。来者有分。
沙发
sgx17| | 2011-10-3 18:54 | 只看该作者
STM32采用的是Cortex-m3内核,其中断向量默认在0x00000000位置,当然可以通过设置中断向量偏移寄存器VTOR 指向其它位置(通常把在RAM中,因为这样中断反应速度更快)

使用特权

评论回复
板凳
sgx17| | 2011-10-3 19:26 | 只看该作者
根据boot1,boot0引脚状态,上电启动时会选择从主内存存储器,系统存储器,内置SRAM启动,具体可以查看stm32的datasheet,这与决定向量表是没有关系的,当然无论你是决定从哪个存储器启动,其起始位置应该放置中断向量表的,之后想放在哪里,在启动完成后可以转移至其它地方的

使用特权

评论回复
地板
lord_fan|  楼主 | 2011-10-3 19:38 | 只看该作者
根据boot1,boot0引脚状态,上电启动时会选择从主内存存储器,系统存储器,内置SRAM启动,具体可以查看stm32的datasheet,这与决定向量表是没有关系的,当然无论你是决定从哪个存储器启动,其起始位置应该放置中断向 ...
sgx17 发表于 2011-10-3 19:26

你的意思是说。
1、上电启动(包括复位吗?)的时候只看引脚状态来选择3个存储的地方之一。 这3个地方的地址是固定的?
2、 启动后,在运行时再根据寄存器来判断向量表在哪里?向量表由寄存器决定,不再固定。
3、寄存器的开机复位值是3个存储的地方之一?是哪个?还是根据引脚来自动设置。?

使用特权

评论回复
5
sgx17| | 2011-10-3 20:29 | 只看该作者
上电启动不包括复位,因为如果你之后将向量表偏移至其它地方,那么是从其它地方取出复位中断服务程序的地址并执行的。3个地址是固定的,运行时,由向量表偏移寄存器决定,不再固定,开机复位是根据引脚自动设置的,这样你应该明白了吧,建议最好看下datasheet

使用特权

评论回复
6
lord_fan|  楼主 | 2011-10-3 21:01 | 只看该作者
上电启动不包括复位,因为如果你之后将向量表偏移至其它地方,那么是从其它地方取出复位中断服务程序的地址并执行的。3个地址是固定的,运行时,由向量表偏移寄存器决定,不再固定,开机复位是根据引脚自动设置的, ...
sgx17 发表于 2011-10-3 20:29

寄存器存放的是偏移地址?那基址呢

使用特权

评论回复
7
sgx17| | 2011-10-3 21:46 | 只看该作者
这里说的偏移地址其实是相对于0x00000000来说的

使用特权

评论回复
8
lord_fan|  楼主 | 2011-10-3 21:57 | 只看该作者
相对于0x00000000?
是指在flash 相对0x8000...
在Sram 相对0X2000....  吗?

使用特权

评论回复
9
areshan| | 2011-10-4 11:48 | 只看该作者
怎么和AVR的有点像了,是STM32吗?

使用特权

评论回复
10
lord_fan|  楼主 | 2011-10-4 19:44 | 只看该作者
9# areshan
嗯。

使用特权

评论回复
11
sgx17| | 2011-10-9 10:52 | 只看该作者
是相对0x0000_0000,这个寄存器有点复杂(这个关系到向量表地址,其不是随便随便放的,具体是有一算法的,比如共有99个中断地址,则将99取整到2多少次方这里是128,128*4=2的9次方,就是要求你的向量表起始地址一定要低9位为0,比如0x0002_0200就合适),不过对软件员对,只要你将合适的中断向量表地址(绝对地址)写入即可!

使用特权

评论回复
12
香水城| | 2011-10-9 11:02 | 只看该作者
引脚不是可以设置哪里启动,向量表位置吗?
寄存器不是可以设置向量表位置?

有疑惑这到底是什么关系?区别。50分求解惑。来者有分。
lord_fan 发表于 2011-10-3 11:21


这是双重关系。

刚上电时,由Boot1/Boot0的配置决定向量表位置,上电程序运行之后,向量表位置则由中断向量偏移寄存器的内容决定。

程序运行之后,Boot1/Boot0的功能就不起作用了。

使用特权

评论回复
13
airwill| | 2011-10-9 12:26 | 只看该作者
总结: 引脚设置哪里启动; 寄存器设置向量表位置
:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

308

帖子

0

粉丝