我遇到一个问题,使用simplelink_cc13x0_sdk_2_20_00_38,看门狗设置为8S,并且直接在回调里调用复位API。只创建了一个任务,并且在这个任务里分别测试了两段代码,但是有不同的结果。
一:
void watchdogCallback(uintptr_t unused)
{
debug_uart_send_u8(0xcc);
SysCtrlSystemReset();
}
void UserFxn(UArg arg0, UArg arg1)
{
Watchdog_Params params;
Watchdog_init();
/* Create and enable a Watchdog with resets disabled */
Watchdog_Params_init(¶ms);
params.callbackFxn = (Watchdog_Callback)watchdogCallback;
params.resetMode = Watchdog_RESET_ON;
WatchdogHandle = Watchdog_open(Board_WATCHDOG0, ¶ms);
while(1)
{
Task_sleep(1000000);//10s
}
}
通过串口打印测试结果为8S的时候会进看门狗回调并复位。
二:上述看门狗配置不变,创建一个定时器,改用信号量阻塞来实现休眠。
while(1)
{
ClockP_setTimeout(clockp_handle1,1000000);//单位:10us
// 启动定时器
ClockP_start(clockp_handle1);
// 挂起等待定时器时间到 休眠
Semaphore_pend(Semaphore_handle(&SemStruct), BIOS_WAIT_FOREVER);//任务阻塞
}
二的测试结果是不会进看门狗回调。
请问这是为什么。