ST意法半导体
直播中

王健

7年用户 940经验值
私信 关注
[问答]

LoRaWAN_End_Node_FreeRTOS应用程序会卡在tasks.c是为什么?

你好社区,
我们正在使用 STM32WL V1.2.0 开发基于示例应用程序“LoRaWAN_End_Node_FreeRTOS”的应用程序。威廉希尔官方网站 板:Nucleo-WL55JC1。示例应用程序有效。
然而,一旦我们在线程中添加函数“osDelay(2000)”,应用程序就会卡在 tasks.c 的第 2581 行:
  • configASSERT( ( xtickCount + xTicksToJump ) <= xNextTaskUnblockTime );
复现步骤: LoRaWAN_End_Node_FreeRTOS, lora_app.c, line 439: 添加代码:
  •   APP_LOG(TS_ON, VLEVEL_M, "before osDelay(2000)rn");
  •   osDelay(2000);
  •   APP_LOG(TS_ON, VLEVEL_M, "after osDelay(2000)rn");
我们怀疑 ticks 没有正确更新,因此在从睡眠中醒来后,configASSERT() 被命中,因为系统认为它错过了 xNextTaskUnblockTime。
使用 FreeRTOS 计时器 osTimerNew()、osTimerStart() 时,会发生同样的情况。原始示例应用程序既不使用 osDelay() 也不使用 osTimerNew(),而只使用 osThreadFlagsWait/Set() 函数,因此工作正常。
FreeRTOS 配置:与示例应用程序一样,最值得注意的是 configUSE_TICKLESS_IDLE = 1。
任何想法可能是错的?

更多回帖

发帖
×
20
完善资料,
赚取积分