硬中断嵌套使用

请问V307的测试例子,中断函数都是这么写的:

void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));


可否理解为例程里已经占用掉了两个硬压栈中断函数?interrupt("WCH-Interrupt-fast")声明对于V307代码中只能有3个吧?

另外请提供下配置硬中断嵌套优先级的简单例子,谢谢!


你好,关于中断相关说明可参考这篇博客:https://www.cnblogs.com/wchmcu/p/17095464.html 


void WWDG_IRQHandler(void)  __attribute__((interrupt("WCH-Interrupt-fast")));

请问这个硬件压栈声明如果代码中超过3个(也就是超过3个中断函数都是带“WCH-Interrupt-fast”),会按什么规则处理中断函数?


你好,准确来说是三级,不是三个!中断分为抢占优先级和子优先级,如果都是同一抢占优先级,你中断都可以声明为硬件压栈。需注意如果你配置了中断嵌套深度大于三级,低三级应配为硬件压栈,高五级应配为软件压栈。具体可参考官方EVT中的中断嵌套例程以及青稞内核手册:  https://www.wch.cn/downloads/QingKeV4_Processor_Manual_PDF.html 。后续若有问题,可邮箱(yrl@wch.cn)与我沟通。

image.png

image.png


只有登录才能回复,可以选择微信账号登录