查看: 9408|回复: 1

[其他] 中断向量重定向VTOR

[复制链接]
  • TA的每日心情
    开心
    2018-9-14 09:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    70

    主题

    329

    帖子

    0

    高级会员

    Rank: 4

    积分
    952
    最后登录
    2021-1-4
    发表于 2012-9-4 09:43:14 | 显示全部楼层 |阅读模式
    我现在对向量表的重定向不太清楚,请指导的同学说一下。
    我的理解是这样的:
    1.在startup 文件的common_startup函数中拷贝向量表到RAM
       /* Copy the vector table to RAM */
        if (__VECTOR_RAM != __VECTOR_TABLE)
        {
            for (n = 0; n < 0x410; n++)
                __VECTOR_RAM[n] = __VECTOR_TABLE[n];
        }
        /* Point the VTOR to the new copy of the vector table */
    2. write_vtor((uint32)__VECTOR_RAM);中,把RAM的向量表的首地址给VTOR
    void write_vtor (int vtor)
    {
            /* Write the VTOR with the new value */
            SCB_VTOR = vtor; 
    }
    这样在发生异常时,就可以在RAM中读到ROM中的中断函数地址,这就是重定向中断向量了吗
    我知道答案 目前已有0人回答
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-9-4 11:07:06 | 显示全部楼层

    RE:中断向量重定向VTOR

    这里拷贝到RAM中是为了更快的执行中断,你可以用过__VECTOR_RAM 的值来控制是否需要拷贝到中断中。这个是在进入main函数以前执行的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 16:06 , Processed in 0.091679 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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