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.

Solution for CC3200 WatchDog Timer with FreeRTOS issue

Other Parts Discussed in Thread: CC3200

Hello everyone!

I beleive, that this post will be usefull for people who develops application on CC3200 with FreeRTOS.

Many people faced with incorrect WatchDog Timer work with FreeRTOS, for more info click links below:

I find a solution. You need manually invoke FaultISR handler in WatchDog ISR.

For example (Solution for IAR):

// WDT initialization
WDT_IF_Init(wdt_isr,80000000 * 2);



typedef  void (*pFunction)(void);
pFunction FaultIsrPtr;

//WDT ISR
void wdt_isr()
{

    WatchdogIntClear(WDT_BASE);  
    // Get the address of FaultISRHandler
    FaultIsrPtr = (pFunction)(__vector_table.ulPtr + 2);
    // Manualy invoke it
    FaultIsrPtr();
}

Moreover, to invoke FaultISR() you can simply read out of range array value:

void wdt_isr()
{
    char arr[2];

  // Here NMI controller generate HardFault and invoke FaultISR()
    arr[15] = 0;
}

Best regards,

Konstantin