OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6845|回复: 8

关于IAP实验中两个中断向量表的疑问

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-12-10
在线时间
16 小时
发表于 2017-4-13 09:10:02 | 显示全部楼层 |阅读模式
1金钱
  在IAP实验中有两个中断向量表,一个是IAP程序设置的中断向量表,地址是0X80000004,还有一个是APP程序设置的中断向量表,地址是在0X80010004,然后在APP程序中(假设APP程序已经下载完成)发生中断时,原子哥强调说程序仍然会跳转到0X80000004所在的中断向量表中,那么按照这种说法,那CPU会根据0X80000004中中断向量表里的中断入口函数地址,应该会去找到IAP程序里的中断函数,而不会找到APP程序里的中断函数。那APP程序里的程序就不会执行了啊。

最佳答案

查看完整内容[请看2#楼]

因为设置了偏移,第二次进入中断的时候,硬件自动加偏移量!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-4-13 09:10:03 | 显示全部楼层
因为设置了偏移,第二次进入中断的时候,硬件自动加偏移量!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-4-13 09:32:16 | 显示全部楼层
应用程序里,SCB->VTOR = FLASH_BASE | 0x8000;
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-12-10
在线时间
16 小时
 楼主| 发表于 2017-4-13 09:47:41 | 显示全部楼层
shikihane 发表于 2017-4-13 09:32
应用程序里,SCB->VTOR = FLASH_BASE | 0x8000;

我的理解  这条指令只是告诉CPU建立第二个中断向量表的地址是 FLASH_BASE | 0x8000;而没法改变第一个中断向量表里所有中断函数的入口地址啊,发生中断时CPU还是会按照0X80000004里中断函数的地址去找中断函数,那找到的中断函数应该是在IAP程序里而不是APP程序里。
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-4-13 11:49:37 | 显示全部楼层
kevin_shen 发表于 2017-4-13 09:47
我的理解  这条指令只是告诉CPU建立第二个中断向量表的地址是 FLASH_BASE | 0x8000;而没法改变第一个中断 ...

不是告诉,是直接改变了。整个向量表地址向后偏移了。第一个表回不去了。
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-12-10
在线时间
16 小时
 楼主| 发表于 2017-4-13 11:57:28 | 显示全部楼层
shikihane 发表于 2017-4-13 11:49
不是告诉,是直接改变了。整个向量表地址向后偏移了。第一个表回不去了。

回不去是什么意思?第一个中断向量表里的地址改变了? 那发生中断的时候是去第二个表找中断函数地址还是去第一个表找中断函数地址
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2017-4-13 15:39:00 | 显示全部楼层
kevin_shen 发表于 2017-4-13 11:57
回不去是什么意思?第一个中断向量表里的地址改变了? 那发生中断的时候是去第二个表找中断函数地址还是 ...

就是说,改完偏移以后,以后都用那个位置的表了。复位中断例外。
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-12-10
在线时间
16 小时
 楼主| 发表于 2017-4-14 09:48:10 | 显示全部楼层
shikihane 发表于 2017-4-13 15:39
就是说,改完偏移以后,以后都用那个位置的表了。复位中断例外。

懂了 谢谢
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-5-7
在线时间
1 小时
发表于 2017-6-30 17:22:23 | 显示全部楼层
正点原子 发表于 2017-4-13 09:10
因为设置了偏移,第二次进入中断的时候,硬件自动加偏移量!!

一针见血,原子哥才是真男神!!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-17 10:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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