【发布时间】:2018-10-07 23:57:28
【问题描述】:
我正在开发 Silicon Labs EFM tiny-gecko 硬件,使用 4.22 arm 工具链运行 RTX。 我对 RTX 有以下配置: - NVIC 分组 7.1 - System Tick & Pend 系统服务中断优先级 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 中断后皮层会回到线程模式吗?
【问题讨论】:
标签: embedded keil cortex-m3 rtx