This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL-CC2640R2:在任务内调用 UART_READ()会导致异常问题?

Guru**** 2587345 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/595069/launchxl-cc2640r2-calling-uart_read-inside-task-causes-unusual-problems

器件型号:LAUNCHXL-CC2640R2

您好!

  我已修改 simple_peripheral 以使用事件执行 UART 回显、它可以正常工作。 我将 UART 代码传输到了正在开发的产品中。 运行的程序也基于 simple_peripheral。 当我注释掉任务内部的 UART_READ()时,它工作正常,并在 Tera Term 中打印“UART initialized”。 但是,如果我如下面所示调用任务内部的 UART_READ(),则会导致一些异常行为。 我只能在某个时间点调试步骤、然后它就会异常运行。 但是、如果我暂停调试器、它始终会转到存储器位置0x2a00并检查存储器视图、它会调用 iCall_Init。 对于条件"i < MAX_NUM_ENCEITES"、它似乎卡在。 我将 ICALL_MAX_NUM_ENTRIES =6增大到7和8。 但结果仍然相同。 如何调试此问题。 我对 IAR Workbench 不是很了解。

-克尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Markel:

    我不确定 UART_READ 为什么会导致问题、但我怀疑它与 iCall 有关。

    您能否尝试创建一个只处理 UART 数据的附加任务? 如果您需要在两个任务之间进行通信、我建议您使用 iCall Semphore 来告知第一个任务发生了事件。

    此致、
    米歇尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是一个观察。 如果我在初始化中调用 UART_read(),如果我按键,它将进行回调。 这就是我希望发生的情况。 但问题是回调只发生一次。

    -克尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设您的回调函数中包含 UART_READ()。

    此外、您能否检查 ROV 以查看任务的堆栈大小是否足够大? 它应该在 IAR 中的 TI-RTOS 菜单下或者在 CCS 中的工具下。

    此致、
    米歇尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     刚刚偶然发现了此主题、可能会有所帮助:

    这是论坛主题中的 GitHub 链接:

    米歇尔