InstallIRQHandler()

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

InstallIRQHandler()

805 Views
yuansongchen
Contributor I

需要程序在RAM中运行,这需要将.isr_vector从ROM复制到RAM,fsl_ Common_arm中的函数uint32。c_ InstallIRQHandler(IRQn_Type irq,uint32_t irqHandler)似乎就是这样做的。请问这个函数在哪里调用?

0 Kudos
2 Replies

668 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi @yuansongchen ,

如果你的程序是编译在RAM中的,那ROM boot自动会把整个image copy到RAM并指定IVT地址,不需要你再去搬一次。

此外你也可以在任何时候改变IVT,只要改之前禁止全局中断。

 

Regards,

Jing

0 Kudos

767 Views
giraffe508
Contributor IV

Hi @yuansongchen 

函数InstallIRQHandler()通常在启动文件中调用,这是在系统初始化时设置中断处理程序的地方。这个函数的目的是为特定的中断请求(IRQ)安装一个新的中断处理程序(IRQHandler)。

 

以下是一个示例,展示了如何在启动文件中使用这个函数:

 

 /* 在启动文件中 */ extern void YourIRQHandler(void); /* 这是你的中断处理程序 */
int main(void) { /* ...系统初始化代码... */
/* 安装你的中断处理程序 */ InstallIRQHandler(YourIRQ, (uint32_t)YourIRQHandler);
/* ...其余的代码... */ }

 

请注意,你需要将YourIRQ和YourIRQHandler替换为你的实际IRQ和处理程序。你的IRQHandler应该是一个函数,当IRQ发生时,它会被自动调用。

 

希望这个答案能帮到你。如果你还有其他问题,欢迎继续提问。

0 Kudos