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/CC1310:TI-RTOS、CC1310计时器链接器错误

Guru**** 2605645 points
Other Parts Discussed in Thread: CC1310, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579437/rtos-cc1310-ti-rtos-cc1310-timer-linker-errors

器件型号:CC1310
Thread 中讨论的其他器件: SYSBIOS

工具/软件:TI-RTOS

您好!

我正在尝试使周期性计时器工作、它每200ms 调用一次 ISR。 这是我的代码(主要从 ti_rtos_spruex3q.pdf 复制):

/* XDCtools 头文件*/
#include 
#include 
#include 
#include 

/* BIOS 头文件*/
#include 
#include 
#include 
//#include 

/*板头文件*/
#include "Board.h"

/* PIN_Config 表的全局存储器*/
static PIN_State ledPinState;

extern PIN_Config ledPinTable[];

/*原型*/
void timerIsr (XDC_UARg);


void timerTest (void)
{
Timer_Params timerParams;
Timer_handle myTimer;
ERROR_Block EB;

ERROR_INIT (&EB);

Timer_Params_init (&timerParams);
timerParams.period = 200000;
timerParams.periodType = Timer_PeriodType_micros;
timerParams.arg = 1;
myTimer = Timer_create (Timer_any、timerIsr、&timerParams、&EB);
if (myTimer== NULL){
System_abort ("计时器创建失败");
}
}


void timerIsr (XDC_UArguarg)
{
;//在此处切换 LED 或类似
的内容}

但我无法使其生成、因为存在以下链接器错误:

ERROR[Li005]:"ti_SysBIOS_timer_dmtimer_Timer_create"没有定义[引用自 C:\Users\dw\Documents\TestProj\Debug\Obj\timer_test.o]
Error[Li005]:没有"ti_SysBIOS_timers_dmtimers_Params__Obj\timer_test_oter\Obj\Users_Testinit_deliter\dw\deliter\dest_deliter\dinit_deliter\deliter\dest_deliter\dinit\Documents\c
在运行时的"ti_deliter\ 

我怀疑我缺少项目设置等内容。 如果有任何帮助、您将不胜感激?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC1310没有 DMTimer、因此使用 ti.sysbios.timers.dmtimer.Timer 模块不能正常工作。

    但是、ti.sysbios.family.arm.lm4.Timer 模块在 CC1310上工作。 它有4个可用的定时器实例。

    您应该能够使用与 dmtimer 计时器模块相同的 C 代码。 仅包含 而是修改.cfg 文件以引入 lm4计时器模块:

    xdc.useModule('ti.sysbios.family.arm.lm4.Timer');

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Alan、他做到了这一点。
    不过、我现在发现计时器 ISR 只会每隔198ms 调用一次。 您是否有任何想法、为什么这可能会让您满意?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是意外的。 使用 BIOS ROV 视图、报告的 CPU 频率是否正确? 在 lm4 Timer "Basic"或"Device" ROV 视图中、您能否确认显示的"period"值是否与200ms 一致? 周期应为200ms 内的 CPU 周期数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不熟悉我们使用的 IAR Embedded Workbench、因此当我了解如何安装 BIOS ROV View 插件或等效产品时、我会向您表示感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    选择"TI-RTOS "插件、如下所示:

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

    感谢您的回复 Alan。 我进行了重新安装、现在可以看到 BIOS ROV 视图。 这些分别来自 lm4计时器基础和器件:

    在48MHz 时钟的情况下,在200ms 的时间内周期看起来是正确的(48000000*0.2=9600000)。 也许 SmartRF06评估板上没有安装48MHz 时钟?

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

    我发现 RAT 更加准确:

    。
    。
    。
    时间= RF_getCurrentTime();
    
    while (1)
    {
    时间+=((uint32_t)(4000*200);/* 200ms */
    rf_ratCompare (rfHandle、&pCmdStruct, time、rat_callback);
    Semaphore_pend (semHandle、BIOS_wait_forever);
    
    /*在范围上显示延迟*/
    PIN_setOutputValue (ledPinHandle、Board_LED1、1);//上的/* LED
    CPUdelay ((uint32_t)(12000*1));/* 1ms */
    PIN_setOutputValue (ledPinHandle、Board_LED1、0);/* LED 熄灭*/
    }
    。
    。
    。
    
    
    void rat_callback (rf_handle h、rf_CmdHandle ch、rf_EventMask e)
    {
    Semaphore_post (semHandle);
    } 

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

    您如何测量周期? 您使用什么作为时基来测量198ms?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在切换 LED、并在其上使用示波器来测量198ms。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我同意您的怀疑、SmartRF 板上的时钟不是以48MHz 运行、而是快1%。 遗憾的是、我不知道您可以使用示波器监控哪个引脚来验证时钟频率。

    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Alan、我现在使用的是 RAT 计时器、因为它看起来运行良好、所以我决定不说服这个计时器问题。 不过、感谢您的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Alan。 我和一位同事讨论了这一点、我们认为它是由 RC 振荡器运行的、他似乎认为1%的精度对于 RC 振荡器来说很好、因此这也许是预期的那样。 我正在使用使用 RAT 计时器、该计时器使用晶体振荡器、因为它似乎运行良好、所以我决定不说服这个计时器问题。 感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对我来说是合理的。 我们是否应该宣布这是正确的答案? :-)

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