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:SYSBIOS

Guru**** 2538950 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/607683/rtos-sysbios

Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

当我迁移到新的 SYSBIOS 6.50.01.12 (器件:C2000 F28335)时,我发现了一个不同之处,希望得到您的反馈。

在我们的项目中、我们有一些 适用于多种应用的通用"代码"。

cfg 是一种常见的方法。

根据应用的不同、CPU 时钟可能为30Mhz、60MHz、120MHz、150MHz。

但我们不想在 cfg 中指明它、因为我们针对不同应用具有唯一的 cfg。

在:" void main (void)" 和 BIOS_start()之间;

我想配置所有基于 CPU 时钟的内容。

为了设置我之前执行的时钟模块的周期:

//获取时钟管理器的周期(以 CPU 节拍数表示)

Timer_handle = Clock_getTimerHandle();

PERIOD_TICKS_CLOCK_manager = Timer_getPeriod (timer_handle);

 

//计算节拍数

Period_tICKS_ID =(Float32_t) Period_ms;

Period_tICKS_ID = Period_TICKS_ID *((Float32_t)(freq.lo/1000u));

PERIOD_TICKS_ID = PERIOD_TICKS_ID /((Float32_t)(PERIOD_TICKS_CLOCK_manager));

PERIOD_TICKS_ID++;//按惯例添加一个节拍(要等待 N 个周期,我们需要设置 N+1)

Clock_setPeriod (handle_period_function、(uint32_t) period_ticks);

Clock_start (handle_periode_function);

但是现在我调用"timer_handle = Clock_getTimerHandle();"时 、结构看起来不是由 SYSBIOS 初始化的、因为句柄不是

指向正确的结构。

如果我做了一些不正确的事情,您能否说明这是否正常?

感谢您的支持、

Mathieu

RTOS:C2000和 SYSBIOS 6.50.01.12

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    信息补充:
    当我调用时:timer_handle = Clock_getTimerHandle();
    我到达 SYSBIOS 函数:

    *==== Timer_getPeriod ===
    *
    uint32 Timer_getPeriod (Timer_Object *对象)

    返回(TimerDevices[obj->id].PRD);


    TI_SYSBIOS_KNL_Clock_Module_state__V:0x8996
    --> obj->id 的值在我的情况下为:-8080,而不是预期的0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将此主题分配给工程师、但在美国假日期间、响应速度会有点慢。

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

    Mathieu、

    一些问题/意见:

    1) 1)您似乎在尝试在应用程序运行时动态设置时钟模块周期。  是这样吗?  时钟*模块*节拍周期是在构建应用程序时建立的固定常量。  它不能在运行时更改。  您可以通过以下方式在应用程序 C 代码中访问此周期:

    #include
    …μ A
    tickPeriod = Clock_tickPeriod;

    “Clock_tickPeriod”的单位为*微秒*。

    2) 2) 如果要获取时钟节拍周期(以底层计时器对象(时钟模块正在使用)的*计数*为单位)、可以使用: clock_getTickPeriod()

    3) 3)代码片段显示了对 Clock_setPeriod()和 Clock_start()的调用。  这些 API 用于单独的时钟对象、而不是时钟模块本身。  这是您想要的吗?

    4) 4)如果您想知道运行时的 CPU 时钟速率(对于“根据应用程序,CPU 时钟可能是30Mhz、60MHz、120MHz、150MHz”),您是否尝试使用 BIOS_getCpuFreq() API?

    5) 5)您已移至 SYSBIOS 6.50.01.12。  您在看到不同结果时使用的是哪个早期版本?

    6) 6)您能否更详细地描述一下“但我们不想在 cfg 中指明它,因为我们针对不同的应用程序有一个唯一的 cfg。”?   您是否为多个应用程序使用了一个通用.cfg、然后每个单独的应用程序都有一个额外的.cfg 文件?

    7) 7)您指示“当我调用时:timer_handle = Clock_getTimerHandle(); 我到达 SYSBIOS 函数: timer_getPeriod()”。  Clock_getTimerHandle()不会调用任何函数,您能解释这条评论吗?

    谢谢、
    Scott

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

    您好、Scott、

    非常感谢您的回答。

    根据您的建议、我删除了所有 SYSBIOS 初始化文件、它工作正常。

    非常感谢

    Mathieu