Part Number:CC2640
CC2640WatchDog初始化中,在Watchdog_Open()中死机。原代码及死机位置如下。
Watchdog_Handle handle = NULL;
Watchdog_Params params;
uint32_t tickValue;
void WatchDog_Init()
{
Watchdog_Params_init(¶ms);
params.callbackFxn = watchdogCallback;
params.resetMode = Watchdog_RESET_OFF;
handle = Watchdog_open(0, ¶ms);
// 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);
}
Galaxy Yue:
您好,
在初始化参数之前,您似乎缺少对Watchdog_init()函数的调用。
如文档中所述,在调用任何其他 Watchdog API 之前, 必须通过调用Watchdog_init()来初始化 Watchdog 驱动程序。
这是如何设置看门狗的示例:
Watchdog_Params params; Watchdog_Handle watchdog; Watchdog_init(); Watchdog_Params_init(¶ms); params.resetMode = Watchdog_RESET_ON; params.callbackFxn = UserCallbackFxn; watchdog = Watchdog_open(Board_WATCHDOG, ¶ms); if (watchdog == NULL) {`Error opening watchdog` }
,
Li Allen:
谢谢,Board_WATCHDOG的原定义处在哪?我这边总是编译不过去,提示未定义。可能是缺少某个文件。
,
Galaxy Yue:
https://blog.csdn.net/qq_36347513/article/details/88695341
您好,您可以参考下这篇帖子
,
Li Allen:
这个帖子我看过,也用过,和你前面提供的代码基本一致的。一样出现编译提示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],是不是也要定义?有没有定义好的模板?
,
Galaxy Yue:
你可以在CCS里面尝试一下watchdog例程
你检查一下在board.c中是否有CONFIG_WATCHDOG的宏定义
然后在index进行改写编号
IAR环境和CCS不甚相同 你需要看看你的IAR