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.

[参考译文] RTOS/AM5728:周期性任务不起作用

Guru**** 2601915 points
Other Parts Discussed in Thread: BEAGLEBOARD-X15, AM5728, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647266/rtos-am5728-periodic-task-not-working

器件型号:AM5728
Thread 中讨论的其他部件:BeagleBoard-X15SYSBIOS

工具/软件:TI-RTOS

您好!  

我使用的是 BeagleBoard-X15 (AM5728)。 我正在尝试将默认 UART (UART3)上的虚拟值发送到蓝牙模块。 我创建了一个任务、我希望每250ms 重复一次。 随附的代码仅在 UART 上发送信息一次、不会再次发送。  

请帮助。  

谢谢。  

e2e.ti.com/.../am5728_5F00_dsp_5F00_periodic_5F00_uart_5F00_not_5F00_working.ce2e.ti.com/.../am5728_5F00_dsp_5F00_periodic_5F00_uart_5F00_not_5F00_working.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您的时钟函数 clock_fxn_uart()调用 UART_test()。 您能否在此 clock_fxn_uart()内添加一个计数器来检查问题是否只有一次输入时钟函数? 如果这是问题、您可以参考如何设置周期性时钟、如下所示:

    var timer0Params =新 Timer.Params();
    timer0Params.instance.name ="mytimer";
    timer0Params.period = 1000;
    timer0Params.periodType = XDC.MODULE ("ti.sysbios.interfaces.ITimer").PeriodType_MICROSECS;
    program.global.mytimer = Timer.create (5、"&timerIsr"、timer0Params);//确定

    测试后可多次输入 timeIsr。

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

    你是对的。 Clock_fxn_UART 只调用一次。 但我无法使用您的代码片段、因为我认为我只有一个计时器、而且我也在执行 IPC、因此计时器不可用。 我在使用您的代码时收到"定时器器件不可用错误"。 我是否可以使用任何其他计时器或时钟、以及您是否有用于该计时器或时钟的示例代码?

    谢谢。
    艾哈迈德。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请访问: software-dl.ti.com/.../Timer.html

    如果定时器已经被使用或者您不确定哪一个可用:如果定时器外设不可用的话、创建可能会失败。 要请求任何可用的计时器,请使用任意作为 ID。 TimerId 是逻辑 ID。 特定系列的实现将 ID 映射到物理外设。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我在 cfg 文件中添加以下行时、我收到错误"Any" is not defined"。 (我已包括#include main.c 文件中的行)

    var timer0Params =新 Timer.Params();
    timer0Params.instance.name ="mytimer";
    timer0Params.period = 1000;
    timer0Params.periodType = XDC.MODULE ("ti.sysbios.interfaces.ITimer").PeriodType_MICROSECS;
    program.global.mytimer = Timer.create (any、"&timerIsr"、timer0Params);//确定
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将最后一行更改为"关注"并能够进行编译。
    program.global.mytimer = Timer.create (timer) Params.any、"&clock_fxn_uart"、timer0Params);//确定

    仍然、这不是重复调用函数 clock_fxn_uart。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    经过更多调试后、我认为计时器和时钟代码片段会重复运行例程/函数。 它的函数调用 UART_PUTS 或 UART_putc 或 UART_WRITE、仅在第一次中止线程时和第二次中止该线程时向蓝牙模块发送信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eric:

    我最后要做的是、我在(1)个循环中输入 UART_printf 命令、TI-RTOS 在任务之间自动切换、这将实现我尝试实现的目标。 我还有一个问题。 现在我使用的是 UART3。 我想使用 UART1而不是3。 您能不能指出我应该如何进行引脚复用/任何其他更改来实现这一点吗?

    非常感谢您的帮助。
    艾哈迈德。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅 www.ti.com/.../sprac32.pdf。 此步骤也适用于 AM437x。

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

    我使用的是 AM5728、而不是335或437。 我使用了引脚多路复用工具、并启用了包括 UART1在内的少数 UART。 该工具生成了"boardPadDelay.h"、"boardPadDelayDevice.c"、"boardPadDelayInit.c"和"boardPadDelayTune.h"以及一些其他文本和 csv 文件。 我用上述下载的文件替换了以下目录中的所有原始四个文件。  

    TI-processor-sdk-rtos-am57xx-evm-04.00.00.04/pdk_am57xx_1_0_7/packages/ti/board/src/evmAM572x/

    然后、我使用以下命令重新编译该目录、并执行所有操作。  

    来源:pdksetupenv.sh

    清洁

    使 limit_boards="evmAM572x" limit_SoCs="am572x"

    我正在尝试从 RTOS SDK 运行 UART_POLLING_TEST 示例。 该工程编译正常、但不会在 UART 1上发送任何内容。 随附的是 main.c

    谢谢。  

    艾哈迈德。  

    e2e.ti.com/.../uart_5F00_polling_5F00_test.c

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

    主题是计时器。 您能否为 PINMUX 打开一个新的计时器问题已解决。 谢谢!

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