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