工具/软件:TI-RTOS
您好!
如何更改计时器中断的中断优先级。 在数据表中、它显示为可编程中断优先级。 但是、我该怎么做呢??
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
您好!
如何更改计时器中断的中断优先级。 在数据表中、它显示为可编程中断优先级。 但是、我该怎么做呢??
Shyam、
我理解您的问题。 让我尝试进一步澄清答案。 假设一个系统中只有两个中断被启用:一个定时器和一个 GPIO (一个外部开关)。 您的程序在 main while ()循环中"不执行任何操作"。
只有当定时器和 GPIO 同时触发(或者更具体地说、在同一个8ns 系统周期内)时、才需要中断优先级。 在这种情况下、优先级较高的中断将首先被处理。
但这种情况非常罕见、同意吗?
现在、让我们再次假设您的程序在主循环中处于空闲状态、然后您按下开关。 您的代码执行将移至为 GPIO 分配的 ISR (中断服务例程)。 当代码位于该函数内时、即使计时器触发、执行流程也没有变化-它仍将完成 GPIO 的函数、只有在计时器函数内执行。 优先级不会改变它。
下一种情况:如果您的系统启用了3个中断:GPIO、计时器和 SysTick。 例如、您的代码正在 SysTick 例程内运行(可能持续约2us……)。 现在、定时器和开关中断在这种"更长的时间"内发生的可能性要大得多、同意吗? 在这种情况下、就在 SysTick 中断功能完成后、将评估中断优先级、并首先执行定时器和 GPIO 之间具有最高优先级的任何一个。
从技术上讲、在 ISR 内部启用中断是可能的-但我绝不建议这样做-这将使您的系统疯狂地进行管理。
再说一次:使您的 ISR 非常短。 只需弄清楚导致中断的原因、捕获某种事件状态、并设置一些位置处理标志。 然后、在主循环内部检查该标志、并在中断例程之外执行其余处理。
希望这更有意义。 否则、现在是时候查看用于解释中断的时间片图了。。。
布鲁诺