昨天看了st网站的一篇应用笔记STR91x interrupt management 在笔记里说如果要使用中断嵌套的话,需要在ISR里首先读取VIC1_VAR的值,并且在ISR结束时写VIC1_VAR以更新VIC1的优先级。不使用中断嵌套的话,在ISR里就不强制对VIC1_VAR的读写。
有几个地方不清楚: 1.**里说写VIC0_VAR或VIC1_VAR的目的是为了向VIC指示中断处理已经结束,来更新优先级逻辑使得相同或者较低的优先级中断能够中断CPU。 如果我在ISR里不对VICx_VAR写值的话,相同或较低的优先级中断就不能够响应了吗?我之前看的STR91x的demo程序里就没有此操作。 2.**里说:在不允许中断嵌套的情况下,如果中断来自VIC0,仍要向VIC0_VAR写任意值,但如果中断来自VIC1,则不强制此操作,如果这样,那么一个来在VIC1的最高优先级的中断执行之后,VIC1的较低优先级的中断会不会响应? 我发现新的固件库里的91x_it.C里VIC0的中断函数都加上了VIC0->VAR = 0xFF;的处理,但是VIC1的都没加。
|