首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >腾讯通isr_evt_set服务延迟

腾讯通isr_evt_set服务延迟
EN

Stack Overflow用户
提问于 2018-04-27 15:19:12
回答 1查看 102关注 0票数 0

我在Silicon Labs的EFM tiny-gecko硬件上工作,使用4.22 arm工具链运行RTX。我有以下RTX配置:- NVIC grouping 7.1 -系统Tick & Pend系统服务中断优先级224。-两个中断都是启用的,并且永远不会被我的代码流禁用。- PRIMASK和BASEPRI寄存器均为0。

我的项目中的RTX代码已经有几年的历史了,我不确定它是哪个版本。

我观察到以下问题:当使用isr_evt_set从实时时钟中断触发任务时,任务执行被延迟。我发现当RTC中断结束时,"Pend System service“中断没有被调用。

当从实时时钟中断调用时,isr_evt_set将“挂起系统服务”置于挂起状态。RTC中断结束后,"Pend system service“中断不会激活。相反,处理器恢复线程模式并执行低优先级(电源管理)任务。

我在RTC中断中将SCB寄存器SLEEPONEXIT位设置为0。在大约4-10个RTC周期之后,“挂起系统服务”中断最终被执行。

我希望"Pend system service“中断在RTC中断之后运行。你能解释一下为什么在RTC中断后皮质会回到线程模式吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 14:57:37

  1. The Cortex M3手册指出“挂起系统服务”是一个例外,处理器必须返回到线程模式才能为其提供服务。
  2. 我发现,在实时时钟中断发生之前,负责使系统进入睡眠状态的任务使用tsk_lock()。当从实时时钟中断中调用isr_evt_set时,其激活“挂起系统服务”的请求被缓冲,并且仅在处理器恢复线程模式并使用tsk_unlock()后才服务,它立即为“挂起系统服务”设置NVIC挂起标志。使用调试器,我发现在调用tsk_unlock()之后不久就会调用PendSV_Handler()。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50057302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档