你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用RTOS,还能调用LL_mDelay这个延时函数吗?

[复制链接]
huahuahnu 提问时间:2023-7-14 16:38 / 未解决
如题,未学习研究过RTOS,不太清楚调用滴答定时器的情况,是不是不能判断到SysTick_CTRL_COUNTFLAG_Msk标志?

  1. void LL_mDelay(uint32_t Delay)
  2. {
  3.   __IO uint32_t  tmp = SysTick->CTRL;  /* Clear the COUNTFLAG first */
  4.    uint32_t tmpDelay; /* MISRAC2012-Rule-17.8 */
  5.   /* Add this code to indicate that local variable is not used */
  6.   ((void)tmp);
  7.   tmpDelay  = Delay;
  8.   /* Add a period to guaranty minimum wait */
  9.   if (tmpDelay  < LL_MAX_DELAY)
  10.   {
  11.     tmpDelay ++;
  12.   }

  13.   while (tmpDelay  != 0U)
  14.   {
  15.     if ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U)
  16.     {
  17.       tmpDelay --;
  18.     }
  19.   }
  20. }
复制代码


收藏 评论2 发布时间:2023-7-14 16:38

举报

2个回答
butterflyspring 回答时间:2023-7-17 16:48:41
可以调用,简单讲,可以控制的~~,不想让任务切走。

知足- 回答时间:2023-7-19 17:02:58

使用RTOS可以调用这个延时函数,但是会影响任务调度,不建议在任务中使用。这个延时函数在任务中运行时,程序卡在这里,任务无法切换调度,其他任务都不能执行。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版