使用RT-thread,中断结构如下:
void app_timer_isr(void)
{
GET_INT_SP();
/* enter interrupt */
rt_interrupt_enter();
APP_TIM->INTFR = 0;
NVIC_SetPendingIRQ(TIM7_IRQn);
/* leave interrupt */
rt_interrupt_leave();
FREE_INT_SP();
}
两个中断优先级分别为6和3。
当中断6被优先级3抢占时,堆栈指针变化如下:
高优先级的ISR3 堆栈指针和APP的SP相同,这正常吗,会不会造成系统运行错误?