硬汉嵌入式论坛

 找回密码
 立即注册
查看: 557|回复: 5
收起左侧

[有问必答] STM32 运行过程中中断重定向 NVIC_SetVector 未生效

[复制链接]

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2023-8-24 21:17:52 | 显示全部楼层 |阅读模式
本帖最后由 TianSong 于 2023-8-25 09:01 编辑

STM32F407 在main函数运行过程中,使用 NVIC_SetVector 进行中断重定向,但是发现没有生效,还是原有的中断处理函数被调用,这是为什么呢?


1.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2023-8-25 09:35:18 | 显示全部楼层
仅设置还不行,还得把向量表复制过来才行。

我这个是把整个向量表复制到了RAM空间。


回复

使用道具 举报

22

主题

67

回帖

133

积分

初级会员

积分
133
发表于 2023-8-25 10:07:24 | 显示全部楼层
eric2013 发表于 2023-8-25 09:35
仅设置还不行,还得把向量表复制过来才行。

我这个是把整个向量表复制到了RAM空间。

直接用 SCB->VTOR = 偏移地址    也是可以的吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2023-8-25 16:17:44 | 显示全部楼层
2360985396 发表于 2023-8-25 10:07
直接用 SCB->VTOR = 偏移地址    也是可以的吧

对,你调用的函数 NVIC_SetVector 就是配置的这个。
回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2023-8-25 16:34:26 | 显示全部楼层
看实现

[C] 纯文本查看 复制代码
/**
  \brief   Set Interrupt Vector
  \details Sets an interrupt vector in SRAM based interrupt vector table.
           The interrupt number can be positive to specify a device specific interrupt,
           or negative to specify a processor exception.
           VTOR must been relocated to SRAM before.
  \param [in]   IRQn      Interrupt number
  \param [in]   vector    Address of interrupt handler function
 */
__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
{
  uint32_t vectors = (uint32_t )SCB->VTOR;
  (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector;
  __DSB();
}



是将修改中断向量表中的值,但默认中断向量表中的值是放在flash中的,不能修改,而且注释也说了修改在SRAM中的中断向量表

1. 根据硬汉老师的,将中断向量表复制一份到RAM中,修改 SCB->VTOR 让它指向这个新的中断向量表
2. 调用 NVIC_SetVector 将新的中断函数的地址取代默认的中断函数

话说,直接直接调用NVIC_SetVector尝试去修改flash的内容没有触发异常吗
回复

使用道具 举报

22

主题

67

回帖

133

积分

初级会员

积分
133
发表于 2023-8-25 16:39:21 | 显示全部楼层
eric2013 发表于 2023-8-25 16:17
对,你调用的函数 NVIC_SetVector 就是配置的这个。

硬汉哥 是不是在HAL_Init之前配置 SCB->VTOR 就不用memcpy拷贝了 我这边的boot 和 app就没有拷贝也能用呀
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 04:34 , Processed in 0.319509 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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