Цитата(Altemir @ Nov 1 2011, 09:26)

Добавлю свои пять копеек: посмотрите процедуру NVIC_SystemReset()

Раньше типа где то видел, что существует баг с NVIC_SystemReset() в ядре у NXP.
Но в LPC17 из первых же партий попробовал заюзать в загрузчике - работает...
И WDT тоже...
Вот куски:
#define WDT_FEED_VALUE 0x003FFFFF/32
void WDTInit( void )
{
WDT->WDTC = WDT_FEED_VALUE; /* once WDEN is set, the WDT will start after feeding */
WDT->WDMOD = WDEN|WDRESET;
WDT->WDFEED = 0xAA; /* Feeding sequence */
WDT->WDFEED = 0x55;
}
/////////////////////////////
SystemInit(); /* initialize clocks */
I2SInit();
if (tst_disk()) test_upgrade();
if (CheckSumm()!=0)
{
CDC_activate();
Host_DelayMS(1000);
NVIC_SystemReset();
}
WDTInit(); // все ОК - пересбросим сторожевым таймером
while(1);
////////////////////////////