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:如何更改 WDT 时钟源

Guru**** 2378650 points
Other Parts Discussed in Thread: SMARTRF06EBK, CC1310
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/737924/rtos-cc1310-how-to-change-wdt-clock-source

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

工具/软件:TI-RTOS

你(们)好

使用 JTAG 调试器 SmartRF06EBK 运行 CC1310没有问题。

WDT 时钟应为1.50MHz。

但如果没有 JTAG 调试器、WDT 时钟大约为2KHz。

如何将 WDT 时钟更改为1.50MHz。

此致、

Yama

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

    您的器件是否使用低功耗模式? 看门狗计时器仅在器件处于活动状态时运行;进入待机模式时、看门狗时钟将停止计数。 这可以被解释为看门狗时钟"较慢"、而实际上、它只是在待机时停止计数。

    看门狗计时器时钟源(或频率)不应随您是否使用调试器而改变、但使用调试器可以使您的器件脱离真正的待机状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、M-W
    我不使用低功耗模式。
    我编写下面的程序。 我只使用一个任务。

    _________________________________________
    Watchdog_handle;
    易失性 boolwatchdogExpired;

    void watchdogCallback (uintptr_t 未使用)

    Watchdog_clear (watchdogHandle);/*清除看门狗中断标志*
    WatchdogExpired = true;


    int main (空)

    Board_initGeneral();
    Board_initUART();
    Board_initWatchdog();
    Board_initGPIO();
    Board_initSPI();
    dbgCnsl_open();

    Watchdog_Params 参数;
    Watchdog_init();
    Watchdog_Params_init (params);
    params.callbackFxn =(Watchdog_Callback) watchdogCallback;/*!<回调指针。 并非所有目标都支持。 *
    params.resetMode = Watchdog_reset_on;/*!<启用复位的模式。 并非所有目标都支持。 *
    params.debugStallMode = Watchdog_debug_stal_on;/*!<在断点处停止 WDT 的模式。 并非所有目标都支持。 *
    WatchdogHandle = Watchdog_open (Board_WATCHDOG0、&params);

    ERROR_Block EB;
    ERROR_INIT (&EB);

    Task_Params_init (&u_task_params);
    U_task_params.STACKSIZE= MAIN_TASK_STACK_SIZE;
    U_task_params.priority= main_task_priority;
    U_task_params.stack=&u_task_stack;
    Task_construct(&u_task、MainCtrl_task、&u_task_params、&eb);

    BIOS_start();
    返回0;


    无效 MainCTRL_task (UArg0、UArgarg1)

    dbgCnsl_puts (PfStdout、"Main St\n");

    for (int i=0;i<(40*60);+I)

    dbgCnsl_printf (PfStdout、"%d\n"、WatchdogValueGet ());
    Task_sleep (100000);// 1秒



    ----------------------------------------


    SmartRF06EBK 的结果是
    _________________________________________
    主街
    89999660
    88493518
    86987527.
    85481341
    83975356

    ----------------------------------------
    89999660 - 88493518 = 1506142:1.5MHz


    没有 SmartRF06EBK 的情况下的结果是
    _________________________________________
    主街
    89999659
    89862683
    89861906
    89861129
    89860351

    ----------------------------------------
    89999659 - 89862683 = 136976
    89862683 - 89861906 = 777
    89861906 - 89861129 = 777
    此时间的结果为777Hz 至136976Hz。

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

    由于您没有从我看到的内容中设置任何限制、我希望您的器件在您的"Task_sleep (100000)"调用期间进入待机状态。  

    您可以测试设置功率限制以使器件脱离待机状态、并查看它是否起作用:

    #include

    #include

    power_setConstraint (PowerCC26XX_disallow_standby);

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

    当我添加"Power_setConstraint (PowerCC26XX_SB_disallow);"时、WDT 时钟达到1.5MHz。

    因此、我的程序似乎是低功耗模式。

    谢谢你。