ST意法半导体
直播中

徐磊

8年用户 987经验值
私信 关注
[问答]

如何让LoRaWAN终端节点FreeRTOS应用程序在基于STM32WL55CCU6的定制板上运行?

我正在使用 STM32WL V1.2.0 并尝试从 .ioc 文件生成 LoRaWAN 端节点 FreeRTOS 应用程序并使其工作,但我遇到了一些定期发送数据包的问题。加入程序成功后,设备只发送一个数据包。Tx LmHandlerSend 状态为 LORAMAC_HANDLER_BUSY_ERROR 后,MacCtx.MacState 等于 LORAMAC_TX_RUNNING,不再发送数据包。我认为这个问题是由 FreeRTOS 的某些部分引起的,因为我在没有它的情况下生成了应用程序并且一切都按预期工作但我找不到问题的根源。以下是我为生成应用程序所做的步骤:
- 使用来自 LoRaWAN_EndNode_FreeRTOS 示例的 .ioc 配置文件生成的项目
- 导入 BSP 驱动程序并将其添加到包含路径
- 将生成的 app_freertos.c 文件替换为来自 LoRaWAN_EndNode_FreeRTOS 示例的 app_freertos.c 文件
- 在 lora_app.c 文件中,用自己的发送代码填充了 SendTxData 函数的用户代码部分:
  • static void SendTxData(void)
  • {
  • /* USER CODE BEGIN SendTxData_1 */
  •         LmHandlerErrorStatus_t status = LORAMAC_HANDLER_ERROR;
  •         int i = 0;
  •         AppData.Buffer[i++] = 1;
  •         AppData.Buffer[i++] = 2;
  •         AppData.Buffer[i++] = 3;
  •         AppData.Buffer[i++] = 4;
  •         AppData.BufferSize = i;
  •         AppData.Port = LORAWAN_USER_APP_PORT;
  •         status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false);
  • /* USER CODE END SendTxData_1 */
  • }
最终,我想让 LoRaWAN 终端节点 FreeRTOS 应用程序在基于 STM32WL55CCU6 的定制板上运行,因此能够生成项目并使其正常运行对我来说很重要。所以这是我的问题。什么可能导致定期发送数据出现问题?FreeRTOS 配置是否需要任何额外的步骤?







回帖(1)

h1654155275.5835

2022-12-9 11:57:57
您能否尝试将发送线程的堆栈大小增加 512,然后重放您的测试。
你在htask中的值似乎被下面的线程覆盖(这是导致你的错误的发送线程)。
举报

更多回帖

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