rt_enter_critical(); while(1) { LOG_E("TEST"); rt_thread_mdelay(1000); }
rt_enter_critical();
while(1)
{
LOG_E("TEST");
rt_thread_mdelay(1000);
}
rt_enter_critical使用后,为什么 rt_thread_mdelay就无效了,直接跳过
查看更多
锁了调度器,不让调度。delay又让去延时,并调度到其它的线程,好为难啊。
可以阅读一下 mdelay 的实现呦,不能在关闭调度或者中断的情况下使用挂起函数的,例如 delay 信号量等都会失效的。
…
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
锁了调度器,只允许执行结果明确的纯运算类代码,不允许执行任何引起状态的代码。
最好 LOG_E 都不要有。
ucos调度器上锁后好像延时就还能用。只是无切到其他线程。感觉这里没设计好
@wulongchao 可能ucos也不行,以前用时候没注意过。。。直到突然出问题了