我正在研究 Silicon Labs EFM tiny-gecko HW,使用 4.22 arm 工具链运行 RTX。我对 RTX 有以下配置: - NVIC 分组 7.1 - 系统勾选和挂起 系统服务中断优先级 224。 - 我的代码流启用并且从不禁用这两个中断。- PRIMASK 和 BASEPRI 寄存器均为 0。
我项目中的 RTX 代码已经有几年的历史了,我不确定它是哪个版本。
我观察到以下问题:当使用 isr_evt_set 从 RTC 中断触发任务时,任务执行被延迟。我发现 RTC 中断结束时不会调用“挂起系统服务”中断。
当从 RTC 中断调用时,isr_evt_set 将“挂起系统服务”置于挂起状态。RTC 中断结束后,“Pend system service”中断不会被激活。相反,处理器恢复线程模式并执行低优先级(电源管理)任务。
我在 RTC 中断中将 SCB 寄存器的 SLEEPONEXIT 位设置为 0。“挂起系统服务”中断最终会在约 4-10 个 RTC 周期后执行。
我希望“挂起系统服务”中断在 RTC 中断之后运行。你能解释一下为什么在 RTC 中断后皮层会回到线程模式吗?