OpenEdv-开源电子网

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

STM32中断向量重映射?

[复制链接]

49

主题

160

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-11-2
在线时间
41 小时
发表于 2019-1-7 12:45:53 | 显示全部楼层 |阅读模式
10金钱


STM32中断向量可以重映射,   


具体咋映射?

比如开始地址是  0X0800 0000   我想给映射到地址  0X00800 1000    咋做?

最佳答案

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

SCB->VTOR = FLASH_BASE | 0x1000;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2019-1-7 12:45:54 | 显示全部楼层
SCB->VTOR = FLASH_BASE | 0x1000;
回复

使用道具 举报

49

主题

160

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-11-2
在线时间
41 小时
 楼主| 发表于 2019-1-7 14:10:10 | 显示全部楼层
为了动态重分发中断,CM3 允许向量表重定位——从其它地
址处开始定位各异常向量。这些地址对应的区域可以是代码区,但也可以是RAM 区。在RAM
区就可以修改向量的入口地址了。为了实现这个功能,NVIC 中有一个寄存器,称为“向量
表偏移量寄存器”(在地址0xE000_ED08 处),通过修改它的值就能定位向量表。但必须注
意的是:向量表的起始地址是有要求的:必须先求出系统中共有多少个向量,再把这个数字
向上增大到是2 的整次幂,而起始地址必须对齐到后者的边界上。例如,如果一共有32 个
中断,则共有32+16(系统异常)=48 个向量,向上增大到2 的整次幂后值为64,因此地址
地址必须能被64*4=256 整除,从而合法的起始地址可以是:0x0, 0x100, 0x200 等。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 00:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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