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.

CC2640: 初始化过程种,在Watchdog_Open()中死机

Part Number: CC2640

CC2640WatchDog初始化中,在Watchdog_Open()中死机。原代码及死机位置如下。

Watchdog_Handle handle = NULL;
Watchdog_Params params;
uint32_t tickValue;

void WatchDog_Init()
{
Watchdog_Params_init(&params);
params.callbackFxn = watchdogCallback;
params.resetMode = Watchdog_RESET_OFF;
handle = Watchdog_open(0, &params);
// set timeout period to 100 ms
tickValue = Watchdog_convertMsToTicks(handle, 1000);
Watchdog_setReload(handle, tickValue);
}


void watchdogCallback(UArg handle)
{
// User-defined code here
Watchdog_clear((Watchdog_Handle)handle);
}

  • 您好,

    在初始化参数之前,您似乎缺少对Watchdog_init()函数的调用。

    如文档中所述,在调用任何其他 Watchdog API 之前, 必须通过调用Watchdog_init()来初始化 Watchdog 驱动程序。

    这是如何设置看门狗的示例:

    Watchdog_Params params;
    Watchdog_Handle watchdog;
    Watchdog_init();
    Watchdog_Params_init(&params);
    params.resetMode = Watchdog_RESET_ON;
    params.callbackFxn = UserCallbackFxn;
    watchdog = Watchdog_open(Board_WATCHDOG, &params);
    if (watchdog == NULL) {
        `Error opening watchdog`
    }



  • 谢谢,Board_WATCHDOG的原定义处在哪?我这边总是编译不过去,提示未定义。可能是缺少某个文件。

  • 这个帖子我看过,也用过,和你前面提供的代码基本一致的。一样出现编译提示Board_WATCHDOG未定义。包括下面这个帖子:https://blog.csdn.net/zzfenglin/article/details/52253536?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170443517316800197097937%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170443517316800197097937&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-52253536-null-null.142^v99^pc_search_result_base1&utm_term=CC2640%20%E7%9C%8B%E9%97%A8%E7%8B%97&spm=1018.2226.3001.4187

    其评论区也有很多和我一样遇到类似问题的,但是楼主没有回答。

    另外,我看到watchdog函数里面的index>=Watchdog_count.。而Watchdog_count 的定义是-。还有Watchdog_config[index],是不是也要定义?有没有定义好的模板?

  • 你可以在CCS里面尝试一下watchdog例程

    你检查一下在board.c中是否有CONFIG_WATCHDOG的宏定义

    然后在index进行改写编号

     IAR环境和CCS不甚相同 你需要看看你的IAR