老师,NVIC_SetPendingIRQ(IRQn)设置悬起和NVIC-:STIR

🔍 溯源 ✍️ Jack | 📅 2024-10-08 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/调试可靠性 #技术/中断 #质量/普通

原帖 | Jack | 2024-10-08 01:29 | 👍0 | 阅读约1

老师,NVIC_SetPendingIRQ(IRQn)设置悬起和NVIC->STIR触发中断是一样的嘛?

NVIC_SetPendingIRQ()是CMSIS库提供的函数,用于设置指定中断的挂起位(Pending)(记住:是操作NVIC内部寄存器),它适用于所有支持的中断。调用 NVIC_SetPendingIRQ(IRQn) 会将指定的中断 IRQn 设置为挂起状态,这样中断控制器就会在适当的时机响应该中断。

NVIC->STIR这句话操作的是一个寄存器, (STIR,Software Trigger Interrupt Register),,用于触发一个软件中断。它只能用于触发外部中断。通过向 STIR 写入一个中断号,可以立即触发该中断。该方法的主要作用是模拟外部中断的行为。使用 STIR 可以在不修改挂起位的情况下直接触发中断。

区别:
1,NVIC_SetPendingIRQ() 是通过设置挂起(悬起)位来触发中断(能触发所有中断,除了内部异常),而 NVIC->STIR 是通过写寄存器来触发一个软中断。

应用场景:
如果你想在代码中模拟硬件中断的触发,可以使用 NVIC->STIR。
如果你需要更灵活的控制,例如对中断进行挂起和清除,可以使用 NVIC_SetPendingIRQ()。


相关笔记